כברירת מחדל, Looker משתמש במסד נתונים של HyperSQL בזיכרון כדי לאחסן את ההגדרות, המשתמשים ונתונים אחרים. במופע עמוס, מסד הנתונים הזה יכול לגדול עד לגודל של גיגה-בייט, מה שעלול להוביל לבעיות בביצועים, לעומס על הזיכרון של Java ולזמני הפעלה ארוכים.
במופע באירוח בצד הלקוח, מומלץ להחליף את מסד הנתונים של HyperSQL בבק-אנד מלא של מסד נתונים של MySQL, כשהגודל של מסד הנתונים הפנימי של HyperSQL עולה על 600MB. כדי לבדוק את הגודל של מסד הנתונים של HyperSQL, צריך לעיין בגודל של הקובץ looker.script:
cd looker
cd .db
ls -lah
אם קובץ ה-looker.script גדול מ-600MB, צריך לפעול לפי ההוראות הבאות כדי להעביר אותו למסד נתונים חיצוני של MySQL.
הקצאת מופע ומשתמש של MySQL
אתם יכולים להקצות מופע של MySQL 8.4.X (מומלץ) או של MySQL 8.0.X לשימוש כקצה העורפי. אין תמיכה בגרסאות של MySQL לפני 8.0.
Looker 26.6 ואילך תומך ב-MySQL 8.4.X עבור מסד הנתונים של הבק-אנד של Looker. במכונות של אירוח בצד הלקוח שמשתמשות ב-MySQL 8.0.X למסד הנתונים העורפי של Looker, מומלץ לעדכן ל-MySQL 8.4.X ברגע שמעדכנים את מכונת Looker לגרסה 26.6 ואילך.
ב-AWS RDS, מכונה מסוג db.m5.large כנראה תספיק כקצה עורפי למכונה יחידה של Looker. למרות שהשימוש בפועל במסד הנתונים יהיה כנראה בטווח של 5-10GB, מומלץ להקצות 100-150GB של אחסון SSD, כי ה-IOPS המוקצה מבוסס על כמות האחסון המבוקשת.
MySQL 8.4.X
החל מ-Looker 26.6, Looker תומך בשימוש ב-MySQL 8.4.X כמסד הנתונים הפנימי. ב-MySQL 8.4.X, אפשר להשתמש באחד מתוספי האימות הבאים של MySQL, כמו שמתואר בקטעים הבאים:
שימוש ב-caching_sha2_password
ב-MySQL 8.4.X, תוסף האימות שמוגדר כברירת מחדל הוא caching_sha2_password. יש שתי דרכים להשתמש בפלאגין caching_sha2_password ב-Looker:
- כשמשתמשים בחיבור SSL למסד הנתונים הפנימי: לא צריך מפתח ציבורי RSA. Looker מתחבר למסד הנתונים באופן מאובטח באמצעות פרטי הכניסה של המשתמש שסופקו. כדי להגדיר חיבור SSL למסד הנתונים, אפשר לעיין בקטע יצירת קובץ פרטי כניסה למסד נתונים בדף הזה.
- אם לא מתחברים עם SSL מופעל: כברירת מחדל, Looker משתמש באפשרות
--get-server-public-keyכדי להתחבר למסד הנתונים הפנימי כשמשתמשים בתוסףcaching_sha2_passwordבחשבון המשתמש שמסופק ל-Looker. אם SSL לא מופעל, צריך לוודא שסביבת הרשת מאובטחת.
כדי להשתמש בפלאגין caching_sha2_password בכל אחת מהשיטות, צריך להגדיר את המשתמש באמצעות הפקודה הבאה:
CREATE USER 'DB_username' IDENTIFIED WITH caching_sha2_password BY 'password';
מחליפים את מה שכתוב בשדות הבאים:
- DB_username: שם משתמש
- password: סיסמה ייחודית ומאובטחת
שימוש ב-mysql_native_password
Looker פועל עם התוסף mysql_native_password כדי לבצע אימות למסדי נתונים של MySQL באמצעות מנהל ההתקן של JDBC. כדי ש-MySQL 8.4.X יעבוד עם הפלאגין mysql_native_password, צריך לבצע את השלבים הנוספים הבאים:
מגדירים את מסד הנתונים של MySQL כדי להפעיל את התוסף
mysql_native_password. אפשר לעשות זאת בכמה דרכים, בהתאם לאופן הפריסה של מסד הנתונים של MySQL ולסוג הגישה שיש לכם להגדרה:- מפעילים את שרת MySQL באמצעות
--mysql-native-password=ON. מגדירים את המאפיין בקובץ התצורה
my.cnf:[mysqld] mysql_native_password=ONאם מופעלת אירוח של מופע MySQL ב- Google Cloud, ב-AWS או ב-Azure, התוסף
mysql_native_passwordאמור להיות מופעל באופן אוטומטי. הוראות מפורטות מופיעות במאמרי העזרה של הספק.
- מפעילים את שרת MySQL באמצעות
יוצרים את המשתמש:
CREATE USER 'DB_username' IDENTIFIED WITH mysql_native_password BY 'password';מחליפים את מה שכתוב בשדות הבאים:
- DB_username: שם משתמש
- password: סיסמה ייחודית ומאובטחת
MySQL 8.0.X
ב-MySQL מגרסה 8.0.X, תוסף האימות שמוגדר כברירת מחדל הוא caching_sha2_password. Looker משתמש בתוסף mysql_native_password כדי לנסות לבצע אימות למסדי נתונים של MySQL דרך מנהל ההתקן של JDBC. כדי ש-MySQL 8.0.X יפעל בצורה תקינה, צריך לבצע את השלבים הנוספים הבאים:
מגדירים את מסד הנתונים של MySQL לשימוש בתוסף
mysql_native_password. אפשר לעשות זאת בכמה דרכים, והן תלויות באופן הפריסה של מסד הנתונים של MySQL 8 ובסוג הגישה שיש לכם להגדרה:מתחילים את התהליך עם הדגל
--default-auth=mysql_native_passwordמגדירים את המאפיין בקובץ התצורה
my.cnf:[mysqld] default-authentication-plugin=mysql_native_passwordאם מופע מסד הנתונים שלכם מתארח דרך AWS RDS, צריך להגדיר את הפרמטר
default_authentication_pluginדרך קבוצת פרמטרים של RDS שמוחלת על מופע מסד הנתונים הזה.
יוצרים את המשתמש:
CREATE USER 'DB_username' IDENTIFIED WITH mysql_native_password BY 'password';מחליפים את מה שכתוב בשדות הבאים:
- DB_username: שם משתמש
- password: סיסמה ייחודית ומאובטחת
כוונון של MySQL
משנים את ההגדרות הבאות במופע MySQL.
הגדלת הגודל המקסימלי של חבילות
הגודל של max_allowed_packet שמוגדר כברירת מחדל ב-MySQL קטן מדי להעברת מסד נתונים, והוא עלול לגרום להעברה להיכשל עם השגיאה PACKET_TOO_LARGE. מגדירים את max_allowed_packet לערך המקסימלי המותר של 1073741824:
max_allowed_packet = 1073741824
הגדרת אלגוריתם של טבלה זמנית
ב-MySQL 8, הטבלאות הזמניות הפנימיות מטופלות באופן שונה מאשר בגרסאות קודמות. הגדרות ברירת המחדל עלולות לגרום לבעיות בהרצת חלק מהשאילתות שנדרשות להרצת Looker, במיוחד במקרים של מופעי Looker עם הרבה משתמשים ופרויקטים. השיטה המומלצת היא להגדיר את הגדרת השרת הגלובלית הבאה:
internal_tmp_mem_storage_engine = MEMORY
הגדרת מערכות תווים
מגדירים את פרמטרי ברירת המחדל הבאים כדי להשתמש ב-UTF8mb4, שתומך במערכות תווים של UTF8. אפשר לעיין במאמר ב-MySQL, לעולם אל תשתמשו ב-utf8. מומלץ להשתמש ב-utf8mb4, ולא ב-UTF8, עם MySQL.
character_set_client = utf8mb4
character_set_results = utf8mb4
character_set_connection = utf8mb4
character_set_database = utf8mb4
character_set_server = utf8mb4
collation_connection = utf8mb4_general_ci
collation_server = utf8mb4_general_ci
במופעים של Amazon RDS, כדי להחיל את ההגדרה הזו צריך ליצור או לשנות קבוצת פרמטרים ולערוך את ההגדרות המתאימות. מומלץ להעתיק את קבוצת הפרמטרים הנוכחית ולבצע את השינויים בעותק, במיוחד אם אתם משתפים קבוצות פרמטרים בכמה מופעי RDS. אחרי ששומרים את קבוצת הפרמטרים, מחילים אותה על מופע RDS. יכול להיות שתידרש הפעלה מחדש.
הגדרת סכימת העתקים
Looker מסתמך על פונקציונליות שמחייבת binlog מסוג mixed או row. אם אתם מארחים מכונת MySQL משלכם, צריך להגדיר את binlog_format ל-mixed או ל-row באמצעות אחת מהפקודות הבאות:
SET GLOBAL binlog_format = 'MIXED';
או
SET GLOBAL binlog_format = 'ROW';
יצירה של מסד נתונים והענקת הרשאות למשתמש
יוצרים מסד נתונים במכונת מסד הנתונים:
create database DB_name default character set DB_charset default collate DB_collation;
לאחר מכן, מעניקים הרשאות למשתמש שיצרתם כשהקציתם את מופע MySQL והמשתמש:
grant all on DB_name.* to 'DB_username'@'%';
grant all on looker_tmp.* to 'DB_username'@'%';
מחליפים את מה שכתוב בשדות הבאים:
- DB_name: שם מסד הנתונים
- DB_charset: ערכת התווים שתואמת להגדרות של קבוצת הפרמטרים של מופע RDS (לתמיכה מלאה ב-UTF8, מומלץ להשתמש ב-
utf8mb4) - DB_collation: אוסף הכללים שתואמים להגדרות של קבוצת הפרמטרים של מופע RDS (לתמיכה מלאה ב-UTF8, מומלץ להשתמש ב-
utf8mb4_general_ci) - DB_username: שם משתמש
מסד הנתונים looker_tmp בשורה האחרונה לא חייב להתקיים בפועל, אבל נדרש המשפט grant לצורך דיווח פנימי.
יצירת קובץ של פרטי כניסה למסד נתונים
מערכת Looker צריכה לדעת עם איזה מסד נתונים של MySQL היא צריכה לתקשר ואיזה פרטי כניסה עליה להזין. בספרייה של Looker, יוצרים קובץ בשם looker-db.yml עם התוכן הבא, ומחליפים את DB_hostname, DB_username, DB_password ו-DB_name בערכים של מסד הנתונים שלכם:
dialect: mysql_8
host: DB_hostname
username: DB_username
password: DB_password
database: DB_name
port: 3306
אם מסד הנתונים שלכם ב-MySQL דורש חיבור SSL, מוסיפים את השורה הבאה ל-looker-db.yml:
ssl: true
אם רוצים להפעיל גם אימות של אישור ה-SSL, מוסיפים את השורה הבאה ל-looker-db.yml:
verify_ssl: true
אפשר גם לציין פרמטרים נוספים של JDBC שנתמכים על ידי MariaDB JDBC Driver על ידי הוספת jdbc_additional_params. לדוגמה, אם אתם צריכים להשתמש בקובץ ספציפי של Trust Store, אתם יכולים להוסיף את הפרמטר הבא למחרוזת החיבור של MySQL JDBC:
jdbc_additional_params: trustStore=/path/to/my/truststore.jks&keyStore=/path/to/my/keystore.jks
בהתקנות באירוח בצד הלקוח, אפשר לציין את המספר המקסימלי של חיבורים ש-Looker יכול ליצור עם מסד הנתונים שלכם על ידי הוספת max_connections. לדוגמה, כדי להגביל את מספר החיבורים בו-זמנית למסד הנתונים ל-10, מוסיפים את השורה הבאה:
max_connections: 10
במסגרת תוכנית ההצפנה של Looker, כל הנתונים הרגישים במסד הנתונים מוצפנים במנוחה. גם אם מישהו ישיג גישה לפרטי הכניסה של מסד הנתונים בטקסט לא מוצפן ויגש למסד הנתונים, Looker מצפין או מבצע גיבוב של נתונים רגישים לפני האחסון. זה כולל רכיבים כמו סיסמאות, פרטי כניסה למסד נתונים של ניתוח נתונים ומטמון של שאילתות. עם זאת, אם אתם לא רוצים לאחסן את הסיסמה בטקסט לא מוצפן עבור ההגדרה הזו בקובץ looker-db.yml בדיסק, אתם יכולים להגדיר את משתנה הסביבה LOOKER_DB כך שיכיל רשימה של מפתחות וערכים לכל שורה בקובץ looker-db.yml. לדוגמה:
export LOOKER_DB="dialect=mysql_8&host=localhost&username=root&password=&database=looker&port=3306"
גיבוי של הספרייה .db
מגבים את הספרייה .db, שמכילה את הקבצים שנדרשים ליצירת מסד הנתונים של HyperSQL בזיכרון, למקרה שיהיה צורך לשחזר את HyperSQL:
cp -r .db .db-backup
tar -zcvf db-backup.tar.gz ./.db-backup
העברת מסד הנתונים
העברת מסד הנתונים ל-MySQL יכולה להימשך שעות במופע בינוני או גדול, במיוחד אם מסד הנתונים של HyperSQL הוא בנפח של 1GB או יותר. מומלץ לשדרג באופן זמני את מופע EC2 ל-m5.2xlarge (עם 32GB RAM כדי לאפשר את הערימה של 26GB שצוינה בשלבים) במהלך ההעברה, וכך לקצר את הזמן הנדרש לכ-10 דקות.
במארח Looker:
cd looker ./looker stop vi lookerבתסריט לטעינה בזמן ההפעלה של Looker, יוצרים שורה שנייה חדשה בקובץ:
exitמפסיקים את המכונה במסוף AWS. אחרי שהיא מפסיקה, משנים את הגודל של מופע EC2 ל-
m5.2xlarge. לאחר מכן מפעילים מחדש את המופע.מתחברים למארח באמצעות SSH בתור משתמש Looker. קודם מוודאים ש-Java לא פועלת, ואז מריצים את הפקודה:
cd looker java -Xms26000m -Xmx26000m -jar looker.jar migrate_internal_data looker-db.ymlכשמריצים את השלב
migrate_internal_data, יכול להיות שהרכיבlibcryptלא יימצא ויוצג דוח קריסות, שמתחיל במילים הבאות:NotImplementedError: getppid unsupported or native support failed to load ppid at org/jruby/RubyProcess.java:752 ppid at org/jruby/RubyProcess.java:749אם זה קורה, צריך להגדיר את
LD_LIBRARY_PATHבאופן ידני לפני שמריצים את פקודת Java:export LD_LIBRARY_PATH=$HOME/looker/.tmp/:$LD_LIBRARY_PATHאחרי שהפעולה הזו תושלם בהצלחה, מפסיקים את המופע במסוף AWS.
עכשיו אפשר לשחזר את המופע לגודל המקורי שלו.
מפעילים מחדש את המופע.
הפעלת Looker
עורכים את סקריפט ההפעלה של Looker ומוחקים את השורה
exitשהוספתם קודם.מוודאים שלא מוגדרים ארגומנטים ב-
LOOKERARGSבסקריפט לטעינה בזמן ההפעלה. במקום זאת, צריך להעביר את כל הארגומנטים לקובץlookerstart.cfgכדי שהם לא יוחלפו על ידי גרסאות חדשות של סקריפט לטעינה בזמן ההפעלה. שומרים את הסקריפט לטעינה בזמן ההפעלה ויוצאים.עריכה של
lookerstart.cfg. הוא אמור להיראות כך:LOOKERARGS="-d looker-db.yml"אם היו ארגומנטים אחרים בסקריפט לטעינה בזמן ההפעלה של Looker, מוסיפים אותם לקובץ
lookerstart.cfg.מעבירים לארכיון את ספריית
.db, אם היא עדיין לא בארכיון.mv .db .db-backup tar -zcvf db-backup.tar.gz ./.db-backup rm -rf ./.db-backup/מפעילים את Looker:
./looker start
אימות השימוש במסד הנתונים החדש ב-Looker
אם Looker משתמש בהצלחה ב-MySQL בקצה העורפי, אמורים להופיע חיבורים לרשת בין מכונת Looker לבין מכונת מסד הנתונים החדשה. כדי לבדוק את זה, מריצים את הפקודה הבאה במופע Looker:
netstat -na | grep 3306
אמורים להופיע כמה חיבורים למופע של מסד הנתונים. בדוגמה הבאה של פלט מוצג מופע של מסד נתונים בכתובת ה-IP 10.0.3.155:
looker@instance1:~$ netstat -na | grep 3306
tcp6 0 0 10.0.5.131:56583 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56506 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56582 10.0.3.155:3306 ESTABLISHED
tcp6 0 0 10.0.5.131:56508 10.0.3.155:3306 ESTABLISHED
גיבוי של Looker
אחרי שתעברו ל-MySQL backend, הגיבויים האוטומטיים של Looker ב-S3 לא יפעלו יותר. מומלץ לבצע גיבויים של מסד הנתונים של MySQL לפחות מדי לילה, וגם גיבויים של מערכת הקבצים של ספריית העבודה של Looker מדי לילה. יכול להיות שהספרייה looker/log/ לא נכללת בגיבויים של מערכת הקבצים. מידע נוסף זמין בדף יצירת גיבויים.