בדף הזה מוסבר איך לשדרג את הגרסה הראשית של מסד הנתונים על ידי שדרוג המכונה של Cloud SQL במקום, ולא על ידי העברת נתונים.
מבוא
ספקי תוכנות מסדי נתונים מפרסמים מעת לעת גרסאות חדשות וחשובות שכוללות תכונות חדשות, שיפורים בביצועים ושיפורים באבטחה. Cloud SQL מקבל גרסאות חדשות אחרי שהן מתפרסמות. אחרי ש-Cloud SQL יציע תמיכה בגרסה ראשית חדשה, תוכלו לשדרג את המכונות כדי לשמור על עדכניות מסד הנתונים.
אפשר לשדרג את גרסת מסד הנתונים של מופע במקום או על ידי העברת נתונים. שדרוגים במקום הם דרך פשוטה יותר לשדרוג הגרסה הראשית של המופע. אין צורך להעביר נתונים או לשנות את מחרוזות החיבור של האפליקציה. בשדרוגים במקום, אפשר לשמור את השם, כתובת ה-IP והגדרות אחרות של המופע הנוכחי אחרי השדרוג. שדרוגים במקום לא מחייבים להעביר קובצי נתונים, והם יכולים להסתיים מהר יותר. במקרים מסוימים, זמן ההשבתה קצר יותר ממה שנדרש להעברת הנתונים.
ב-MySQL 8.0.15 ובגרסאות קודמות, פעולת השדרוג במקום של MySQL משתמשת בכליmysql_upgrade.
ב-MySQL 8.0.16 ואילך, תהליך השדרוג במקום של MySQL מנוהל על ידי התהליך MySQL server.
מידע נוסף על פעולת השדרוג במקום זמין במאמר בנושא מה משודרג בתהליך השדרוג של MySQL.
תכנון שדרוג של גרסה ראשית
- מוודאים שיש לכם את התפקיד הנדרש כדי לבצע שדרוג של גרסה ראשית: בעלים של Cloud SQL או אדמין של Cloud SQL.
בוחרים גרסה ראשית של היעד.
gcloud
במאמר התקנת ה-CLI של gcloud מוסבר איך להתקין את ה-CLI של gcloud ולהתחיל להשתמש בו. מידע על הפעלת Cloud Shell זמין במאמר בנושא שימוש ב-Cloud Shell.
כדי לבדוק את גרסאות מסד הנתונים שאפשר לטרגט לשדרוג במקום במופע, פועלים לפי השלבים הבאים:
- מריצים את הפקודה הבאה.
- בפלט של הפקודה,
מאתרים את הקטע שמסומן בתווית
upgradableDatabaseVersions. - בכל קטע משנה מוחזרת גרסה של מסד נתונים שזמינה לשדרוג. בכל קטע משנה, בודקים את השדות הבאים.
-
majorVersion: הגרסה הראשית שאפשר לטרגט לשדרוג במקום. -
name: מחרוזת גרסת מסד הנתונים שכוללת את הגרסה הראשית. ב-Cloud SQL ל-MySQL, השדה הזה כולל גם את הגרסה המשנית של מסד הנתונים. -
displayName: השם המוצג של גרסת מסד הנתונים.
gcloud sql instances describe INSTANCE_NAME
מחליפים את INSTANCE_NAME בשם המכונה.
REST v1
כדי לבדוק אילו גרסאות של מסד נתונים יעד זמינות לשדרוג במקום של גרסה ראשית, משתמשים בשיטה
instances.getשל Cloud SQL Admin API.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- INSTANCE_NAME: שם המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
upgradableDatabaseVersions: { major_version: "MYSQL_8_0" name: "MYSQL_8_0_36" display_name: "MySQL 8.0.36" }REST v1beta4
כדי לבדוק אילו גרסאות של מסד נתונים יעד זמינות לשדרוג במקום של גרסה ראשית של מופע, משתמשים בשיטה
instances.getשל Cloud SQL Admin API.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- INSTANCE_NAME: שם המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
upgradableDatabaseVersions: { major_version: "MYSQL_8_0" name: "MYSQL_8_0_36" display_name: "MySQL 8.0.36" }רשימה מלאה של גרסאות מסד הנתונים שנתמכות ב-Cloud SQL זמינה במאמר גרסאות מסד נתונים ומדיניות גרסאות.
כדאי לבדוק את התכונות שמוצעות בכל גרסה ראשית של מסד הנתונים ולטפל בחוסר התאמה.
בגרסאות חדשות יש שינויים שלא תואמים לגרסאות קודמות, ולכן יכול להיות שתצטרכו לשנות את קוד האפליקציה, את הסכימה או את הגדרות מסד הנתונים. לפני שמשדרגים את מופע מסד הנתונים, צריך לעיין בהערות לגבי הגרסה של גרסת היעד הראשית כדי לזהות את חוסר התאימות שצריך לטפל בו.
אחרי שדרוג לגרסה מאוחרת יותר, ערך ברירת המחדל של חלק ממשתני המערכת עשוי להשתנות. לדוגמה, ערך ברירת המחדל של
character_set_serverב-MySQL 5.6 וב-MySQL 5.7 הואutf8. כשמשדרגים ל-MySQL 8.0, ערך ברירת המחדל שלcharacter_set_serverמשתנה ל-utf8mb4. כדי לחזור לגרסהutf8, צריך לשנות באופן ידני את ערך הדגל של מסד הנתונים לערך הקודם שלו. מידע נוסף זמין במאמר בנושא הגדרת דגלים של מסד נתונים. רוב השינויים בערכי ברירת המחדל מתבצעים על ידי קהילת MySQL (מידע נוסף זמין במאמר שדרוג ברירות המחדל של השרת).מבצעים את הבדיקה המקדימה לשדרוגים.
בודקים את השדרוג באמצעות הרצה יבשה.
לפני שמשדרגים את מסד הנתונים של הייצור, מומלץ לבצע הרצה יבשה של תהליך השדרוג מקצה לקצה בסביבת בדיקה. אתם יכולים לשכפל את המופע כדי ליצור עותק זהה של הנתונים שבעזרתו תוכלו לבדוק את תהליך השדרוג.
בנוסף לווידוא שהשדרוג הושלם בהצלחה, מומלץ להריץ בדיקות כדי לוודא שהאפליקציה מתנהגת כמצופה במסד הנתונים המשודרג.
מחליטים מתי לשדרג.
השדרוג מחייב שהמופע לא יהיה זמין למשך זמן מסוים. כדאי לתכנן את השדרוג לתקופה שבה הפעילות במסד הנתונים נמוכה.
הכנה לשדרוג גרסה ראשית
לפני שמשדרגים, צריך לבצע את הפעולות הבאות:
- אם אתם משדרגים מ-MySQL 8.0 ל-MySQL 8.4, אתם צריכים לעדכן את תוסף האימות של חשבונות המשתמשים הקיימים שלכם כדי להשתמש בתוסף האימות
caching_sha2_passwordבמקום בתוסףmysql_native_passwordשהוצא משימוש. כדי לשנות את חשבונות המשתמשים הקיימים במסד הנתונים כך שישתמשו בתוסף האימותcaching_sha2_password, מריצים את הפקודה הבאה: מחליפים את username ואת user_password בערכים של חשבון המשתמש במסד הנתונים של אימות מובנה שאתם מעדכנים.ALTER USER 'username'@'%' IDENTIFIED WITH caching_sha2_password BY 'user_password';
-
בודקים את נפח האחסון ואת סוג המכונה של המופע.
שדרוגים של גרסאות ראשיות דורשים מקום נוסף בדיסק וזיכרון כדי לאחסן את הטבלאות המשודרגות ומילון נתונים חדש. אם אין מספיק נפח פנוי בדיסק, השדרוג ייכשל והמערכת תחזור לגרסה המקורית. Cloud SQL ממליץ להקצות לפחות 100 KB בזיכרון לכל טבלה.
הגדרות שנדרשות לשימוש ב-MySQL 8.4 ואילך עם שרת ה-proxy ל-Cloud SQL Auth
כשמשתמשים ב-MySQL מגרסה 8.4 ואילך עם Cloud SQL Auth Proxy, צריך להגדיר את הגדרות מסד הנתונים של האפליקציה עם הגדרת MySQL allowPublicKeyRetrieval=true. לפני שמשדרגים את גרסת מסד הנתונים, צריך לשדרג את אפליקציות הלקוח עם ההגדרה הזו.
לדוגמה, אם משתמשים בלקוח mysql, צריך להשתמש בדגל --get-server-public-key:
mysql -u username -p --get-server-public-key
אם אתם משתמשים בשפת התכנות Java, אתם יכולים להשתמש בפקודה הבאה:
config.setJdbcUrl("jdbc:mysql://" + dbHost + ":" + dbPort + "/" + dbName);
config.addDataSourceProperty("allowPublicKeyRetrieval", "true");
הערכת המוכנות לשדרוג של המופע
ב-Cloud SQL אפשר להריץ בדיקה מוקדמת במכונה לפני שדרוג של גרסה ראשית. הבדיקה המקדימה הזו היא פעולה ארוכת טווח (LRO) שבודקת אם המופע שלכם מוכן לשדרוג. הכלי עוזר למצוא בעיות פוטנציאליות כמו חוסר תאימות, בעיות בהגדרות או בעיות בנתונים לפני פעולת השדרוג.
במהלך הבדיקה המקדימה מופעל כלי לבדיקת שדרוג של MySQL Shell כדי לבדוק אם המכונה מוכנה לשדרוג לגרסה הראשית הבאה. אם המופע לא מוכן, כלי השירות יציג רשימה של בעיות שצריך לתקן לפני שמתחילים בשדרוג. הבעיות האלה נובעות מחוסר תאימות ידוע בין שתי הגרסאות העיקריות.Cloud SQL יכול להריץ את תהליך הבדיקה המקדימה במקביל לעומס העבודה שלכם. הפעלת הבדיקה המקדימה לפני ביצוע שדרוג של גרסה ראשית יכולה לעזור למנוע כשל בשדרוג.
כשמריצים את הבדיקה המקדימה, אחת מהאפשרויות הבאות מתרחשת:
- לא נמצאו בעיות: הבדיקה המקדימה הסתיימה בהצלחה ולא נמצאו בעיות.
- נמצאו בעיות: הבדיקה המקדימה הסתיימה בהצלחה, אבל נמצאו שגיאות שימנעו את השדרוג. צריך לפתור את הבעיות לפני השדרוג.
- נמצאו אזהרות: הבדיקה המקדימה הסתיימה בהצלחה ונמצאו אזהרות. קוראים את האזהרות. מומלץ לטפל בכל הבעיות לפני שממשיכים בשדרוג.
בהתאם לתוצאות הבדיקה המקדימה, אפשר להמשיך בשדרוג או לפתור את הבעיות שזוהו לפני השדרוג.
מגבלות
כשמשתמשים בבדיקה המקדימה לשדרוג הגרסה הראשית, חשוב להביא בחשבון את המגבלות הבאות:
- מצב המכונה צריך להיות
RUNNING.
לא יכולות להיות פעולות חסימה בהמתנה במכונה. אם פעולה חוסמת נמצאת בהמתנה, התוצאות של הבדיקה המקדימה הן שגיאה עם ההודעה הבאה:
Operation failed because another operation was already in progress. Try your request after the current operation is complete.הבדיקה המקדימה צריכה להתחבר לכל מסדי הנתונים במופע. אם אין גישה למסד נתונים, הוא נעול או לא מגיב, יכול להיות שהבדיקה המקדימה תיכשל או שיוצגו שגיאות. מומלץ להריץ את הבדיקה המקדימה כשהעומס על מסד הנתונים נמוך.
בדיקת התאימות בודקת את התאימות של השדרוג בין גרסאות ראשיות עוקבות של Cloud SQL ל-MySQL. לדוגמה, אפשר להריץ בדיקה מוקדמת לשדרוג בין MySQL 5.7 ל-MySQL 8.0, לשדרוג בין MySQL 8.0 ל-MySQL 8.4, ואז לשדרוג בין MySQL 8.4 ל-MySQL 9.7.
הכלי לבדיקה מוקדמת לא תומך בבדיקה של שדרוג לגרסה משנית בתוך אותה גרסה ראשית. לדוגמה, אי אפשר לבצע בדיקה מוקדמת לשדרוג מ-MySQL 8.0.31 ל-8.0.45.
הבדיקה המקדימה מוגבלת לשלוש שעות. אם פעולת הבדיקה המקדימה חורגת ממגבלת שלוש השעות, התהליך מגיע לזמן קצוב לתפוגה ומבוטל באופן אוטומטי.
יכול להיות שכלי הבדיקה לשדרוג של MySQL Shell לא יזהה את כל חוסר התאימות במהלך תהליך הבדיקה המקדימה. עדיין יכול להיות שהשדרוג ייכשל. יכול להיות גם שאזהרות שלא טופלו יחסמו שדרוג של גרסה ראשית.
לפני שמתחילים
- מוודאים ש-Cloud SQL Admin API מופעל במופע.
- מוודאים שיש לכם
cloudsql.instances.preCheckMajorVersionUpgradeהרשאת IAM.
ביצוע בדיקה מוקדמת
כדי לבצע בדיקה מקדימה לשדרוג של גרסה ראשית:
gcloud
-
משתמשים בפקודה
gcloud beta sql instances pre-check-major-version-upgradeכדי להריץ את הבדיקה המקדימה:gcloud beta sql instances pre-check-major-version-upgrade INSTANCE_NAME \ --target-database-version=TARGET_DATABASE_VERSION \ --project=PROJECT_ID \ [--async]
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה.
- TARGET_DATABASE_VERSION: הגרסה הראשית שאליה רוצים לשדרג את המכונה. כדי לראות את גרסת מסד הנתונים, אפשר לעיין במאמר בנושא תכנון שדרוג.
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
אופציונלי: משתמשים בדגל
--asyncכדי להריץ את הפקודה באופן אסינכרוני. אם משתמשים בדגל
--asyncכדי להריץ את הפקודהpre-check-major-version-upgradeבאופן אסינכרוני, צריך לבצע את הפעולות הבאות:- מקבלים את שם הפעולה של הבדיקה המקדימה:
משתמשים בפקודה
gcloud sql operations listעם הדגל--instance:gcloud sql operations list --instance=INSTANCE_NAME
מחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה.
-
עוקבים אחרי הסטטוס של הבדיקה המקדימה.
משתמשים בפקודה
gcloud sql operations describe:gcloud sql operations describe OPERATION_NAME
מחליפים את מה שכתוב בשדות הבאים:
- OPERATION_NAME: שם פעולת הבדיקה המקדימה שאוחזר בשלב הקודם.
- מקבלים את שם הפעולה של הבדיקה המקדימה:
- אם לא מריצים את הפקודה
pre-check-major-version-upgradeבאופן אסינכרוני, צריך לחכות עד שהבדיקה המקדימה תושלם כדי לראות את התוצאות.
REST v1beta4
-
מריצים את הבדיקה המקדימה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- TARGET_DATABASE_VERSION: הגרסה הראשית לשדרוג. רשימת גרסאות מסד הנתונים הזמינות מופיעה במאמר בנושא תכנון שדרוג.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/preCheckMajorVersionUpgrade
תוכן בקשת JSON:
{ "preCheckMajorVersionUpgradeContext": { "targetDatabaseVersion": "TARGET_DATABASE_VERSION" } }כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{ "message": "Precheck description of finding", "message_type": "ERROR", "actions_required": [ "Precheck action required to fix the finding" ] } -
מאחזרים את שם פעולת הבדיקה המקדימה.
משתמשים בבקשה
GETעם ה-methodoperations.listאחרי שמחליפים אתPROJECT_IDבמזהה הפרויקט.GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
-
עוקבים אחרי הסטטוס של הבדיקה המקדימה.
משתמשים בבקשת
GETעם השיטהoperations.list:GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operation/OPERATION_NAME
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- operation_name: שם פעולת הבדיקה המקדימה שאוחזר בשלב הקודם.
בדיקת הממצאים של הבדיקה המקדימה
אחרי שהבדיקה המקדימה מסתיימת, המופע מוכן לשדרוג או שיש בו בעיות שצריך לטפל בהן.
מוכן לשדרוג
אם הבדיקה המקדימה מסתיימת בהצלחה ומערך preCheckResponse ריק, זה אומר שלא נמצאו בעיות או אזהרות. המופע שלכם מוכן לשדרוג לגרסה הראשית. כדי להמשיך, צריך לעיין במאמר בנושא ביצוע שדרוג של גרסה ראשית.
לא מוכן לשדרוג
אם הבדיקה המקדימה פעלה בהצלחה ומערך preCheckResponse מכיל בעיות, המופע לא מוכן לשדרוג וצריך לטפל בו. יכול להיות שהבעיות שזוהו יחסמו את השדרוג, ויכול להיות שלא. הבעיות האלה מצוינות בpreCheckResponse עם סוגי ההודעות הבאים:
| סוג | תיאור | חסימת השדרוג? |
|---|---|---|
INFO |
הודעה עם מידע חשוב. | לא |
WARNING |
נמצאה בעיה פוטנציאלית. Cloud SQL ממליץ לבדוק את האזהרה ולטפל בה לפני השדרוג כדי לוודא תאימות מלאה. | כן |
ERROR |
נמצאה בעיה קריטית שמונעת את השדרוג. הבעיות האלה עלולות לגרום לכשל בשדרוג. כדי לשדרג את המופע, צריך לפתור את הבעיות האלה. | כן |
INFO, אתם יכולים לשדרג אותו, אבל יכול להיות שתיתקלו בבעיות אחרי השדרוג. מומלץ לבדוק את פרטי ההודעה ולפתור את הבעיה לפני השדרוג. אם במופע שלכם יש הודעות ERROR או WARNING, אתם צריכים לפתור את הבעיות האלה לפני השדרוג.
כל סוג בעיה כולל את השדות message ו-actions_required. כדאי לעיין בכל בעיה כדי להבין את הסוג שלה ואיך לפתור אותה. מידע נוסף על בעיות נפוצות ופתרונות זמין במאמר שגיאות נפוצות בבדיקה המקדימה לשדרוג גרסה ראשית.
אחרי שפותרים את הבעיות, מריצים מחדש את הבדיקה המקדימה כדי לוודא שהמופע מוכן לשדרוג. אחרי שהבדיקה המקדימה תסתיים ללא שגיאות, תוכלו לשדרג את המופע.
ביטול בדיקה מקדימה לשדרוג הגרסה הראשית
אפשר לבטל פעולת בדיקה מראש של שדרוג גרסה ראשית ב-Cloud SQL ל-MySQL.
לפני שמתחילים
כדי לבטל את הבדיקה המקדימה לשדרוג הגרסה הראשית, צריך את המזהה של פעולת הבדיקה המקדימה. צריך לציין את המזהה הזה בפקודה של gcloud או של API בארכיטקטורת REST כדי שמערכת Cloud SQL תדע איזו פעולה לבטל.
מזהה הפעולה מוחזר בשדה name של התגובה.
אפשר גם למצוא את מזהה הפעולה על ידי ביצוע קריאה של operations.list במכונת Cloud SQL.
ביצוע ביטול
אפשר להשתמש בפקודות gcloud או בפקודות של API בארכיטקטורת REST כדי לבטל פעולת בדיקה מוקדמת.
gcloud
מקבלים את מזהה פעולת הבדיקה המוקדמת.
משתמשים בפקודה
gcloud sql operations listעם הדגל--instance:gcloud sql operations list --instance=INSTANCE_NAMEמחליפים את מה שכתוב בשדות הבאים:
- INSTANCE_NAME: השם של המכונה.
מבטלים את הבדיקה המקדימה.
משתמשים בפקודה
gcloud sql operations cancel:gcloud sql operations cancel OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הקודם.
REST v1beta4
מקבלים את מזהה פעולת הבדיקה המוקדמת.
משתמשים בבקשת GET עם השיטה
operations.listאחרי שמחליפים אתPROJECT_IDבמזהה הפרויקט.GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operationsמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
מבטלים את הבדיקה המקדימה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הקודם.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID/cancel
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
קריאה ל-API בארכיטקטורת REST הזו לא מחזירה תגובה.
בדיקת סטטוס הביטול
אפשר להשתמש בפקודות gcloud או בפקודות של API בארכיטקטורת REST כדי לבדוק את הסטטוס של פעולת בדיקה מוקדמת שבוטלה.
gcloud
בודקים את הסטטוס 'בוטלה'.
משתמשים בפקודה
gcloud sql operations describe:gcloud sql operations describe OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מזהה הפעולה של הבדיקה המקדימה שבוטלה.
REST v1beta4
בודקים את הסטטוס 'בוטלה'.
משתמשים בבקשת GET עם השיטה
operations.list:GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- OPERATION_ID: מזהה הפעולה של הבדיקה המקדימה שבוטלה.
פתרון בעיות שקשורות לביטול
| שגיאה | פתרון בעיות |
|---|---|
|
הודעת שגיאה: |
אתם מנסים לבטל פעולת בדיקה מוקדמת שהושלמה, נכשלה או כבר בוטלה. אם הפעולה פועלת, אפשר לבטל אותה. |
|
הודעת שגיאה: |
השגיאה הזו מתרחשת בדרך כלל כשמעבירים את OPERATION_ID הלא נכון לפקודת הביטול – במיוחד, את המזהה של סוג פעולה שלא תומך בביטול. מוודאים שמשתמשים ב-OPERATION_ID שמשויך לבדיקה המקדימה של שדרוג הגרסה הראשית שרוצים לבטל. |
|
הודעת שגיאה: |
בשלב הזה, אי אפשר לבטל את פעולת הבדיקה המקדימה ב-Cloud SQL. כדאי לנסות שוב בעוד כמה שניות. אם הבעיה נמשכת, אפשר לפנות אל Cloud Customer Care. |
ביצוע שדרוג של הגרסה הראשית
אפשר לשדרג את הגרסה הראשית של מכונת Cloud SQL יחידה, או לשדרג את הגרסה הראשית של מכונה ראשית ולכלול בשדרוג את כל הרפליקות שלה, כולל רפליקות מדורגות ורפליקות חוצות אזורים.
שדרוג הגרסה הראשית של מופע יחיד
כשמפעילים פעולת שדרוג למכונה אחת, Cloud SQL מבצע את הפעולות הבאות:
- בודק את ההגדרה של המופע כדי לוודא שהוא תואם לשדרוג.
- אחרי ש-Cloud SQL מאמת את ההגדרה, המכונה לא זמינה.
- יוצר גיבוי לפני השדרוג.
- מבצע את השדרוג במופע.
- הופך את המופע לזמין.
- יוצר גיבוי אחרי השדרוג.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על Edit.
- בקטע פרטי המופע, לוחצים על הלחצן שדרוג ומאשרים שרוצים לעבור לדף השדרוג.
- בדף Choose a database version (בחירת גרסת מסד נתונים), לוחצים על הרשימה Database version for upgrade (גרסת מסד הנתונים לשדרוג) ובוחרים אחת מגרסאות מסד הנתונים העיקריות שזמינות.
- לוחצים על Continue.
- בתיבה Instance ID (מזהה מופע), מזינים את שם המופע ולוחצים על הלחצן Start upgrade (התחלת השדרוג).
מוודאים שהגרסה הראשית של מסד הנתונים המשודרג מופיעה מתחת לשם המכונה בדף סקירה כללית של המכונה.
gcloud
מתחילים את השדרוג.
משתמשים בפקודה
gcloud sql instances patchעם הדגל--database-version.לפני שמריצים את הפקודה, מחליפים את הערכים הבאים:
- INSTANCE_NAME: השם של המכונה.
- DATABASE_VERSION: ערך ה-enum של הגרסה הראשית של מסד הנתונים, שצריך להיות מאוחר יותר מהגרסה הנוכחית. מציינים גרסת מסד נתונים לגרסה ראשית שזמינה כיעד שדרוג למופע. אפשר לקבל את ה-enum הזה כשלב הראשון של Plan for upgrade. אם אתם צריכים רשימה מלאה של סוגי גרסאות מסד נתונים, אתם יכולים לעיין בSqlDatabaseEnums.
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION
שדרוגים של גרסאות ראשיות נמשכים כמה דקות. יכול להיות שתופיע הודעה שמציינת שהפעולה נמשכת יותר זמן מהצפוי. אתם יכולים להתעלם מההודעה הזו או להריץ את הפקודה
gcloud sql operations waitכדי לסגור אותה.מקבלים את שם פעולת השדרוג.
משתמשים בפקודה
gcloud sql operations listעם הדגל--instance.לפני שמריצים את הפקודה, מחליפים את הערכים הבאים: * INSTANCE_NAME: שם המכונה.
gcloud sql operations list --instance=INSTANCE_NAME
עוקבים אחרי סטטוס השדרוג.
משתמשים בפקודה
gcloud sql operations describe.לפני שמריצים את הפקודה, מחליפים את המשתנה OPERATION בשם פעולת השדרוג שאוחזר בשלב הקודם.
gcloud sql operations describe OPERATION
REST v1
מתחילים את השדרוג במקום.
משתמשים בבקשת PATCH עם השיטה
instances:patch.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את המשתנים האלה:
- PROJECT_ID: מזהה הפרויקט.
- INSTANCE_NAME: השם של המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAMEתוכן בקשת JSON:
{ "databaseVersion": DATABASE_VERSION }
מחליפים את DATABASE_VERSION בערך enum של הגרסה הראשית של מסד הנתונים, שצריך להיות מאוחר יותר מהגרסה הנוכחית. מציינים גרסת מסד נתונים לגרסה ראשית שזמינה כיעד שדרוג למופע. אפשר לקבל את ה-enum הזה כשלב הראשון של Plan for upgrade. אם אתם צריכים רשימה מלאה של סוגי גרסאות מסד נתונים, תוכלו לעיין ב-SqlDatabaseVersion.
מקבלים את שם פעולת השדרוג.
משתמשים בבקשת GET עם השיטה
operations.listאחרי שמחליפים את PROJECT_ID במזהה הפרויקט.ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operationsעוקבים אחרי סטטוס השדרוג.
משתמשים בבקשת GET עם השיטה
operations.getאחרי שמחליפים את המשתנים הבאים:- PROJECT_ID: מזהה הפרויקט.
- OPERATION_NAME: שם פעולת השדרוג שאוחזר בשלב הקודם.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
Terraform
כדי לשדרג את הגרסה הראשית של מסד הנתונים באמצעות Terraform, צריך להגדיר את הארגומנט database_version בהגדרת המשאב google_sql_database_instance לגרסה הראשית של היעד. חובה להשתמש בספק Terraform ל Google Cloud גרסה 4.34.0 ואילך.
בדוגמאות הבאות מוסבר איך להגדיר google_sql_database_instance בסיסי. כדי לשדרג את הגרסה הראשית, מגדירים את הארגומנט database_version לגרסה הראשית הרלוונטית.
מבצעים את השינויים הבאים בארגומנטים של Terraform:
database_version: מגדירים את הגרסה הראשית של היעד לשדרוג.-
deletion_protection: מגדיר את אמצעי ההגנה של Terraform ברמת הבסיס מפני מחיקת מופעים.-
true: מונע מ-Terraform להרוס את המופע. כל פעולה ב-Terraform שמתוכננת למחוק את המשאב הזה נחסמת. -
false: מאפשר ל-Terraform למחוק את המופע.
-
בדיקת התוכנית של Terraform
לפני שמחילים שינויים, תמיד מריצים את הפקודה terraform plan ובודקים בקפידה את הפלט. הסמלים שמופיעים לצד שם המשאב מציינים איך Terraform יחיל את השינויים:
~עדכון במקום: הסמל הזה מציין ש-Terraform ישנה את המופע הקיים. זהו התוצאה הצפויה והבטוחה לשדרוג גרסה ראשי במקום, כשמשנים אתdatabase_version.+/-יצירה מחדש (החלפה בכוח): הסמל הזה מציין ש-Terraform מתכננת להרוס את המופע הנוכחי וליצור מופע חדש.- אם
deletion_protectionמוגדר ל-true, תופיע שגיאה ב-Terraform וההחלפה המסוכנת הזו תיחסם. כדי לעדכן את הסטטוס, צריך להגדיר באופן מפורש אתdeletion_protection = falseבהגדרה ולהריץ שוב אתterraform apply. רק אחרי זה אפשר יהיה להפעיל את הפקודהapplyכדי להרוס וליצור מחדש. - אם הערך של
deletion_protectionמוגדר כ-false, המערכתterraform applyתמשיך בתהליך ותאבד את הנתונים.
אפשר לתזמן החלפה של מופעים (מחיקה ויצירה מחדש) בגלל שינוי בהגדרה או בגלל שדרוג לא נתמך של שינוי במקום. אם אתם רואים שמכונה וירטואלית מתוזמנת למחיקה וליצירה מחדש, עליכם לעצור את התהליך באופן מיידי ולבדוק את הסיבה להחלפה המתוזמנת לפני שהיא מתבצעת.
- אם
אחרי שבודקים את הפלט של terraform plan כדי לוודא שהוא מציין רק עדכון במקום (~) לשינוי גרסת מסד הנתונים, מחילים את ההגדרה
כדי להחיל את הגדרות Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את Google Cloud פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
כששולחים בקשה לשדרוג במקום, Cloud SQL מבצע קודם בדיקה לפני השדרוג. אם Cloud SQL יקבע שהמופע שלכם לא מוכן לשדרוג, בקשת השדרוג תיכשל ותוצג הודעה עם הצעה לפתרון הבעיה. אפשר גם לעיין במאמר בנושא פתרון בעיות בשדרוג גרסה ראשית.
הכללת רפליקות בשדרוג הגרסה הראשית
אם למופע הראשי יש רפליקות, אפשר לכלול את כל הרפליקות בשדרוג. Cloud SQL יכול לשדרג את כל העותקים המשוכפלים של המופע הראשי, כולל עותקים משוכפלים חוצי-אזור ועקביים.
כשכוללים רפליקות בשדרוג של גרסה ראשית, Cloud SQL מבצע את הפעולות הבאות:
- בודק את ההגדרה של המופע הראשי וההעתקים כדי לוודא שהמופע וההעתקים תואמים לשדרוג.
- הופך את המופע הראשי ללא זמין.
- יוצר גיבוי לפני השדרוג של המופע הראשי.
- הפעולה הזו מפסיקה את השכפול של כל העותקים.
- מבצע את השדרוג במופע הראשי.
- אם השדרוג במופע הראשי מצליח, המופע הראשי הופך שוב לזמין והרפליקציה מופעלת מחדש.
- מערכת Cloud SQL יוצרת גיבוי של המכונה הראשית אחרי השדרוג.
- מערכת Cloud SQL תמשיך לשדרג את כל העותקים המשוכפלים.
גם אם השדרוג של הגרסה הראשית של העותק נכשל, המופע הראשי ממשיך להיות זמין.
כדי לכלול רפליקות בשדרוג של גרסה ראשית, אי אפשר להשתמש בGoogle Cloud מסוף או ב-Terraform. אפשר להשתמש רק ב-ה-CLI של gcloud או ב-Cloud SQL Admin API.
gcloud
מתחילים את השדרוג.
משתמשים בפקודה
gcloud sql instances patchעם הדגלים--database-versionו- .--include-replicas-for-major-version-upgradeלפני שמריצים את הפקודה, מחליפים את הערכים הבאים:
- INSTANCE_NAME: השם של המכונה הראשית.
- DATABASE_VERSION: ערך enum של הגרסה הראשית של מסד הנתונים, שצריך להיות מאוחר יותר מהגרסה הנוכחית. מציינים גרסת מסד נתונים לגרסה ראשית שזמינה כיעד שדרוג למופע. אפשר לקבל את ה-enum הזה כשלב הראשון של Plan for upgrade. אם אתם צריכים רשימה מלאה של סוגי גרסאות מסד נתונים, אתם יכולים לעיין בSqlDatabaseEnums.
gcloud sql instances patch INSTANCE_NAME \ --database-version=DATABASE_VERSION \ --include-replicas-for-major-version-upgrade
שדרוגים של גרסאות ראשיות נמשכים כמה דקות. יכול להיות שתופיע הודעה שמציינת שהפעולה נמשכת יותר זמן מהצפוי. אתם יכולים להתעלם מההודעה הזו או להריץ את הפקודה
gcloud sql operations waitכדי לסגור אותה. שדרוג העותקים יכול להימשך כמה דקות. כדי לבדוק את סטטוס השדרוג:מקבלים את שם פעולת השדרוג.
משתמשים בפקודה
gcloud sql operations listעם הדגל--instance.לפני שמריצים את הפקודה, מחליפים את המשתנה INSTANCE_NAME בשם המכונה.
gcloud sql operations list --instance=INSTANCE_NAME
עוקבים אחרי סטטוס השדרוג.
משתמשים בפקודה
gcloud sql operations describe.לפני שמריצים את הפקודה, מחליפים את המשתנה OPERATION בשם פעולת השדרוג שאוחזר בשלב הקודם.
gcloud sql operations describe OPERATION
REST
מתחילים את השדרוג במקום.
משתמשים בבקשת PATCH עם השיטה
instances:patch.לפני שמשתמשים בנתוני הבקשה, צריך להחליף את המשתנים האלה:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_NAME: השם של המכונה.
ה-method של ה-HTTP וכתובת ה-URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAMEתוכן בקשת JSON:
{ "databaseVersion": DATABASE_VERSION "includeReplicasForMajorVersionUpgrade": true }
- מחליפים את DATABASE_VERSION בערך enum של הגרסה הראשית של מסד הנתונים, שצריך להיות מאוחר יותר מהגרסה הנוכחית. מציינים גרסת מסד נתונים לגרסה ראשית שזמינה כיעד שדרוג למופע. אפשר לקבל את ה-enum הזה כשלב הראשון של Plan for upgrade. אם אתם צריכים רשימה מלאה של סוגי גרסאות מסד נתונים, תוכלו לעיין ב-SqlDatabaseVersion.
- בשדה
includeReplicasForMajorVersionUpgradeמציינים את הערךtrue.
מקבלים את שם פעולת השדרוג.
משתמשים בבקשת GET עם השיטה
operations.listאחרי שמחליפים את PROJECT_ID במזהה הפרויקט.ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operationsעוקבים אחרי סטטוס השדרוג.
משתמשים בבקשת GET עם השיטה
operations.getאחרי שמחליפים את המשתנים הבאים:- PROJECT_ID: מזהה הפרויקט
- OPERATION_NAME: שם פעולת השדרוג שאוחזר בשלב הקודם.
ה-method של ה-HTTP וכתובת ה-URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
גיבויים אוטומטיים לשדרוג
כשמבצעים שדרוג של גרסה ראשית, Cloud SQL יוצר באופן אוטומטי שני גיבויים לפי דרישה, שנקראים גיבויים לשדרוג:
- הגיבוי הראשון לשדרוג הוא גיבוי לפני השדרוג, שמתבצע מיד לפני תחילת השדרוג. אתם יכולים להשתמש בגיבוי הזה כדי לשחזר את מופע מסד הנתונים למצב שבו הוא היה בגרסה הקודמת.
- הגיבוי השני לשדרוג הוא גיבוי אחרי השדרוג, שנוצר מיד אחרי שמתאפשרות כתיבות חדשות למופע המשודרג של מסד הנתונים.
כשמציגים את רשימת הגיבויים, הגיבויים של השדרוג מופיעים עם הסוג On-demand. גיבויים שנוצרו במהלך שדרוג מסומנים כדי שתוכלו לזהות אותם במהירות.
לדוגמה, אם משדרגים מ-MySQL 5.7 ל-MySQL 8.0, הגיבוי לפני השדרוג יסומן בתווית Pre-upgrade backup, MYSQL_5_7 to MYSQL_8_0. והגיבוי אחרי השדרוג יסומן בתווית Post-upgrade backup, MYSQL_8_0 from MYSQL_5_7.. אם משדרגים מ-MySQL 8.0 ל-MySQL 8.4, הגיבוי לפני השדרוג יסומן בתווית Pre-upgrade backup, MYSQL_8_0 to MYSQL_8_4. והגיבוי אחרי השדרוג יסומן בתווית Post-upgrade backup, MYSQL_8_4 from MYSQL_8_0.. אם משדרגים מ-MySQL 8.4 ל-MySQL 9.7, הגיבוי לפני השדרוג יסומן בתווית Pre-upgrade backup, MYSQL_8_4 to MYSQL_9_7. והגיבוי אחרי השדרוג יסומן בתווית Post-upgrade backup, MYSQL_9_7 from MYSQL_8_4..
בדומה לגיבויים אחרים לפי דרישה, הגיבויים של השדרוג נשמרים עד שמוחקים אותם או עד שמוחקים את המופע. אם הפעלתם PITR, לא תוכלו למחוק את הגיבויים של השדרוג בזמן שהם נמצאים בחלון השמירה. אם אתם צריכים למחוק את הגיבויים של השדרוג, אתם צריכים להשבית את PITR או להמתין עד שהגיבויים של השדרוג לא יהיו יותר בחלון השמירה.
השלמת השדרוג של הגרסה הראשית
אחרי שמסיימים לשדרג את המופע הראשי, מבצעים את השלבים הבאים כדי להשלים את השדרוג:-
ביצוע בדיקות קבלה.
מריצים בדיקות כדי לוודא שהמערכת המשודרגת פועלת כמו שצריך.
-
אופציונלי: עדכון הרשאות המשתמש.
ב-MySQL 8.0 יש שינויים חדשים במערכות האבטחה ובניהול החשבונות. מידע נוסף זמין במאמר What is New in MySQL 8.0.
ב-Cloud SQL ל-MySQL, השינויים האלה אומצו וההרשאות של המשתמשים שמשויכות לתפקיד
cloudsqlsuperuserשופרו. יכול להיות שלמשתמשים שנוצרו בגרסה MySQL 5.7 של המופע לא יהיו אותן הרשאות כמו למשתמשים שנוצרו ישירות ב-MySQL 8.0. לדוגמה, למשתמשים שמשדרגים מ-MySQL 5.7 ל-MySQL 8.0 אין את ההרשאהCONNECTION_ADMIN. כתוצאה מכך, הם לא יכולים להריץ את הפקודהKILLבסשנים של משתמשים אחרים. כדי ללמוד איך לעדכן את הרשאות המשתמש, אפשר לעיין בהליך שמופיע בקטע הזה.אם משדרגים מ-MySQL 8.0 ל-MySQL 8.4, יש שינויים נוספים בהרשאות המשתמש, כולל הוספה של הרשאות שהוצגו ב-MySQL 8.4 והסרה של הרשאות שהיו קיימות ב-MySQL 8.0. למידע נוסף, ראו הרשאות משתמש ב-MySQL 8.4 (
cloudsqlsuperuser).כדי לעדכן את הרשאות המשתמש ב-MySQL 8.0, ב-MySQL 8.4 או ב-MySQL 9.7:
יצירת משתמש עם התפקיד
cloudsqlsuperuserשהוקצה לו כברירת מחדל.משתמשים בנתונים של המשתמש הזה כדי להתחבר למופע, וכך תוכלו לעדכן את ההרשאות של משתמשים אחרים.
לדוגמה, כדי לבדוק את ההרשאות שיש למשתמשים, מריצים את הפקודה הבאה:
SHOW GRANTS for 'admin'@'%',
כדי להעניק הרשאות למשתמש, כמו ההרשאה להשתמש בפקודה
KILLכדי לסיים חיבורים, מריצים את הפקודה הבאה:GRANT CONNECTION_ADMIN ON *.* to 'admin'@'%';
כדי להקצות את התפקיד
cloudsqlsuperuserלמשתמשadmin'@'%, מריצים את הפקודה הבאה:GRANT 'cloudsqlsuperuser' to 'admin'@'%';
-
אופציונלי: יוצרים גיבוי.
למרות ש-Cloud SQL יוצר גיבוי באופן אוטומטי אחרי שמשדרגים את המכונה הראשית, מומלץ ליצור גיבוי בעצמכם כדי שתוכלו לשחזר את מסד הנתונים אם יהיה צורך בכך.
- אופציונלי: אם שדרגתם ל-Cloud SQL ל-MySQL 8.4 או ל-MySQL 9.7, אתם צריכים לעדכן גם את כל המחברים, הלקוחות ומעטפת MySQL ל-MySQL 8.4 או ל-MySQL 9.7.
פתרון בעיות בשדרוג גרסה ראשית
מערכת Cloud SQL מחזירה הודעת שגיאה אם מנסים להריץ פקודת שדרוג לא תקינה. לדוגמה, אם המכונה מכילה דגלים לא תקינים של מסד נתונים לגרסה החדשה.
אם הבקשה לשדרוג נכשלת, צריך לבדוק את התחביר של הבקשה. אם המבנה של הבקשה תקין, כדאי לנסות את ההצעות הבאות.
צפייה ביומני השגיאות
אם מתרחשות בעיות בבקשת שדרוג תקינה, Cloud SQL מפרסם יומני שגיאות ב-projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err. כל רשומה ביומן מכילה תווית עם מזהה המופע, כדי לעזור לכם לזהות את המופע שבו אירעה שגיאת השדרוג.
מחפשים שגיאות שדרוג כאלה ופותרים אותן.
כדי לראות את יומני השגיאות, משתמשים במסוף Google Cloud:
-
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
בחלונית Operations and logs בדף Overview של המכונה, לוחצים על הקישור View MySQL error logs.
ייפתח הדף Logs Explorer.
כדי לראות את היומנים:
- כדי להציג רשימה של כל יומני השגיאות בפרויקט, בוחרים את שם היומן במסנן היומנים שם היומן.
מידע נוסף על מסנני שאילתות זמין במאמר בנושא שאילתות מתקדמות.
- כדי לסנן את יומני השגיאות של השדרוג עבור מופע יחיד, מזינים את השאילתה הבאה בתיבה Search all fields (חיפוש בכל השדות), אחרי שמחליפים את
DATABASE_ID
עם מזהה הפרויקט ואחריו שם המופע בפורמט הזה:
project_id:instance_name.resource.type="cloudsql_database" resource.labels.database_id="DATABASE_ID" logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fmysql.err"
לדוגמה, כדי לסנן את יומני השגיאות של השדרוג לפי מופע בשם
shopping-dbשפועל בפרויקטbuylots, משתמשים במסנן השאילתות הבא:resource.type="cloudsql_database" resource.labels.database_id="buylots:shopping-db" logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fmysql.err"
אפשר לבדוק את כל היומנים שדווחו בפרק זמן מסוים, או לסנן את היומנים לפי חומרה. אפשרות נפוצה לפתרון בעיות היא לבחור את המסננים הבאים:
- מקרה חירום
- התראה
- קריטית
- שגיאה
יכול להיות שתיתקלו בבעיות מוכרות במהלך הבדיקה המקדימה והשדרוג מ-MySQL גרסה 5.7 ל-MySQL 8.0. לקבלת עזרה בפתרון הבעיות האלה, אפשר לעיין במאמר בנושא פתרון בעיות בשדרוג גרסה ראשית במקום ל-MySQL 8.0.
פעולת MVU פועלת למשך זמן ארוך יותר
יש שתי משימות בסיסיות שקשורות לשדרוג גרסה ראשית:
- פעולת בדיקה מוקדמת: אם הפעולה לא מסתיימת תוך שלוש שעות, היא מחזירה שגיאת זמן קצוב לתפוגה.
- פעולת שדרוג: אם הפעולה לא מסתיימת תוך שש שעות, מוחזרת שגיאת זמן קצוב לתפוגה.
אם במכונה מתבצעת פעולה MAJOR_VERSION_UPGRADE במשך זמן ארוך מהצפוי, צריך לבדוק את יומני השגיאות של MySQL. יכול להיות שהבעיה נובעת מסיבות נפוצות כמו:
- מספר גדול של טבלאות, תצוגות או אינדקסים
- משאבים לא מספיקים, כמו מעבד (CPU) או זיכרון
- עסקאות גדולות שמונעות את סגירת מסדי הנתונים כדי להתחיל את תהליך השדרוג. אפשר להשתמש במסוף Google Cloud כדי לבדוק את התהליכים הנוכחיים.
שגיאות נפוצות בבדיקה המקדימה לשדרוג גרסה ראשית
בעיות נפוצות שמתגלות בשדרוגים מ-MySQL 5.7 ל-MySQL 8.0 יכולות לכלול:
- הוספה של מילות מפתח חדשות שמורות, כמו
RANKS,GROUPS,FUNCTION, בפרוצדורות מאוחסנות, בטריגרים ובאובייקטים אחרים במסד הנתונים. מידע נוסף זמין במאמר בנושא מילות מפתח ומילים שמורות. - תווי UTF לא תקינים בהגדרות הטבלה.
- מעברי XA שלא בוצעו וצריך לבצע אותם (באמצעות ההצהרה
XA COMMIT) או לבטל אותם (באמצעות ההצהרהXA ROLLBACK). - הגבלת מפתח זר בשמות ארוכים מ-64 תווים.
- סוג נתונים מרחביים באינדקס מעורב של עמודות. מידע נוסף זמין במאמר סוג נתונים מרחביים.
לקבלת עזרה בפתרון בעיות ושגיאות מוכרות במהלך בדיקה מוקדמת של שדרוג גרסה ראשית במקום מ-MySQL 5.7 ל-MySQL 8.0, אפשר לעיין במאמר פתרון בעיות בשדרוג גרסה ראשית במקום ל-MySQL 8.0. מידע נוסף על בעיות נפוצות ב-MySQL זמין במאמרים הכנת ההתקנה לשדרוג ושדרוג ל-MySQL 8.0.
בעיות נפוצות שמתגלות בשדרוגים מ-MySQL 8.0 ל-MySQL 8.4 יכולות לכלול:
- טרמינולוגיה מיושנת של שכפול. המונחים
MASTERו-SLAVEהוסרו לחלוטין מ-MySQL 8.4.אם אתם עדיין משתמשים בפקודות או בהגדרות עם המונחים האלה, אתם צריכים להחליף או להסיר אותם. למידע נוסף על ההסרה וההחלפה של התנאים האלה, אפשר לעיין במאמר מה חדש ב-MySQL 8.4 מאז MySQL 8.0.
בעיות נפוצות שמתגלות בשדרוגים מ-MySQL 8.4 ל-MySQL 9.7 יכולות לכלול:
- אם הפעלתם את
cloudsql_vectorבמופע, לא תוכלו להשתמש באינדקס משני שאינו וקטורי בעמודה שיש בה הטמעות וקטוריות של Cloud SQL לפני השדרוג. יכול להיות שתקבלו את הודעת השגיאה הבאה:Non-vector secondary indexes are disallowed on vector columns when cloudsql_vector is enabled.כדי לפתור את הבעיה, צריך להסיר את האינדקס המשני לפני שמשדרגים ל-MySQL 9.7.
- יש לכם הטמעות וקטורים קיימות במסד הנתונים של Cloud SQL 8.4,
אבל העברתם את
cloudsql_vectorל-off. במסגרת השדרוג ל-MySQL 9.7, כל נתוני הווקטורים מועברים לפורמט הקהילתי של MySQL במקום לפורמטVARBINARYשבו נעשה שימוש במסדי נתונים של Cloud SQL ל-MySQL 8.4 וגרסאות קודמות. כדי לוודא שנתוני הווקטור מועברים בצורה נכונה, אפשר לעדכן את הדגלcloudsql_vectorל-onולהמשיך בשדרוג ל-MySQL 9.7. במהלך השדרוג, נתוני הווקטור מועברים לפורמט מבוסס-קהילה. לחלופין, אפשר להשאיר את הדגלcloudsql_vectorמוגדר לערךoffולמחוק את נתוני הווקטור באופן ידני במסד הנתונים של MySQL 8.4 לפני השדרוג. - נותרו לכם חשבונות משתמשים מובנים במסד הנתונים שמשתמשים בתוסף
mysql_native_password. הפלאגין מוסר לחלוטין מ-Cloud SQL ל-MySQL 9.7. אם יש חשבונות משתמשים שמשתמשים בתוסףmysql_native_password, הם לא יוכלו להתחבר למסד הנתונים שלכם. צריך לשנות את כל החשבונות שנותרו כך שישתמשו בתוסףcaching_sha2_passwordלפני השדרוג ל-Cloud SQL ל-MySQL 9.7.
שחזור המופע הראשי לגרסה הראשית הקודמת
אם מערכת מסד הנתונים המשודרגת לא פועלת כמצופה, יכול להיות שתצטרכו לשחזר את המופע הראשי לגרסה הקודמת. כדי לעשות זאת, משחזרים את הגיבוי שנוצר לפני השדרוג למכונת שחזור של Cloud SQL, שהיא מכונה חדשה שמופעלת בה הגרסה שלפני השדרוג.
כדי לשחזר את המופע הראשי לגרסה הקודמת:
מזהים את הגיבוי שנוצר לפני השדרוג.
יוצרים מכונה לשחזור.
יוצרים מכונה חדשה של Cloud SQL באמצעות הגרסה הראשית שבה Cloud SQL פעל כשנוצר הגיבוי לפני השדרוג. מגדירים את אותם דגלים והגדרות של המופע שבהם נעשה שימוש במופע המקורי.
משחזרים את הגיבוי שנוצר לפני השדרוג.
משחזרים את הגיבוי שנוצר לפני השדרוג למופע השחזור. הפעולה עשויה להימשך כמה דקות.
מוסיפים את העותקים לקריאה.
אם אתם משתמשים בעותקי קריאה, אתם צריכים להוסיף אותם בנפרד.
מקשרים את האפליקציה.
אחרי שמשחזרים את מערכת מסד הנתונים, צריך לעדכן את האפליקציה עם פרטים על מופע השחזור והעותקים לקריאה שלו. אפשר להמשיך להציג תנועה בגרסה של מסד הנתונים לפני השדרוג.
מגבלות
בקטע הזה מפורטות המגבלות לשדרוג של גרסה ראשית במקום.
- אי אפשר לבצע שדרוג של גרסה ראשית במקום ברפליקה חיצונית.
- שדרוג מכונות מ-MySQL 5.7 ל-MySQL 8.0 עם יותר מ-512,000 טבלאות עשוי להימשך זמן רב ולהסתיים בפסק זמן.
- שדרוג מכונות מ-MySQL 8.0 ל-MySQL 8.4 עם יותר מ-512,000 טבלאות עלול להימשך זמן רב ולהסתיים בפסק זמן.
כשמשדרגים מ-MySQL 8.0 ל-MySQL 8.4, אם שדרגתם רפליקה ל-MySQL 8.4 אבל לא את המכונה הראשית, יכול להיות שתוכלו ליצור חשבון משתמש חדש במכונה ראשית שלא שודרגה באמצעות תוסף האימות
mysql_native_passwordשהוצא משימוש. כדי למנוע את המצב הזה, חשוב לשדרג את המופע הראשי מיד אחרי שמשדרגים את העותקים, או ליצור חשבונות משתמשים חדשים רק במופע הראשי באמצעות הפקודה הבאה.CREATE USER 'USERNAME'@'%' IDENTIFIED WITH caching_sha2_password BY 'PASSWORD';
מחליפים את USERNAME ו-PASSWORD בערכים המתאימים.
שאלות נפוצות
יכול להיות שתיתקלו בשאלות הבאות כשמשדרגים את הגרסה הראשית של מסד הנתונים.
- כן. המופע לא יהיה זמין למשך תקופה מסוימת בזמן ש-Cloud SQL מבצע את השדרוג.
- כמה זמן נמשך השדרוג?
שדרוג של מופע יחיד נמשך בדרך כלל פחות מ-10 דקות. אם בהגדרת המכונה יש מספר קטן של מעבדים וירטואליים או זיכרון, יכול להיות שהשדרוג ייקח יותר זמן.
אם המופע שלכם מארח יותר מדי מסדי נתונים או טבלאות, או שמסדי הנתונים גדולים מאוד, יכול להיות שהשדרוג יימשך שעות או אפילו יפסק בגלל חריגה מזמן קצוב, כי משך השדרוג הכולל תלוי במספר האובייקטים במסדי הנתונים. אם יש לכם כמה מקרים שצריך לשדרג, זמן השדרוג יגדל באופן יחסי. אם כוללים העתקים משוכפלים בשדרוג, פעולת השדרוג יכולה להימשך עד שעה, בהתאם למספר ההעתקים המשוכפלים שמוגדרים במופע הראשי.
- האם אפשר לעקוב אחרי כל שלב בתהליך השדרוג?
- ב-Cloud SQL אפשר לעקוב אחרי התקדמות פעולת השדרוג, אבל אי אפשר לעקוב אחרי השלבים הנפרדים בכל שדרוג.
- האם אפשר לבטל את השדרוג אחרי שהתחלתי אותו?
- לא, אי אפשר לבטל שדרוג אחרי שהוא מתחיל. אם השדרוג נכשל, מערכת Cloud SQL משחזרת אוטומטית את המכונה לגרסה הקודמת.
- מה קורה להגדרות שלי במהלך שדרוג?
כשמבצעים שדרוג גרסה ראשי במקום, Cloud SQL שומר את הגדרות מסד הנתונים, כולל שם המכונה, כתובת ה-IP, ערכי הדגלים שהוגדרו באופן מפורש ונתוני המשתמש. עם זאת, יכול להיות שערך ברירת המחדל של משתני המערכת ישתנה. לדוגמה, ערך ברירת המחדל של הדגל
character_set_serverב-MySQL 5.7 הואutf8. כשמשדרגים ל-MySQL 8.0, ערך ברירת המחדל של הדגל משתנה ל-utf8mb4. כדי להחזיר אותו ל-utf8, צריך להגדיר את ערך הדגל בחזרה לערך הקודם.מידע נוסף על הגדרת דגלים של מסד נתונים אם דגל או ערך מסוימים כבר לא נתמכים בגרסת היעד, Cloud SQL מסיר את הדגל באופן אוטומטי במהלך השדרוג.
- מה אפשר לעשות אם השכפול נכשל אחרי שמשדרגים עותק משוכפל?
-
אם השכפול נכשל אחרי שמשדרגים רפליקה, Cloud SQL מבצע שחזור של הרפליקה לגרסה הראשית של MySQL של המכונה הראשית. אפשר לשדרג שוב את העותק, אבל אם הבעיה נמשכת, יכול להיות שהשכפול ייפסק שוב. לכן מומלץ לכלול את העותקים המשוכפלים כשמשדרגים גרסה ראשית, במקום לשדרג כל עותק משוכפל בנפרד.
אם העותק לא משוחזר לאותה גרסה ראשית כמו המופע הראשי, יש לכם שתי אפשרויות:
-
מוחקים את העותק המשוכפל הפגום, יוצרים עותק משוכפל חדש ומשדרגים אותו.
אם השדרוג נכשל שוב, סביר להניח שהסיבה לכך היא שינויים לא תואמים שנוספו למופע הראשי במהלך השדרוג. פתרון בעיות בשדרוג כדי לאתר את הבעיה, לתקן את המופע הראשי ולנסות לשדרג את העותק. מידע נוסף זמין במאמר פתרון בעיות.
-
שדרוג המכונה הראשית
אם השרשור של העותק לא פועל, פעולת השדרוג במופע הראשי יוצרת מחדש את העותקים.
-
- למה הרפליקה המשודרגת שלי חזרה לגרסה הראשית הקודמת?
אם השדרוג לא מצליח, העותק חוזר לגרסה של המופע הראשי. אפשר לשדרג שוב את העותק המשוכפל, אבל אם הבעיה נמשכת, אפשר לבדוק את היומן
mysql.errבעותק המשוכפל כדי למצוא את המקור. מחפשים מילות מפתח כמו[REPL]... failed executing transaction.... end_log_pos...; Failure Reason.אם הודעת השגיאה מכילה את
Access denied for AuthId....עם שינויים בהרשאות המשתמש, סביר להניח שמתבצעת שאילתה באמצעות הרשאות משתמש של MySQL 5.7 בסכימות mysql ו-sys, והיא עלולה להיכשל בגלל השינויים במערכות האבטחה וניהול החשבונות ב-MySQL 8.0. כדי לפתור את הבעיה, צריך להפסיק את השאילתות במופע הראשי לפני שמשדרגים את המופע הראשי לגרסה החדשה, ואז לנסות שוב לשדרג את העותק. Cloud SQL ממליץ להפסיק באופן זמני את כל השאילתות האלה גם במכונה הראשית לפני השדרוג לגרסה החדשה, כי הן עלולות לגרום לבעיה דומה.אם לא מופיעה הסיבה לכשל, כמו
Access denied for AuthID....ביומני MySQL, סביר להניח שהבעיה נגרמת מנתונים חדשים ולא תואמים שאולי נוספו למופע הראשי אחרי ששודרג העותק המשוכפל. במאמר הכנה לשדרוג לגרסה ראשית מוסבר איך לפתור בעיות תאימות לפני שמנסים לשדרג שוב.