ביצוע שדרוג של גרסה משנית של מסד נתונים ב-AlloyDB Omni ב-Kubernetes

בחירת גרסה של מאמר העזרה:

בדף הזה מוסבר איך לבצע שדרוג של גרסה משנית של מסד נתונים ב-AlloyDB Omni ב-Kubernetes.

יש שתי אפשרויות לשדרוג גרסה משנית של מסד נתונים:

  • שדרוג עם זמן השבתה קצר: התכונה הזו נמצאת בגרסת טרום-השקה. בסביבות זמינות גבוהה (HA) שמופעלות ב-AlloyDB Omni מגרסה 15.7.1 ואילך, המכונות במצב המתנה ישודרגו קודם. לאחר מכן, האופרטור של AlloyDB Omni מבצע מעבר גיבוי לשחזור, ומקדם את אחד ממופעי ההמתנה המשודרגים להיות המופע הראשי החדש. אחרי שהמעבר יצליח, המופע הראשי הישן שלכם יתעדכן.

    התהליך הזה מבטיח שזמן ההשבתה במהלך השדרוג יהיה מינימלי.

  • שדרוג בו-זמני: שיטת השדרוג בו-זמני זמינה לכולם (GA). בכל שאר המקרים, האופרטור של AlloyDB Omni משדרג את כל המופעים בו-זמנית. המשמעות היא שתהיה השבתה במהלך השדרוג.

מגבלות

כשמשתמשים בשדרוגים עם זמן השבתה קצר, מכונת המתנה אחת לא זמינה בכל רגע נתון. כדי לוודא שאשכול מסד הנתונים לא יגיע ליעד של אפס נקודות שחזור (RPO) ולא יסתכן באובדן נתונים, באשכול מסד הנתונים צריך להיות מופע ראשי אחד ולפחות שני מופעי המתנה.

לפני שמתחילים

  • אם האשכול שלכם הוא HA והגרסה של AlloyDB Omni ישנה יותר מ-15.7.1, צריך לפעול לפי השלבים שמפורטים במאמר עדכון אשכולות מסדי נתונים לפני שמבצעים את תהליך השדרוג הזה של גרסה משנית.
  • מזהים תקופה של נפח תנועה נמוך שבה אפשר לבצע את השדרוג של הגרסה המשנית.
  • כדי למנוע אובדן נתונים, מגבים את הנתונים.

הפעלת תהליך שדרוג גרסת מסד הנתונים המשני עם זמן השבתה קצר

כדי להפעיל את תהליך השדרוג של גרסת מסד הנתונים המשנית עם זמן השבתה קצר, מוסיפים את ההערה הבאה לאשכול מסד הנתונים.

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
dbcluster.dbadmin.goog/enableLDTM=true

מחליפים את המשתנה הבא:

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שסיפקתם כשנוצר. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni ב-Kubernetes.

שדרוג גרסת AlloyDB Omni

כדי לשדרג את גרסה 17.5.0, צריך לעדכן את השדות databaseVersion ו-controlPlaneAgentsVersion בקובץ המניפסט של האשכול, ואז להחיל מחדש את הקובץ.

זוהי תחילתו של קובץ מניפסט שמציין את גרסה 17.5.0 עבור databaseVersion ואת גרסה 1.6.3 עבור controlPlaneAgentsVersion:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
    name: DB_CLUSTER_NAME
spec:
    databaseVersion: "DB_VERSION"
    controlPlaneAgentsVersion: "CONTROL_PLANE_AGENTS_VERSION"
    # It is recommended to switch to UBI9 for improved security and
    # compatibility.
    # If you need to stick to Debian, set this field to "Debian".
    databaseImageOSType: "OS_TYPE"
...

מחליפים את המשתנה הבא:

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שסיפקתם כשנוצר. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni ב-Kubernetes.
  • DB_VERSION: הגרסה של מסד הנתונים שמשדרגים אליה.
  • CONTROL_PLANE_AGENTS_VERSION: הגרסה של סוכני מישור הבקרה.
  • OS_TYPE: אופציונלי. מערכת ההפעלה הבסיסית של תמונת מסד הנתונים. הערכים החוקיים הם Debian ו-UBI9. אם לא מציינים את הערך הזה, האופרטור מגדיר אותו אוטומטית ל-Debian אם databaseVersion קטן מ-16.9.0, ול-UBI9 אם databaseVersion גדול מ-16.9.0 או שווה לו.

מעקב אחר תהליך השדרוג

