בדף הזה מוסבר איך לשדרג את הגרסה הראשית של מסד הנתונים על ידי שדרוג המכונה של Cloud SQL במקום, ולא על ידי העברת נתונים.
מבוא
ספקי תוכנות מסדי נתונים מפרסמים מעת לעת גרסאות חדשות שכוללות תכונות חדשות, שיפורים בביצועים ושיפורים באבטחה. Cloud SQL מקבל גרסאות חדשות אחרי שהן מתפרסמות. אחרי ש-Cloud SQL יציע תמיכה בגרסה ראשית חדשה, תוכלו לשדרג את המכונות שלכם כדי לשמור על עדכניות מסד הנתונים.
אפשר לשדרג את גרסת מסד הנתונים של מופע במקום או על ידי העברת נתונים. שדרוגים במקום הם דרך פשוטה יותר לשדרוג הגרסה הראשית של המופע. אין צורך להעביר נתונים או לשנות את מחרוזות החיבור של האפליקציה. בשדרוגים במקום, אפשר לשמור את השם, כתובת ה-IP והגדרות אחרות של המופע הנוכחי אחרי השדרוג. שדרוגים במקום לא מחייבים להעביר קובצי נתונים, והם יכולים להסתיים מהר יותר. במקרים מסוימים, זמן ההשבתה קצר יותר ממה שנדרש להעברת הנתונים.
הפעולה של שדרוג במקום ב-Cloud SQL ל-PostgreSQL משתמשת בכליpg_upgrade.
תכנון שדרוג של גרסה ראשית
- מוודאים שיש לכם את התפקיד הנדרש כדי לבצע שדרוג של גרסה ראשית: בעלים ב-Cloud SQL או אדמין ב-Cloud SQL.
בוחרים גרסה ראשית של היעד.
gcloud
במאמר התקנת ה-CLI של gcloud מוסבר איך להתקין את ה-CLI של gcloud ולהתחיל להשתמש בו. מידע על הפעלת Cloud Shell זמין במאמר בנושא שימוש ב-Cloud Shell.
כדי לבדוק את גרסאות מסד הנתונים שאפשר לטרגט לשדרוג במקום במופע, פועלים לפי השלבים הבאים:
- מריצים את הפקודה הבאה.
- בפלט של הפקודה,
מאתרים את הקטע שמסומן בתווית
upgradableDatabaseVersions. - בכל קטע משנה מופיעה גרסה של מסד נתונים שזמינה לשדרוג. בכל קטע משנה, בודקים את השדות הבאים.
-
majorVersion: הגרסה הראשית שאפשר לכוון אליה לשדרוג במקום. -
name: מחרוזת גרסת מסד הנתונים שכוללת את הגרסה הראשית. -
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: "POSTGRES_15_0" name: "POSTGRES_15_0" display_name: "PostgreSQL 15.0" }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: "POSTGRES_15_0" name: "POSTGRES_15_0" display_name: "PostgreSQL 15.0" }רשימה מלאה של גרסאות מסד הנתונים שנתמכות ב-Cloud SQL זמינה במאמר גרסאות מסד נתונים ומדיניות גרסאות.
כדאי לבדוק את התכונות שמוצעות בכל גרסה ראשית של מסד הנתונים ולטפל בחוסר התאמה.
- PostgreSQL 18
- PostgreSQL 17
- PostgreSQL 16
- PostgreSQL 15
- PostgreSQL 14
- PostgreSQL 13
- PostgreSQL 12
- PostgreSQL 11
- PostgreSQL 10
בגרסאות חדשות של גרסאות ראשיות מוצגים שינויים לא תואמים, שעשויים לחייב אתכם לשנות את קוד האפליקציה, הסכימה או הגדרות מסד הנתונים. לפני שמשדרגים את מופע מסד הנתונים, צריך לעיין בהערות לגבי הגרסה של גרסת היעד הראשית כדי לזהות את חוסר התאימות שצריך לטפל בו.
מבצעים את הבדיקה המקדימה לשדרוגים.
בודקים את השדרוג באמצעות הרצה יבשה.
לפני שמשדרגים את מסד הנתונים של הייצור, מומלץ לבצע הרצה יבשה של תהליך השדרוג מקצה לקצה בסביבת בדיקה. אתם יכולים לשכפל את המופע כדי ליצור עותק זהה של הנתונים שבעזרתו תוכלו לבדוק את תהליך השדרוג.
בנוסף לווידוא שהשדרוג הושלם בהצלחה, מומלץ להריץ בדיקות כדי לוודא שהאפליקציה מתנהגת כמצופה במסד הנתונים המשודרג.
מחליטים מתי לשדרג.
השדרוג מחייב שהמופע לא יהיה זמין למשך תקופה מסוימת. כדאי לתכנן את השדרוג לתקופה שבה הפעילות במסד הנתונים נמוכה.
הכנה לשדרוג גרסה ראשית
לפני שמשדרגים, צריך לבצע את השלבים הבאים.
-
בודקים את הערך
LC_COLLATEבמסדי הנתוניםtemplateו-postgres. קבוצת התווים של כל מסד נתונים חייבת להיותen_US.UTF8.אם הערך של
LC_COLLATEבמסדי הנתוניםtemplateו-postgresהוא לאen_US.UTF8, השדרוג של הגרסה הראשית ייכשל. כדי לפתור את הבעיה, אם לאחד מהמסד נתונים יש ערכת תווים שונה מ-en_US.UTF8, צריך לשנות את הערך שלLC_COLLATEל-en_US.UTF8לפני שמבצעים את השדרוג.כדי לשנות את הקידוד של מסד נתונים:
- מבצעים dump של מסד הנתונים.
- מחיקת מסד הנתונים.
- יוצרים מסד נתונים חדש עם קידוד שונה (בדוגמה הזו,
en_US.UTF8). - טוענים מחדש את הנתונים.
אפשרות נוספת היא לשנות את שם מסד הנתונים:
- סוגרים את כל החיבורים למסד הנתונים.
- משנים את השם של מסד הנתונים.
- מעדכנים את הגדרות האפליקציה כך שישתמשו בשם החדש של מסד הנתונים.
- יוצרים מסד נתונים חדש וריק עם הקידוד שמוגדר כברירת מחדל.
מומלץ לבצע את השלבים האלה במופע משוכפל לפני שמחילים אותם על מופע ייצור.
ניהול התוספים הנותרים ל-PostgreSQL.
רוב התוספים פועלים בגרסה הראשית המשודרגת של מסד הנתונים. מסירים תוספים שכבר לא נתמכים בגרסת היעד. לדוגמה, צריך להסיר את התוסף
chkpassאם משדרגים ל-PostgreSQL 11 או לגרסאות חדשות יותר.אפשר לשדרג את PostGIS ואת התוספים שקשורים אליו לגרסאות הנתמכות העדכניות באופן ידני.
לפעמים, שדרוג מגרסאות 2.x של PostGIS יכול ליצור מצב שבו יש אובייקטים מיותרים במסד הנתונים שלא משויכים לתוסף PostGIS. הפעולה הזו עלולה לחסום את פעולת השדרוג. מידע על פתרון הבעיה מופיע במאמר פתרון בעיות בהתקנה של raster ב-PostGIS.
לפעמים, שדרוג לגרסה 3.1.7 של PostGIS או לגרסה מתקדמת יותר לא יכול להסתיים בגלל אובייקטים שמשתמשים בפונקציות שהוצאו משימוש. הפעולה הזו עלולה לחסום את פעולת השדרוג. כדי לבדוק את סטטוס השדרוג, מריצים את הפקודה
מידע נוסף על שדרוג תוספי PostGIS זמין במאמר בנושא שדרוג PostGIS. לבעיות שקשורות לשדרוג PostGIS, אפשר לעיין במאמר בדיקת הגרסה של מופע PostgreSQL.SELECT PostGIS_full_version();. אם יש אזהרות, צריך להסיר את כל האובייקטים שמשתמשים בפונקציות שהוצאו משימוש ולעדכן את התוסף PostGIS לגרסה ביניים או לגרסה מתקדמת יותר. אחרי שמבצעים את הפעולות האלה, מריצים שוב את הפקודהSELECT PostGIS_full_version();. בודקים שלא מוצגות אזהרות. לאחר מכן ממשיכים בפעולת השדרוג.- ניהול של דגלים מותאמים אישית במסד הנתונים. בודקים את השמות של כל הדגלים של מסד הנתונים בהתאמה אישית שהגדרתם עבור מכונת PostgreSQL. לגבי בעיות שקשורות לדגלים האלה, אפשר לעיין במאמר בדיקת הדגלים המותאמים אישית במופע PostgreSQL.
- כשמבצעים שדרוג מגרסה ראשית אחת לגרסה ראשית אחרת,
כדאי לנסות להתחבר לכל מסד נתונים כדי לבדוק אם יש בעיות תאימות.
מוודאים שהמסדי נתונים יכולים להתחבר זה לזה. בודקים את השדה
datallowconnבכל מסד נתונים כדי לוודא שהחיבור מותר. הערךtמציין שהחיבור מותר, והערךfמציין שאי אפשר ליצור חיבור. - אם אתם משתמשים בהתקנה של Datadog כדי לשדרג את מופע Cloud SQL ל-PostgreSQL 10 או לגרסאות מתקדמות יותר, אתם צריכים להסיר את הפונקציה pg_stat_activity() לפני השדרוג.
ניהול מקרים עם מספר גדול של אובייקטים.
הזמן שנדרש לשדרוג גרסה מרכזית במקום תלוי במספר אובייקטי מסד הנתונים במופע. במקרים שבהם יש מספר גדול מאוד של אובייקטים, במיוחד טבלאות ואינדקסים, יכול להיות שזמני השדרוג יהיו ארוכים משמעותית. הסיכון שזמן הקצוב לתפוגה של הפעולה יחלוף גדל. Cloud SQL מותאם למכונות עם עד כ-100,000 יחסים. אם המופע שלכם חורג מהמגבלה הזו, השדרוג לא ייחסם, אבל הוא ייחשב לפחות אמין ויש סיכוי גבוה יותר שהוא יימשך זמן רב או ייכשל אחרי זמן קצוב לתפוגה של 6 שעות.
אם המופע שלכם מכיל מספר גדול של אובייקטים, צריך לבצע את הפעולות הבאות לפני שמתחילים בתהליך השדרוג הגדול:
- בודקים ומסירים אובייקטים שלא בשימוש: מזהים ומסירים טבלאות ריקות, טבלאות שמשמשות רק לבדיקות או אובייקטים אחרים במסד הנתונים (סכימות, תצוגות, פונקציות) שכבר לא נחוצים.
- אופטימיזציה של מבני טבלאות:
- אם אתם משתמשים בחלוקת טבלאות למחיצות, יכול להיות שמספר מחיצות גדול מדי יגרום למספר גבוה של יחסי גומלין. במקרה כזה, כדאי לבדוק איך אפשר לצמצם את מספר המחיצות שבהן אתם משתמשים.
- מומלץ להעביר נתונים היסטוריים או נתונים שאין אליהם גישה לעיתים קרובות לאפשרות אחרת לאחסון נתונים. יכול להיות שתצטרכו לצמצם את מספר הטבלאות הפעילות או את הגודל והמורכבות של הטבלאות הקיימות.
- מריצים בדיקת שדרוג: מבצעים הרצה יבשה של השדרוג על שיבוט של מכונת הייצור. כך תוכלו לקבל הערכה ריאלית של הזמן שיידרש ולגלות בעיות פוטנציאליות. ההערכה הזו חשובה במיוחד למסדי נתונים עם מספר גבוה של אובייקטים.
הקטנת מספר האובייקטים והמורכבות שלהם יכולה להפחית את הסיכונים ואת זמן ההשבתה שקשורים לשדרוגים של גרסאות ראשיות.
ניהול מופעים באמצעות אובייקטים גדולים (LOB).
תהליך השדרוג במקום משתמש בכלי השירות
pg_upgradeשל PostgreSQL. התהליך הזה יכול לקחת הרבה זמן אם מסד הנתונים מכיל מספר גדול מאוד של אובייקטים מסוג LOB, ועלול לגרום לכשל בשדרוג בגלל זמן קצוב לתפוגה.כדי לבדוק את מספר האובייקטים הגדולים במסד הנתונים, מתחברים למופע של מסד הנתונים באמצעות לקוח PostgreSQL, כמו
psql, ומריצים את השאילתה הבאה:SELECT count(*) AS total_large_objects FROM pg_largeobject_metadata;
אם המופע שלכם מכיל יותר מ-30 מיליון אובייקטים מסוג LOB, הסיכון לזמן קצוב לתפוגה במופע שלכם גדל. במקרים כאלה, כדאי לבצע את הפעולות הבאות לפני שמתחילים בשדרוג:
- ניקוי אובייקטים גדולים יתומים:
PostgreSQL לא מסיר אוטומטית אובייקטים גדולים שכבר לא מפנים אליהם.
כדי להסיר אובייקטים גדולים לא מאוגדים (LOB) יתומים, משתמשים בכלי השירות
vacuumlo, שהוא חלק מהמודולcontrib. צריך להריץ את הפקודה הזו ממכונת לקוח שיכולה להתחבר למכונה של Cloud SQL.- אם אין לכם
vacuumlo, צריך להתקין את חבילתpostgresql-contribבמכונת הלקוח. - מריצים את הפקודה הבאה כדי לבצע הרצה יבשה ולראות אילו קווי עסקים יימחקו:
מחליפים אתvacuumlo -h INSTANCE_IP -U DATABASE_USER --dry-run DATABASE_NAME
INSTANCE_IP,DATABASE_USERו-DATABASE_NAMEבפרטי המכונה. תוצג בקשה להזין את הסיסמה של המשתמש. - מריצים את הפקודה הבאה כדי להסיר את קווי המוצרים שזוהו:
אחרי שמריצים אתvacuumlo -h INSTANCE_IP -U DATABASE_USER DATABASE_NAME
vacuumlo, בודקים שוב את מספר ה-LOB כדי לוודא שהניקוי הצליח.
- אם אין לכם
- מחיקה ידנית של אובייקטים גדולים: בודקים את מדיניות שמירת הנתונים של האפליקציה ומסירים אובייקטים גדולים שכבר לא נחוצים.
- הגדלת משאבי המופע: אפשר להגדיל את הזיכרון ואת מעבדי ה-vCPU של המופע באופן זמני או קבוע. כך יש יותר משאבים לתהליך
pg_upgrade. - העברת הנתונים: אם אי אפשר לצמצם את מספר קווי העסקים, כדאי לשקול לשדרג את המינוי על ידי העברת הנתונים. אתם יכולים ליצור גישה מותאמת אישית באמצעות
pg_dumpוpg_restoreבמיוחד עבור יחידות עסקיות. יכול להיות ששיטות שכפול לוגיות רגילות לא יתמכו באופן מלא ב-LOB, ולכן יכול להיות שיידרשו שלבים נוספים והשבתה לצורך העברת LOB.
- ניקוי אובייקטים גדולים יתומים:
PostgreSQL לא מסיר אוטומטית אובייקטים גדולים שכבר לא מפנים אליהם.
כדי להסיר אובייקטים גדולים לא מאוגדים (LOB) יתומים, משתמשים בכלי השירות
-
חשוב לתעד את המידע שיידרש כדי ליצור מחדש את כל משבצות השכפול הלוגיות במופע, כולל משבצות שמשמשות את
pglogical, שכפול לוגי מובנה ב-PostgreSQL, Datastream או כל צרכן אחר של פענוח לוגי.
מגבלות ידועות
המגבלות הבאות משפיעות על שדרוגים של גרסאות ראשיות במקום ב-Cloud SQL ל-PostgreSQL:
- אי אפשר לבצע שדרוג של גרסה ראשית במקום ברפליקה חיצונית.
- יכול להיות שייקח הרבה זמן לשדרג מופעים עם יותר מ-1,000 מסדי נתונים מגרסה אחת לגרסה אחרת, והפעולה עלולה להיכשל בגלל חריגה מזמן קצוב לתפוגה.
- משתמשים בהצהרת
select * from pg_largeobject_metadata;כדי להריץ שאילתה לגבי מספר האובייקטים הגדולים בכל מסד נתונים של PostgreSQL במופע Cloud SQL. אם התוצאה מכל מסדי הנתונים שלכם היא יותר מ-10 מיליון אובייקטים גדולים, השדרוג ייכשל. מערכת Cloud SQL חוזרת לגרסה הקודמת של מסד הנתונים. - לפני שמבצעים שדרוג במקום לגרסה ראשית של PostgreSQL 16 ואילך, צריך לשדרג את התוסף PostGIS לגרסה 3.4.0 בכל מסדי הנתונים. ב-PostgreSQL 18, צריך לשדרג ל-PostGIS גרסה 3.6.0.
- לפני שמבצעים שדרוג במקום של גרסה ראשית ל-PostgreSQL 17, צריך לשדרג את התוסף
rdkitלגרסה 4.6.1 בכל מסדי הנתונים. - לפני שמבצעים שדרוג של גרסה ראשית במקום ל-PostgreSQL 16, 17 או 18, צריך לשדרג את התוסף
pg_squeezeלכל מסדי הנתונים לגרסה 1.6, 1.7 או 1.8 בהתאמה. - אם אתם משתמשים ב-PostgreSQL בגרסאות 9.6, 10, 11 או 12, הגרסה 3.4.0 של תוסף PostGIS לא נתמכת. לכן, כדי לבצע שדרוג במקום לגרסה ראשית של PostgreSQL 16 ואילך, צריך קודם לשדרג לגרסת ביניים של PostgreSQL (גרסאות 13, 14 או 15).
אם תתקינו את התוסף
pg_ivmבמופע, לא תוכלו לבצע שדרוג של גרסה ראשית. כדי לפתור את הבעיה, צריך להסיר את התוסף הזה ואז לבצע את השדרוג. מידע נוסף על התוספים זמין במאמר הגדרת תוספים ל-PostgreSQL.אם מפעילים את הדגלים vacuum_defer_cleanup_age ו-force_parallel_mode, אי אפשר לבצע שדרוג של גרסה ראשית. כדי לפתור את הבעיה, צריך למחוק את הדגלים האלה ואז לבצע את השדרוג. מידע נוסף על הדגלים, כולל איך למחוק אותם, זמין במאמר בנושא הגדרת דגלים של מסד נתונים.
הערכת מוכנות לשדרוג של המופע
ב-Cloud SQL אפשר להריץ בדיקה מוקדמת במכונה לפני שדרוג של גרסה ראשית. הבדיקה המקדימה הזו היא פעולה ארוכת טווח (LRO) שבודקת אם המופע שלכם מוכן לשדרוג. הכלי עוזר למצוא בעיות פוטנציאליות כמו חוסר תאימות, בעיות בהגדרות או בעיות בנתונים לפני פעולת השדרוג.
בבדיקה המקדימה מאשרים שאפשר לשדרג את המופע, או מפרטים את הבעיות שצריך לפתור קודם ואת הפתרונות שלהן. הבעיות האלה יכולות לנבוע מתוספים לא תואמים, מתלות לא נתמכת או מבעיות בפורמט הנתונים.Cloud SQL יכול להריץ את תהליך הבדיקה המקדימה במקביל לעומס העבודה שלכם. הפעלת בדיקה מוקדמת לפני שדרוג לגרסה הראשית יכולה לעזור למנוע כשל בשדרוג.
כשמריצים את הבדיקה המקדימה, אחת מהאפשרויות הבאות מתרחשת:
- לא נמצאו בעיות: הבדיקה המקדימה הסתיימה בהצלחה ולא נמצאו בעיות.
- נמצאו בעיות: הבדיקה המקדימה הסתיימה בהצלחה, אבל נמצאו שגיאות שימנעו את השדרוג. צריך לפתור את הבעיות לפני השדרוג.
- נמצאו אזהרות: הבדיקה המקדימה הסתיימה בהצלחה ונמצאו אזהרות. קוראים את האזהרות. מומלץ לטפל בכל הבעיות לפני שממשיכים בשדרוג.
בהתאם לתוצאות של הבדיקה המקדימה, אפשר להמשיך בשדרוג או לתקן את הבעיות שזוהו לפני השדרוג.
מגבלות
כשמשתמשים בבדיקה המקדימה לשדרוג הגרסה הראשית, חשוב לקחת בחשבון את המגבלות הבאות:
- מצב המכונה צריך להיות
RUNNING.
- המכונה צריכה להיות מכונה ראשית. בדיקת ההתאמה לא תומכת במכונות משוכפלות.
לא יכולות להיות פעולות חסימה שממתינות לביצוע במכונה. אם פעולה חוסמת נמצאת בהמתנה, התוצאות של הבדיקה המקדימה הן שגיאה עם ההודעה הבאה:
Operation failed because another operation was already in progress. Try your request after the current operation is complete.הבדיקה המקדימה צריכה להתחבר לכל מסדי הנתונים במופע. אם אין גישה למסד נתונים, הוא נעול או לא מגיב, יכול להיות שהבדיקה המקדימה תיכשל או שיוצגו שגיאות. מומלץ להריץ את הבדיקה המקדימה כשהעומס על מסד הנתונים נמוך.
לפני שמתחילים
- מוודאים ש-Cloud SQL Admin API מופעל במופע.
- מוודאים שיש לכם
cloudsql.instances.preCheckMajorVersionUpgradeהרשאת IAM.
ביצוע בדיקה מוקדמת
כדי לבצע בדיקה מוקדמת לשדרוג של גרסה ראשית:
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- מחפשים את המופע שרוצים להריץ עליו את הבדיקה המקדימה. כדי לפתוח את הדף סקירה כללית של המכונה, לוחצים על שם המכונה.
- לוחצים על Edit.
- בקטע Instance info (פרטי המופע), לוחצים על Validate Upgrade (אימות השדרוג).
- בתיבת הדו-שיח Validate upgrade, בוחרים את גרסת מסד הנתונים שאליה רוצים לשדרג ולוחצים על Validate.
מתחילה פעולת הבדיקה המוקדמת. עוקבים אחרי הסטטוס של פעולת הבדיקה המקדימה במגירת ההתראות פעולות.
- אחרי שהבדיקה המקדימה מסתיימת, נפתח חלון חדש בשם Validate upgrade results (אימות תוצאות השדרוג). בחלון הזה מוצגים הממצאים של תהליך הבדיקה המקדימה. התוצאות יכולות להיות אחת מהאפשרויות הבאות:
- אם אין שגיאות בפעולת הבדיקה המקדימה, לוחצים על שדרוג הדף כדי להתחיל את תהליך השדרוג.
- אם פעולת הבדיקה המקדימה מכילה הודעות
info, צריך לבדוק את הממצאים. כשמוכנים לשדרג, לוחצים על דף השדרוג כדי להתחיל את תהליך השדרוג. - אם הבדיקה המקדימה מכילה
warningהודעות, צריך לעיין בתוצאות. מומלץ לפתור את הבעיות שמופיעות באזהרות לפני שממשיכים בשדרוג, אבל ההודעות האלה לא ימנעו את השדרוג. - אם הפעולה של הבדיקה המקדימה מכילה את הערך
errors, צריך לעיין בתוצאות. פותרים את השגיאות ואז מריצים מחדש את תהליך הבדיקה המקדימה. צריך לפתור את כל השגיאות לפני שמתחילים בתהליך השדרוג.
gcloud
-
gcloud sql instances pre-check-major-version-upgradeכדי להריץ את הבדיקה המקדימה:gcloud 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: מזהה הפרויקט ב- Cloud de Confiance .
אופציונלי: משתמשים בדגל
--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 v1
-
מריצים את הבדיקה המקדימה.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט
- INSTANCE_ID: מזהה המכונה
- TARGET_DATABASE_VERSION: הגרסה הראשית שאליה רוצים לשדרג. רשימת גרסאות מסד הנתונים הזמינות מופיעה במאמר בנושא תכנון שדרוג.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/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/v1/projects/PROJECT_ID/operations
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
-
עוקבים אחרי הסטטוס של הבדיקה המקדימה.
משתמשים בבקשת
GETעם השיטהoperations.list:GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
- OPERATION_NAME: שם פעולת הבדיקה המקדימה שאוחזר בשלב הקודם.
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: מזהה הפרויקט ב- Cloud de Confiance .
-
עוקבים אחרי הסטטוס של הבדיקה המקדימה.
משתמשים בבקשת
GETעם השיטהoperations.list:GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operation/OPERATION_NAME
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
- operation_name: שם פעולת הבדיקה המקדימה שאוחזר בשלב הקודם.
בדיקת הממצאים של הבדיקה המקדימה
אחרי שהבדיקה המקדימה מסתיימת, המופע מוכן לשדרוג או שיש בו בעיות שצריך לטפל בהן.
מוכן לשדרוג
אם הבדיקה המקדימה מסתיימת בהצלחה ומערך preCheckResponse ריק, זה אומר שלא נמצאו בעיות או אזהרות. המופע שלכם מוכן לשדרוג לגרסה הראשית. כדי להמשיך, צריך לעיין במאמר בנושא ביצוע שדרוג של גרסה ראשית.
לא מוכן לשדרוג
אם הבדיקה המקדימה פעלה בהצלחה ומערך preCheckResponse מכיל בעיות, המכונה לא מוכנה לשדרוג וצריך לטפל בה. יכול להיות שהבעיות שזוהו ימנעו את השדרוג, ויכול להיות שלא. הבעיות האלה מצוינות בpreCheckResponse עם סוגי ההודעות הבאים:
| סוג | תיאור | חסימת השדרוג? |
|---|---|---|
INFO |
הודעה עם מידע חשוב. | לא |
WARNING |
זוהתה בעיה פוטנציאלית, אבל היא לא מונעת את השדרוג. Cloud SQL ממליץ לבדוק את האזהרה ולטפל בה לפני השדרוג כדי לוודא תאימות מלאה. | לא |
ERROR |
נמצאה בעיה קריטית שמונעת את השדרוג. הבעיות האלה עלולות לגרום לכשל בשדרוג. כדי לשדרג את המופע, צריך לפתור את הבעיות האלה. | כן |
INFO או WARNING הודעות, אתם יכולים לשדרג אותו, אבל יכול להיות שתיתקלו בבעיות אחרי השדרוג. מומלץ לבדוק את פרטי ההודעה ולפתור את הבעיה לפני השדרוג. אם במופע שלכם יש ERROR הודעות, אתם צריכים לפתור את הבעיות האלה לפני השדרוג.
כל סוג בעיה כולל את השדות message ו-actions_required. כדאי לעיין בכל בעיה כדי להבין את הסוג שלה ואיך לפתור אותה. מידע נוסף על בעיות נפוצות ופתרונות זמין במאמר שגיאות נפוצות בבדיקה המקדימה לשדרוג גרסה ראשית.
אחרי שפותרים את הבעיות, מריצים מחדש את הבדיקה המקדימה כדי לוודא שהמופע מוכן לשדרוג. אחרי שהבדיקה המקדימה תסתיים ללא שגיאות, תוכלו לשדרג את המופע.
ביצוע שדרוג של הגרסה הראשית
אפשר לשדרג את הגרסה הראשית של מכונת Cloud SQL יחידה, או לשדרג את הגרסה הראשית של מכונה ראשית ולכלול בשדרוג את כל הרפליקות שלה, כולל רפליקות מדורגות ורפליקות חוצות אזורים.
שדרוג הגרסה הראשית של מופע יחיד
כשמפעילים פעולת שדרוג למכונה אחת, Cloud SQL מבצע את הפעולות הבאות:
- בודק את ההגדרה של המופע כדי לוודא שהוא תואם לשדרוג.
- אחרי ש-Cloud SQL מאמת את ההגדרה, המופע לא זמין.
- יוצר גיבוי לפני השדרוג.
- מבצע את השדרוג במופע.
- הופך את המופע לזמין.
- יוצר גיבוי אחרי השדרוג.
המסוף
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
- לוחצים על 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 ל Cloud de Confiance by S3NS גרסה 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 וההחלפה המסוכנת הזו תיחסם. כדי לאפשר את ההרס והיצירה מחדש שלapply, צריך להגדיר באופן מפורש אתdeletion_protection = falseבהגדרה ולהריץ שוב אתterraform applyכדי לעדכן את המצב. - אם הערך של
deletion_protectionהואfalse, המערכתterraform applyתמשיך בתהליך ותאבד את הנתונים.
אפשר לתזמן החלפה של מופעים (מחיקה ויצירה מחדש) בגלל שינוי בהגדרה או בגלל שדרוג לא נתמך של שינוי במקום. אם אתם רואים שמכונה וירטואלית מתוזמנת למחיקה וליצירה מחדש, עליכם לעצור את התהליך באופן מיידי ולבדוק את הסיבה להחלפה המתוזמנת לפני שהיא מתבצעת.
- אם
אחרי שבודקים את הפלט של terraform plan כדי לוודא שהוא מציין רק עדכון במקום (~) לשינוי גרסת מסד הנתונים, מחילים את ההגדרה.
כדי להחיל את הגדרות Terraform בפרויקט ב- Cloud de Confiance , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Cloud de Confiance
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
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!".
- פותחים את Cloud de Confiance הפרויקט כדי לראות את התוצאות. במסוף Cloud de Confiance , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
כששולחים בקשה לשדרוג במקום, Cloud SQL מבצע קודם בדיקה לפני השדרוג. אם Cloud SQL יקבע שהמופע שלכם לא מוכן לשדרוג, בקשת השדרוג תיכשל ותוצג הודעה עם הצעה לפתרון הבעיה. אפשר גם לעיין במאמר בנושא פתרון בעיות בשדרוג גרסה ראשית.
הכללת רפליקות בשדרוג הגרסה הראשית
אם למופע הראשי יש רפליקות, אפשר לכלול את כל הרפליקות בשדרוג. Cloud SQL יכול לשדרג את כל העותקים המשוכפלים של המופע הראשי, כולל עותקים משוכפלים חוצי-אזור ועקביים.
כשכוללים רפליקות בשדרוג של גרסה ראשית, Cloud SQL מבצע את הפעולות הבאות:
- בודק את ההגדרה של המופע הראשי וההעתקים כדי לוודא שהמופע וההעתקים תואמים לשדרוג.
- הופך את המופע הראשי ללא זמין.
- יוצר גיבוי לפני השדרוג של המופע הראשי.
- השכפול מופסק בכל העותקים.
- השדרוג מתבצע במופע הראשי.
- אם השדרוג במופע הראשי מצליח, המופע הראשי הופך שוב לזמין והרפליקציה מופעלת מחדש.
- מערכת Cloud SQL יוצרת גיבוי של המכונה הראשית אחרי השדרוג.
- מערכת Cloud SQL תמשיך לשדרג את כל העותקים המשוכפלים.
גם אם השדרוג של הגרסה הראשית של העותק נכשל, המופע הראשי ממשיך להיות זמין.
כדי לכלול רפליקות בשדרוג של גרסה ראשית, אי אפשר להשתמש בCloud de Confiance מסוף או ב-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. גיבויים לשדרוג מסומנים בתווית כדי שתוכלו לזהות אותם במהירות.
לדוגמה, אם משדרגים מ-PostgreSQL 14 ל-PostgreSQL 15, הגיבוי לפני השדרוג מסומן בתווית Pre-upgrade backup, POSTGRES_14 to POSTGRES_15. והגיבוי אחרי השדרוג מסומן בתווית Post-upgrade backup, POSTGRES_14 to
POSTGRES_15..
בדומה לגיבויים אחרים לפי דרישה, הגיבויים של השדרוג נשמרים עד שמוחקים אותם או עד שמוחקים את המופע. אם הפעלתם PITR, לא תוכלו למחוק את הגיבויים של השדרוג בזמן שהם נמצאים בחלון השמירה. אם אתם צריכים למחוק את הגיבויים של השדרוג, אתם צריכים להשבית את PITR או להמתין עד שהגיבויים של השדרוג לא יהיו יותר בחלון השמירה.
ביטול השדרוג של הגרסה הראשית
אפשר לבטל פעולת שדרוג של גרסה ראשית במקום, אבל רק בזמן שהמופע מבצע את השדרוג בפועל.
חלון הביטול
שדרוג לגרסה הראשית כולל רצף של שלבים. אפשר לבטל רק במהלך שלב השדרוג הראשי.
אתחול: Cloud SQL מכין את המכונה ואת המשאבים שלה. במהלך השלב הזה אי אפשר לבטל את המינוי.
שלב השדרוג הראשי: Cloud SQL משדרג באופן פעיל את הנתונים לגרסה הראשית החדשה. אפשר לבטל את המינוי רק בשלב הזה.
סיום: המופע משלים את השדרוג ומבצע אימותים סופיים.
כדי לדעת מתי המופע שלכם נכנס לשלב שבו אפשר לבטל את השדרוג, בודקים אם יש יומני שדרוג. יומני השדרוג זמינים בכתובת
projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log
כשערכי היומן מתחילים להופיע בקובץ היומן הזה, השלב העיקרי של השדרוג פעיל ואפשר לבטל את הפעולה.
ביצוע ביטול
כדי לבטל שדרוג של גרסה ראשית במקום, צריך את מזהה הפעולה.
צריך לציין את המזהה הזה בפקודה של gcloud או של API בארכיטקטורת REST, כדי שמערכת 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 במזהה הפעולה שאוחזר בשלב הקודם.
בודקים את הסטטוס 'בוטל'.
משתמשים בפקודה
gcloud sql operations describe:gcloud sql operations describe OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הראשון.
REST v1
מקבלים את מזהה פעולת השדרוג.
משתמשים בבקשת GET עם השיטה
operations.listאחרי שמחליפים אתPROJECT_IDבמזהה הפרויקט.GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operationsמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
ביטול השדרוג.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הקודם.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
קריאה ל-API בארכיטקטורת REST הזו לא מחזירה תגובה.
בודקים את הסטטוס 'בוטל'.
משתמשים בבקשת GET עם השיטה
operations.list:GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הראשון.
REST v1beta4
מקבלים את מזהה פעולת השדרוג.
משתמשים בבקשת GET עם השיטה
operations.listאחרי שמחליפים אתPROJECT_IDבמזהה הפרויקט.GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operationsמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
ביטול השדרוג.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הקודם.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID/cancel
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
קריאה ל-API בארכיטקטורת REST הזו לא מחזירה תגובה.
בודקים את הסטטוס 'בוטל'.
משתמשים בבקשת GET עם השיטה
operations.list:GET https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance .
- OPERATION_ID: מזהה הפעולה שאוחזר בשלב הראשון.
אם בקשת הביטול תאושר, Cloud SQL יפסיק את תהליך השדרוג ויחזיר את המכונה למצב המקורי שלה.
פתרון בעיות שקשורות לביטול
| שגיאה | פתרון בעיות |
|---|---|
הודעת שגיאה: The operation [OPERATION_ID] cannot be canceled
at the moment. Please retry in approximately 5-10 minutes |
השדרוג עדיין לא הגיע לחלון שבו אפשר לבטל אותו. מחכים כמה דקות ומנסים לבטל שוב. |
הודעת שגיאה: The operation [OPERATION_ID] cannot be cancelled
as it has passed the cancellable state. The operation is in its final
stage and should complete soon. |
תהליך השדרוג עבר את חלון הזמן שבו אפשר לבטל. אי אפשר יותר לבטל את השדרוג, והוא יסתיים בקרוב. |
הודעת שגיאה: You can't cancel operation [OPERATION_ID] because
it isn't in progress. |
הפעולה כבר הסתיימה, בהצלחה או עם שגיאה, ואי אפשר לבטל אותה יותר. |
הודעות שגיאה:
|
ב-Cloud SQL אין תמיכה בביטול הפעולה הזו. אם לדעתכם זה לא נכון, ודאו שoperation ID שבו נעשה שימוש תואם לפעולת UPDATE שמנסה לשדרג את הגרסה הראשית של מסד הנתונים במקום. |
אם הביטול נכשל אחרי שבקשת הביטול אושרה, צריך לשחזר את המופע מגיבוי שנוצר לפני השדרוג באופן אוטומטי בתחילת התהליך. אם הבעיות נמשכות, אפשר לפנות Cloud de Confiance by S3NS לתמיכה.
השלמת השדרוג של הגרסה הראשית
אחרי שמסיימים לשדרג את המופע הראשי, מבצעים את השלבים הבאים כדי להשלים את השדרוג:
רענון הנתונים הסטטיסטיים של מסד הנתונים.
מריצים את הפקודה
ANALYZEבמופע הראשי כדי לעדכן את נתוני המערכת אחרי השדרוג. סטטיסטיקות מדויקות מבטיחות שתכנון השאילתות ב-PostgreSQL יעבד את השאילתות בצורה אופטימלית. נתונים סטטיסטיים חסרים עלולים להוביל לתוכניות שאילתה לא טובות, שבתורן עלולות לפגוע בביצועים ולתפוס יותר מדי זיכרון.ביצוע בדיקות קבלה.
מריצים בדיקות כדי לוודא שהמערכת המשודרגת פועלת כמצופה.
- כדי למנוע שיבושים בזרמי השכפול, צריך ליצור מחדש את משבצות השכפול הלוגיות של המופע באמצעות המידע שרשמתם לפני תחילת השדרוג (ראו הכנה לשדרוג גרסה ראשית).
פתרון בעיות בשדרוג גרסה ראשית
מערכת Cloud SQL מחזירה הודעת שגיאה אם מנסים להריץ פקודת שדרוג לא תקינה. לדוגמה, אם המכונה מכילה דגלים לא תקינים של מסד נתונים לגרסה החדשה.
אם הבקשה לשדרוג נכשלת, צריך לבדוק את התחביר של הבקשה. אם המבנה של הבקשה תקין, כדאי לנסות את ההצעות הבאות.
צפייה ביומני השגיאות
אם מתרחשות בעיות בבקשת שדרוג תקינה, Cloud SQL מפרסם יומני שגיאות ב-projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log. כל רשומה ביומן מכילה תווית עם מזהה המכונה, כדי לעזור לכם לזהות את המכונה שבה אירעה שגיאת השדרוג.
מחפשים שגיאות שדרוג כאלה ופותרים אותן.
כדי לראות את יומני השגיאות, משתמשים במסוף Cloud de Confiance by S3NS::
-
נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .
- כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
בחלונית Operations and logs בדף Overview של המופע, לוחצים על הקישור View PostgreSQL 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%2Fpostgres-upgrade.log"
לדוגמה, כדי לסנן את יומני השגיאות של השדרוג לפי מופע בשם
shopping-dbשפועל בפרויקטbuylots, משתמשים במסנן השאילתות הבא:resource.type="cloudsql_database" resource.labels.database_id="buylots:shopping-db" logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fpostgres-upgrade.log"
אפשר לבדוק את כל היומנים שדווחו בפרק זמן מסוים, או לסנן את היומנים לפי חומרה. אפשרות נפוצה לפתרון בעיות היא לבחור את המסננים הבאים:
- מקרה חירום
- התראה
- קריטית
- שגיאה
רשומות ביומן עם הקידומת pg_upgrade_dump מציינות שקרתה שגיאת שדרוג. לדוגמה:
pg_upgrade_dump: error: query failed: ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
בנוסף, רשומות ביומן שמתויגות עם שם קובץ משני .txt עשויות לכלול שגיאות אחרות שכדאי לפתור לפני שמנסים לשדרג שוב.
כל שמות הקבצים נמצאים בקובץ postgres-upgrade.log. כדי לאתר שם קובץ, צריך להסתכל בשדה labels.FILE_NAME.
שמות קבצים שעשויים להכיל שגיאות שצריך לפתור:
tables_with_oids.txt:הקובץ הזה מכיל טבלאות שמופיעות עם מזהי אובייקטים (OID). אפשר למחוק את הטבלאות או לשנות אותן כך שלא ייעשה בהן שימוש ב-OID.tables_using_composite.txt:הקובץ הזה מכיל טבלאות שמופיעות באמצעות סוגים מורכבים שהוגדרו על ידי המערכת. מוחקים את הטבלאות או משנים אותן כך שלא ייעשה בהן שימוש בסוגים המורכבים האלה.tables_using_unknown.txt:הקובץ הזה מכיל טבלאות שמופיעות ברשימה באמצעות סוג הנתוניםUNKNOWN. אפשר למחוק את הטבלאות או לשנות אותן כך שלא ישתמשו בסוג הנתונים הזה.tables_using_sql_identifier.txt:הקובץ הזה מכיל טבלאות שמופיעות ברשימה באמצעות סוג הנתוניםSQL_IDENTIFIER. צריך למחוק את הטבלאות או לשנות אותן כך שלא ישתמשו בסוג הנתונים הזה.tables_using_reg.txt:הקובץ הזה מכיל טבלאות שמופיעות ברשימה באמצעות סוג הנתוניםREG*(לדוגמה,REGCOLLATIONאוREGNAMESPACE). צריך למחוק את הטבלאות או לשנות אותן כך שלא ייעשה בהן שימוש בסוג הנתונים הזה.postfix_ops.txt:הקובץ הזה מכיל טבלאות שמופיעות באמצעות אופרטורים של postfix (אונריים מימין). אפשר למחוק את הטבלאות או לשנות אותן כך שלא ייעשה בהן שימוש באופרטורים האלה.
בדיקת הזיכרון
אם למופע אין מספיק זיכרון משותף, יכול להיות שתופיע הודעת השגיאה הבאה: ERROR: out of shared memory. השגיאה הזו סביר שתתרחש אם יש לכם יותר מ-10,000 טבלאות.
לפני שמנסים לשדרג, צריך להגדיר את הערך של הדגל max_locks_per_transaction לכפליים ממספר הטבלאות במופע. המופע מופעל מחדש כשמשנים את הערך של הדגל הזה.
בדיקת קיבולת החיבורים
אם למופע שלכם אין מספיק קיבולת חיבור, יכול להיות שתופיע הודעת השגיאה הבאה: ERROR: Insufficient connections.
Cloud SQL ממליץ להגדיל את הערך של הדגל max_connections במספר מסדי הנתונים במכונה. המופע מופעל מחדש כשמשנים את הערך של הדגל הזה.
בדיקה אם יש הפניה לא ברורה לעמודה
Cloud SQL מבצע באופן אוטומטי בדיקה לפני השדרוג כדי לזהות תצוגות מוגדרות על ידי המשתמש שתלויות בתצוגות של קטלוג המערכת, כמו pg_stat_activity או pg_stat_replication. מבנה העמודות בתצוגות של קטלוג המערכת האלה יכול להשתנות בין גרסאות עיקריות של PostgreSQL. אם יש לכם תצוגות שselect * או
מסתמכות על סדר העמודות בתצוגות המערכת האלה, יכול להיות שהן לא יהיו תואמות אחרי השדרוג, ותוצג שגיאה כמו ERROR: column reference "column_name" is ambiguous.
בדיקת טרום השדרוג מזהה תצוגות כאלה על ידי בדיקת התלות. אם נמצאו תצוגות לא תואמות, תהליך השדרוג ייעצר ותוצג הודעת שגיאה. בהודעה הזו מפורטות התצוגות הלא תואמות בכל מסד נתונים שצריך לטפל בהן.
הודעת שגיאה לדוגמה
לבעיות שקשורות ל-
pg_stat_activity:Please remove the following usages of views that depend on functions returning data types of pg_stat_activity before attempting an upgrade: (database: my_db, schema name: public, view name: my_stat_activity_view)
לבעיות שקשורות ל-
pg_stat_replication:Please remove the following usages of views that depend on functions returning data types of pg_stat_replication before attempting an upgrade: (database: my_db, schema name: public, view name: my_replication_stats_view)
כדי לפתור את הבעיות האלה ולהמשיך בשדרוג: 1. מזהים את התצוגות שמפורטות בהודעת השגיאה של הבדיקה לפני השדרוג.
מחיקת התצוגות האלה באמצעות
DROP VIEW view_name;.מנסים שוב לשדרג את הגרסה הראשית.
אחרי שהשדרוג יסתיים, צריך ליצור מחדש את התצוגות. מוודאים שהגדרות התצוגה החדשות תואמות לסכימה של תצוגות קטלוג המערכת בגרסה הנוכחית של PostgreSQL. כדי למנוע בעיות בעתיד, יכול להיות שתצטרכו לציין במפורש את העמודות במקום להשתמש ב-
select *.
דוגמה מפורטת יותר של הבעיה ותובנות נוספות זמינות בדיון הזה ב-Stack Overflow
בדיקה של SRF בהצהרות CASE
אם אתם משדרגים את המופע מגרסה 9.6 ומשתמשים בפונקציות להחזרת קבוצה בהצהרות CASE, יכול להיות שתופיע הודעת השגיאה ERROR: set-returning functions are not allowed in CASE. הבעיה הזו מתרחשת כי החל מגרסה 10 ואילך, אסור להשתמש בפונקציות שמחזירות קבוצה של ערכים במשפטי CASE.
כדי לפתור את הבעיה ולשדרג את המופע בהצלחה, צריך לוודא שכל הצהרות CASE שמשתמשות בפונקציות להחזרת קבוצות שונו כדי להימנע מהשימוש בהן, ואז לנסות לשדרג שוב. דוגמאות ל-SRF נפוצים:
- unnest()
- generate_series()
- array_agg()
- regexp_split_to_table()
- jsonb_array_elements()
- json_array_elements()
- sonb_each()
- json_each()
בדיקת תצוגות שנוצרו בשידורים בהתאמה אישית
אם יצרתם תצוגה מפורטת על סמך שידור בהתאמה אישית, תוצג הודעת שגיאה דומה לזו: ERROR: cannot cast type <type_1> to <type_2>.
הבעיה הזו מתרחשת בגלל בעיות הרשאה בהפעלת Cast בהתאמה אישית.
כדי לפתור את הבעיה, צריך לעדכן את המופע לגרסה [PostgreSQL version].R20240910.01_02
מידע נוסף מופיע במאמר בנושא תחזוקה בשירות עצמי.
בדיקת הבעלות על גורם מפעיל לאירוע
ב-Cloud SQL, כל טריגרים של אירועים צריכים להיות בבעלות של משתמש עם התפקיד cloudsqlsuperuser. מערכת Cloud SQL מבצעת בדיקה לפני השדרוג כדי לאמת את הבעלות על כל טריגרי האירועים. אם טריגר של אירוע נמצא בבעלות של משתמש שאין לו תפקיד cloudsqlsuperuser, תהליך השדרוג ייעצר ותופיע הודעת שגיאה, למשל:
Please ensure that the owners of all event triggers have the cloudsqlsuperuser role assigned to them before attempting an upgrade: (database: your_db, triggerName your_trigger, owner: non_super_user)
כדי לפתור את הבעיה, צריך לשנות את הבעלים של טריגר האירוע למשתמש עם תפקיד cloudsqlsuperuser, כמו postgres, או להעניק את התפקיד cloudsqlsuperuser לבעלים הנוכחי.
כדי לזהות טריגרים של אירועים שהבעלים שלהם לא קיבלו את התפקיד הנדרש, מריצים את הפקודה הבאה:
SELECT t.evtname AS trigger_name, r.rolname AS current_owner FROM pg_event_trigger t JOIN pg_roles r ON t.evtowner = r.oid WHERE NOT pg_has_role(r.rolname, 'cloudsqlsuperuser', 'member');
בתוצאות מוצגים כל טריגר לאירוע עם בעלים שאין לו את התפקיד cloudsqlsuperuser.
בדיקת עמודות שנוצרו מטבלאות שלא נרשמו
אם יש לכם טבלה שלא נרשמה ביומן ונוצרו בה עמודות, יכול להיות שתופיע הודעת השגיאה ERROR: unexpected request for new relfilenumber in binary upgrade mode.
הבעיה הזו מתרחשת בגלל חוסר התאמה במאפייני ההתמדה בין טבלאות לבין הרצפים שלהן בעמודות שנוצרו.
כדי לפתור את הבעיה הזו:
- מחיקת טבלאות שלא נרשמו ביומן: אם אפשר, מוחקים טבלאות שלא נרשמו ביומן שמקושרות לעמודות שנוצרו. לפני שממשיכים, חשוב לוודא שאפשר לצמצם את הסיכון לאובדן נתונים.
-
המרת טבלאות לטבלאות קבועות: אפשר להמיר באופן זמני טבלאות לא מתועדות לטבלאות קבועות באמצעות השלבים הבאים:
- המרת הטבלה לטבלה עם תיעוד
ALTER TABLESET LOGGED; - ביצוע שדרוג של גרסה ראשית
- המרת הטבלה בחזרה לטבלה לא מתועדת
ALTER TABLESET UNLOGGED
- המרת הטבלה לטבלה עם תיעוד
אפשר לזהות את כל הטבלאות האלה באמצעות השאילתה הבאה :
SELECT relnamespace::regnamespace, c.relname AS table_name, a.attname AS column_name, a.attidentity AS identity_type FROM pg_catalog.pg_class c JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid WHERE a.attidentity IN ('a', 'd') AND c.relkind = 'r' AND c.relpersistence = 'u' ORDER BY c.relname, a.attname;
בדיקת הדגלים בהתאמה אישית של מכונת PostgreSQL
אם אתם משדרגים למכונת PostgreSQL, גרסה 14 ומעלה, כדאי לבדוק את השמות של הדגלים המותאמים אישית של מסד הנתונים שהגדרתם למכונה. הסיבה לכך היא שב-PostgreSQL הוגדרו הגבלות נוספות על שמות מותרים לפרמטרים מותאמים אישית.
התו הראשון של דגל מותאם אישית של מסד נתונים חייב להיות אלפביתי (A-Z או a-z). כל התווים הבאים יכולים להיות אלפאנומריים, התו המיוחד קו תחתון (_) או התו המיוחד סימן דולר ($).
הסרת תוספים
אם אתם משדרגים את המופע של Cloud SQL, יכול להיות שתופיע הודעת השגיאה הבאה: pg_restore: error: could not execute
query: ERROR: role "16447" does not exist.
כדי לפתור את הבעיה, בצע את הצעדים הבאים:
- מסירים את התוספים
pg_stat_statementsו-pgstattuple. - מבצעים את השדרוג.
- מתקינים מחדש את התוספים.
פעולת MVU פועלת למשך זמן ארוך יותר
יש שתי משימות בסיסיות שקשורות לשדרוג גרסה ראשית:
- פעולת בדיקה מוקדמת: אם הפעולה לא מסתיימת תוך שלוש שעות, היא מחזירה שגיאת זמן קצוב לתפוגה.
- פעולת שדרוג: אם הפעולה לא מסתיימת תוך שש שעות, מוחזרת שגיאת זמן קצוב לתפוגה.
אם במכונה מתבצעת פעולה MAJOR_VERSION_UPGRADE במשך זמן ארוך מהצפוי, צריך לבדוק את יומני השגיאות של PostgreSQL. יכול להיות שהבעיה נובעת מסיבות נפוצות כמו:
- מספר גדול של טבלאות, תצוגות או אינדקסים
- משאבים לא מספיקים, כמו מעבד (CPU) או זיכרון
- עסקאות גדולות שמונעות את השבתת מסדי הנתונים כדי להתחיל את תהליך השדרוג. אפשר להשתמש במסוף Cloud de Confiance by S3NS כדי לבדוק את התהליכים הנוכחיים.
שגיאות נפוצות בבדיקה המקדימה לשדרוג גרסה ראשית
הבעיות שנמצאו על ידי בדיקת ההתאמה לפני שדרוג הגרסה הראשית מחולקות לקטגוריות הבאות:
תוספים לא תואמים: אלה תוספים של Cloud SQL ל-PostgreSQL במופע שלא פועלים עם הגרסה הראשית החדשה.
תלויות שלא נתמכות: אלה תלויות שלא נתמכות בגרסה הראשית החדשה או שצריך לעדכן אותן כדי שהן יפעלו איתה.
בעיות תאימות במסד הנתונים: אלה בעיות במסד הנתונים או בנתונים שיכולות לקרות אחרי שדרוג של גרסה ראשית. ההבדלים האלה כוללים מבנים של מסדי נתונים, סוגי נתונים, קידוד, איסוף או שינויים בקטלוג המערכת שספציפיים לגרסה החדשה.
תוספים לא תואמים
בטבלה הבאה מפורטות שגיאות נפוצות שקשורות לתוספים לא תואמים, שסביר שיימצאו במהלך בדיקת ההתאמה לפני שדרוג הגרסה הראשית:
| סוג | דוגמה לשגיאה | רזולוציה |
|---|---|---|
| תוסף שלא נתמך או שהוצא משימוש | Your installation contains unsupported extensions for the
new version. These extensions must be removed before attempting an
upgrade: (database: %s, Extension name: %s) |
מסירים את התוסף מכל מסדי הנתונים שמשתמשים בו באמצעות
DROP EXTENSION $extension_name;. |
| גרסת תוסף לא תואמת | Your installation contains incompatible version extensions.
These extensions must be upgraded to a compatible version before
attempting an upgrade: (database: %s, Extension name: %s) |
מעדכנים את התוסף לגרסה שפועלת עם גרסת Cloud SQL ל-PostgreSQL שאליה רוצים להגיע. לרשימת הגרסאות התואמות, אפשר לעיין במאמר בנושא הגדרת תוספים של Cloud SQL ל-PostgreSQL. |
PostGIS קבצים לא ארוזים |
PostGIS version upgrade has not been completed, unpackaged
raster files present. Follow the steps at
https://postgis.net/documentation/tips/tip-removing-raster-from-2-3/ to
fix before major version upgrade. |
מנקים את קובצי ה-raster שלא נארזו. |
PostGIS פונקציות שהוצאו משימוש |
PostGIS version upgrade has not been completed, deprecated
functions present. Please drop all objects using deprecated functions
and upgrade to a different version of PostGIS before major version
upgrade. |
לפני שמשדרגים את התוסף PostGIS, צריך למצוא ולהסיר או לשנות את כל אובייקטי מסד הנתונים שמשתמשים בפונקציות PostGIS שהוצאו משימוש. |
| בעלות על תוספים | Please ensure that the owner of the postgres_fdw extension
has the cloudsqlsuperuser role assigned to them before attempting an
upgrade: (database: my_db, extension name: postgres_fdw, owner: some_user) |
משנים את הבעלים של התוסף באמצעות
ALTER EXTENSION postgres_fdw OWNER TO postgres;. |
תלות לא נתמכת
בטבלה הבאה מפורטות שגיאות נפוצות שקשורות לתלות לא נתמכת, שסביר שהבדיקה המקדימה לשדרוג הגרסה הראשית תמצא:
| סוג | דוגמה לשגיאה | רזולוציה |
|---|---|---|
| בעלות על טריגר לאירוע | Please ensure that the owners of all event triggers have the
cloudsqlsuperuser role assigned to them before attempting an upgrade:
(database: your_db, triggerName your_trigger, owner: non_super_user) |
מתחברים למסד הנתונים שזוהה באמצעות psql או Cloud SQL Studio ומשנים את הבעלים של הטריגר למשתמש postgres. |
| הצהרות מוכנות שלא בוצעו | Please commit/rollback the following usages of 'Uncommitted
Prepared Statements'... (database: my_db, gid: my_prepared_xact) |
מבצעים commit או מבטלים את ההצהרה המוכנה. |
| דגלים שיצאו משימוש | Your installation contains deprecated flags for the new version
. These flags must be removed before attempting an upgrade: (database: %s,
Flag name: %s) |
מסירים את הדגל של מסד הנתונים מהגדרות המופע. |
חוסר תאימות של מסדי נתונים
בטבלה הבאה מפורטות שגיאות נפוצות שקשורות לחוסר תאימות של פורמט הנתונים, שאולי יתגלו במהלך הבדיקה המקדימה לשדרוג הגרסה הראשית:
| סוג | דוגמה לשגיאה | רזולוציה |
|---|---|---|
| סוג נתונים לא ידוע | Please remove the following usages of 'Unknown' data types
before attempting an upgrade: (database: my_db, relation: my_table,
attribute: my_column) |
מסירים את העמודה או הטבלה, או משנים את סוג הנתונים של הטבלה באמצעות
ALTER TABLE my_table ALTER COLUMN my_column TYPE TEXT;. |
סוג הנתונים של reg* |
Please remove the following usages of 'reg*' data types before
attempting an upgrade: (database: my_db, relation: my_table, attribute:
my_column) |
מסירים את העמודה או משנים את סוג הנתונים שלה. |
| סוג הנתונים שהוסר | Please remove the following usages of 'sql_identifier' data
types before attempting an upgrade: ... |
להמיר ל-TEXT, ל-timestamptz או לסוג נתונים מתאים אחר. |
aclitem פורמט פנימי |
Please remove the following usages of 'aclitem' data types before attempting an upgrade: ... |
להפסיק להשתמש ב-aclitem בהגדרות של טבלאות מסד הנתונים. |
| סוגי נתונים מורכבים שהוגדרו על ידי המערכת | Please remove the following usages of 'composite' data types
before attempting an upgrade: (database: my_db, relation: my_table,
attribute: my_column) |
משנים את העמודות שזוהו כך שישתמשו בסוג מורכב שהוגדר על ידי המשתמש או בסוג נתונים רגיל. יכול להיות שסוגים מורכבים של מערכות לא יהיו עקביים בין גרסאות ראשיות. |
טבלאות עם OIDS |
Please remove the following usages of tables with OIDs before attempting an upgrade: (database: my_db, relation: my_table) |
תעדכן את הטבלה באמצעות ALTER TABLE my_table SET WITHOUT OIDS;. |
אופרטורים postfix שהמשתמש מגדיר |
Please remove the following usages of 'postfix operators'
before attempting an upgrade: (database: my_db, operation id: 12345,
operation namespace: public, operation name: !!, type namespace:
public, type name: mytype) |
מסירים את האופרטורים המותאמים אישית postfix. יכול להיות שתצטרכו לכתוב מחדש את הקוד כדי להשתמש באופרטורים של קידומת או בקריאות לפונקציות במקום זאת. |
| פונקציות פולימורפיות לא תואמות | Please remove the following usages of 'incompatible polymorphic'
functions before attempting an upgrade: (database: my_db, object kind:
function, object name: public.my_poly_func) |
מסירים או משנים את הפונקציה כדי להסיר פונקציות פולימורפיות לא תואמות. יכול להיות שתצטרכו לשנות את חתימות הפונקציות או את הלוגיקה כדי שהן יפעלו עם Cloud SQL ל-PostgreSQL בגרסה 14 ואילך. |
| המרות קידוד שהוגדרו על ידי המשתמש | Please remove the following usages of user-defined encoding
conversions before attempting an upgrade: (database: my_db, namespace
name: public, encoding conversions name: my_encoding_conv) |
מסירים את ההמרה של הקידוד שהוגדר על ידי המשתמש. יכול להיות שתצטרכו ליצור אותו מחדש אחרי השדרוג עם חתימה שפועלת עם הגרסה החדשה. |
| בדיקה אם יש הפניה לא ברורה לעמודה | מערכת Cloud SQL בודקת באופן אוטומטי אם יש תצוגות שהוגדרו על ידי המשתמש ומסתמכות על תצוגות של קטלוג המערכת. המבנה של העמודות בתצוגות האלה של קטלוג המערכת עשוי להשתנות בין גרסאות ראשיות.Please remove the following usages of views that depend on functions returning data types of pg_stat_activity before attempting an upgrade: (database: my_db, schema name: public, view name: my_stat_activity_view)
|
מחפשים את התצוגות המפורטות בהודעת השגיאה ומסירים אותן באמצעות הפקודה DROP VIEW. אחרי השדרוג, צריך ליצור מחדש את התצוגות. |
| טבלאות שלא נרשמו עם עמודות שנוצרו או רצפים שנרשמו | Please drop the following usages of 'Unlogged Tables with Logged
Sequence' before attempting an upgrade: (database: your_db, table name: problematic_table) |
אפשר להמיר את הטבלה ל-LOGGED או להסיר אותה באמצעות הפקודה DROP TABLE. אחרי השדרוג, יוצרים מחדש את הטבלה. |
| פתרון הבעיה של נתיב חיפוש ריק | Please update the search path of the 'll_to_earth' function (database: your_db, search path: ) |
ההרחבה earthdistance משתמשת ב-earth
וב-cube types בלי לציין את נתיב החיפוש של הפונקציה.
מעדכנים את נתיב החיפוש באמצעות התג ALTER FUNCTION ll_to_earth SET search_path = public;. |
שחזור המופע הראשי לגרסה הראשית הקודמת
אם מערכת מסד הנתונים המשודרגת לא פועלת כמצופה, יכול להיות שתצטרכו לשחזר את המופע הראשי לגרסה הקודמת. כדי לעשות זאת, משחזרים את הגיבוי שנוצר לפני השדרוג למכונת שחזור של Cloud SQL, שהיא מכונה חדשה שמופעלת בה הגרסה שלפני השדרוג.
כדי לשחזר את המופע הראשי לגרסה הקודמת:
מזהים את הגיבוי שלכם לפני השדרוג.
יוצרים מכונה לשחזור.
יוצרים מכונה חדשה של Cloud SQL באמצעות הגרסה הראשית שבה Cloud SQL פעל כשנוצר הגיבוי לפני השדרוג. מגדירים את אותם דגלים והגדרות של המופע שבהם נעשה שימוש במופע המקורי.
משחזרים את הגיבוי שנוצר לפני השדרוג.
משחזרים את הגיבוי שנוצר לפני השדרוג למופע השחזור. הפעולה עשויה להימשך כמה דקות.
מוסיפים את העותקים לקריאה.
אם אתם משתמשים בעותקים לקריאה, אתם צריכים להוסיף אותם בנפרד.
מקשרים את האפליקציה.
אחרי שמשחזרים את מערכת מסד הנתונים, מעדכנים את האפליקציה עם פרטים על מופע השחזור והעותקים לקריאה שלו. תוכלו להמשיך להציג תנועה בגרסה של מסד הנתונים שלכם לפני השדרוג.
שאלות נפוצות
יכול להיות שתיתקלו בשאלות הבאות כשמשדרגים את הגרסה הראשית של מסד הנתונים.
- כן. המופע לא יהיה זמין למשך תקופה מסוימת בזמן ש-Cloud SQL מבצע את השדרוג.
- כמה זמן נמשך השדרוג?
שדרוג של מופע יחיד נמשך בדרך כלל פחות מ-10 דקות. אם בהגדרת המכונה יש מספר קטן של מעבדים וירטואליים או זיכרון, יכול להיות שהשדרוג ייקח יותר זמן.
אם המכונה שלכם מארחת יותר מדי מסדי נתונים או טבלאות, או שמסדי הנתונים גדולים מאוד, יכול להיות שהשדרוג יימשך שעות או אפילו יפסיק לפעול בגלל חוסר זמן, כי משך השדרוג הכולל תלוי במספר האובייקטים במסדי הנתונים. אם יש לכם כמה מקרים שצריך לשדרג, זמן השדרוג יגדל באופן יחסי. אם כוללים העתקים משוכפלים בשדרוג, פעולת השדרוג יכולה להימשך עד שעה, בהתאם למספר ההעתקים המשוכפלים שמוגדרים במופע הראשי.
- האם אפשר לעקוב אחרי כל שלב בתהליך השדרוג?
- ב-Cloud SQL אפשר לעקוב אחרי התקדמות פעולת השדרוג, אבל אי אפשר לעקוב אחרי השלבים הנפרדים בכל שדרוג.
- האם אפשר לבטל את השדרוג אחרי שהתחלתי אותו?
- כן, אבל רק בתנאים מסוימים. אפשר לבטל את הפעולה במהלך שלב השדרוג הראשי. במאמר ביטול השדרוג של הגרסה הראשית מוסבר איך לזהות את חלון הזמן שבו אפשר לבטל את השדרוג. בנוסף, אין תמיכה בביטול אם כוללים רפליקות לקריאה עם המופע הראשי. כדי לשמור על האפשרות לבטל, צריך לשדרג בלי לכלול רפליקות לקריאה.
- מה קורה להגדרות שלי במהלך שדרוג?
כשמבצעים שדרוג של גרסה ראשית במקום, Cloud SQL שומר על הגדרות מסד הנתונים, כולל שם המכונה, כתובת ה-IP, ערכי הדגלים שהוגדרו במפורש ונתוני המשתמש. עם זאת, יכול להיות שערך ברירת המחדל של משתני המערכת ישתנה. לדוגמה, ערך ברירת המחדל של הדגל
password_encryptionב-PostgreSQL 13 ובגרסאות קודמות הואmd5. כשמשדרגים ל-PostgreSQL 14, ערך ברירת המחדל של הדגל הזה משתנה ל-scram-sha-256.מידע נוסף על הגדרת דגלים של מסד נתונים אם דגל או ערך מסוימים כבר לא נתמכים בגרסת היעד, מערכת Cloud SQL מסירה את הדגל באופן אוטומטי במהלך השדרוג, בתנאי שלא הגדרתם את הדגל. אם הגדרתם דגל שלא נתמך בגרסת היעד, תצטרכו להסיר את הדגל לפני השדרוג.