אחרי שמעדכנים את קובץ המניפסט, האופרטור של AlloyDB Omni מתחיל את תהליך השדרוג. כדי לעקוב אחרי תהליך השדרוג, בודקים את התנאי DBCUpgradeInProgress.

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "DBCUpgradeInProgress")'

מחליפים את המשתנה הבא:

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שסיפקתם כשנוצר. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni ב-Kubernetes.

במהלך התהליך, הסטטוס הוא true. בסיום התהליך, הסטטוס של התנאי משתנה ל-false.

פתרון בעיות

אם קיבלתם הודעות על כשלים במהלך תהליך השדרוג, כדאי לעיין בקטעים הבאים:

כשלים לפני השדרוג

אם אתם מקבלים הודעה על כשל לפני השדרוג באשכול מסד הנתונים, צריך לבדוק את ההודעה ולטפל בבעיה בהתאם.

אם רוצים לעקוף את הודעת השגיאה שלפני השדרוג, אפשר להפעיל את ההערה force-upgrade.

kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/force-upgrade=true

מחליפים את המשתנה הבא:

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שסיפקתם כשנוצר. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni ב-Kubernetes.

אחרי שתהליך השדרוג מסתיים, מגדירים את ההערה force-upgrade לערך false.

כשלים בשדרוג

במהלך תהליך השדרוג האוטומטי, יש כמה נקודות שבהן הוא עלול להיכשל בסביבות HA. בטבלה הבאה מופיע מידע נוסף על כל תרחיש כשל ועל הפעולות הבאות שמבצע האופרטור של AlloyDB Omni.

הודעת כשל תיאור פעולות נדרשות של המשתמש
standby instance upgrade succeeded but the replication lag of the standby(s) is too high to be promoted to synchronous standby(s)

תהליך השדרוג הצליח, אבל מופע ההמתנה לא הצליח להדביק את המופע הראשי כדי ליצור שכפול סינכרוני.

נפח תנועה גבוה מגיע למופע הראשי. ככל שנפח התנועה קטן, מופע ההמתנה מתעדכן בהדרגה. אחרי שזה קורה, התנאי HAReady הופך ל-true.

בוחרים באפשרות Fix primary and standby instances with different minor versions .

all standbys upgrade succeeded but the switchover instance failed to promote an upgraded standby.

השדרוג של המופעים במצב המתנה הושלם בהצלחה, אבל תהליך המעבר נכשל.

  1. בודקים את הסטטוס של המשאב המותאם אישית של המעבר כדי לגלות מה גרם לכשל.
  2. בוחרים באפשרות Fix primary and standby instances with different minor versions .
standby instance upgrade failed but rollback succeeded.

השדרוג של מופע ההמתנה לא בוצע בהצלחה, אבל האופרטור של AlloyDB Omni שחזר אותו לגרסה הקודמת בהצלחה.

  1. בודקים את הודעות השגיאה של השדרוג.
  2. בוחרים באפשרות Fix primary and standby instances with different minor versions .
standby instance upgrade failed and rollback failed.

השדרוג של מופע ההמתנה לא הצליח, והאופרטור של AlloyDB Omni לא יכול לשחזר את המופע לגרסה הקודמת שלו.

כדי לפתור את הבעיה, צריך לפנות לתמיכה של Google.

פתרון בעיות במכונות ראשיות ובמכונות במצב המתנה עם גרסאות משניות שונות

כדי לפתור את הבעיה, בוחרים אחת מהאפשרויות הבאות:

  • אם הבעיה שגרמה לכשל בשדרוג נפתרה, נסו לשדרג שוב.

    כדי לנסות שוב לשדרג, צריך להסיר את ההערה start-time של השדרוג מהמופע. אחרי שמסירים את ההערה, האופרטור AlloyDB Omni יוצר זמן התחלה חדש ומפעיל מחדש את תהליך השדרוג.

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME upgrade.alloydbomni.dbadmin.google/start-time-
    

    מחליפים את המשתנה הבא:

    • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זהו אותו שם של אשכול מסדי הנתונים שסיפקתם כשנוצר. מידע נוסף זמין במאמר בנושא התקנת AlloyDB Omni ב-Kubernetes.
  • אם הבעיה שגרמה לכשל בשדרוג נמשכת, צריך לשנמך את המופע לגרסה הקודמת של AlloyDB Omni Operator.

    כדי לשנמך את המופע, פועלים לפי תהליך השדרוג ומשנים את השדות databaseVersion,‏ controlPlaneAgentsVersion ו-databaseImageOSType בקובץ המניפסט לגרסה שבה השתמשתם קודם.