גיבוי ושחזור ב-Kubernetes

בוחרים גרסה של התיעוד:

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

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

הפעלה ותזמון של גיבויים

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

  • המיקום שבו האופרטור של AlloyDB Omni מאחסן גיבויים. האחסון יכול להיות מקומי לאשכול Kubernetes או לקטגוריה של Cloud Storage.

  • אפשרות להגדיר כמה לוחות זמנים לגיבוי שיוצרים באופן אוטומטי גיבויים של full, incremental ו-differential. אפשר להשהות את התזמון הזה בכל שלב, כולל כשמגדירים את תוכנית הגיבוי בפעם הראשונה. אם תוכנית גיבוי מושהית, לא נוצרים גיבויים מתוזמנים, אבל עדיין אפשר להשתמש בה כדי ליצור גיבויים באופן ידני.

    אם לא מציינים לוחות זמנים לגיבוי, ברירת המחדל היא ‎ "0 0 * * *"‎, שמבצעת גיבוי מלא יומי אחד בחצות, לפי השעה המקומית.

  • תקופת שמירה לגיבויים מאוחסנים. משך הזמן של הבדיקה נע בין יום אחד ל-90 יום. ערך ברירת המחדל הוא 14.

  • אתם יכולים ליצור גיבויים מאשכולות Kubernetes ראשיים או מאשכולות במצב המתנה, ולציין את הערך primary או standby בשדה backupSourceStrategy בהתאמה. כדי לשפר את הביצועים של האשכול הראשי, אפשר להעביר את פעולות הגיבוי לאשכול במצב המתנה על ידי תזמון שלהן ממנו.

לכל סוג של מיקום גיבוי (מקומי או תואם ל-Cloud Storage/S3) יכולה להיות תוכנית גיבוי אחת, עם שם והגדרה משלה. אם יוצרים כמה משאבי backupPlan עם לוחות זמנים שונים לגיבוי של אשכול מסד נתונים, צריך להגדיר מיקום גיבוי ייחודי לכל משאב גיבוי.

יצירת תוכנית לאחסון גיבויים באופן מקומי

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

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: BackupPlan
    metadata:
      name: BACKUP_PLAN_NAME
      namespace: NAMESPACE
    spec:
      dbclusterRef: DB_CLUSTER_NAME
      backupSchedules:
        full: "FULL_CRON_SCHEDULE"
        differential: "DIFF_CRON_SCHEDULE"
        incremental: "INCR_CRON_SCHEDULE"
      backupRetainDays: RETENTION_DAYS
      backupSourceStrategy: SOURCE_STRATEGY
      paused: PAUSED_BOOLEAN

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

  • BACKUP_PLAN_NAME: שם של משאב תוכנית הגיבוי, לדוגמה backup-plan-1.

  • NAMESPACE: מרחב השמות של Kubernetes לתוכנית הגיבוי הזו. הוא חייב להיות זהה למרחב השמות של אשכול מסד הנתונים.

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.

  • FULL_CRON_SCHEDULE: תזמון גיבוי ליצירת גיבוי מלא, שמכיל את כל הנתונים, בפורמט cron. לדוגמה, אם מגדירים את הערך '0 0 * * 0', גיבוי מלא יתבצע בכל יום ראשון בשעה 00:00.

  • DIFF_CRON_SCHEDULE: תזמון גיבויים ליצירת גיבויים שהם בתחילה גיבויים מלאים. הגיבויים הבאים הם דיפרנציאליים, על סמך שינויים שהתרחשו בנתונים, בפורמט cron. לדוגמה, אם מגדירים את האפשרות ל-0 22 * * 3, מתבצע גיבוי דיפרנציאלי בכל יום רביעי בשעה 22:00.

  • INCR_CRON_SCHEDULE: תזמון גיבוי ליצירת גיבויים שכוללים נתונים שהשתנו מאז הגיבוי המלא, הדיפרנציאלי או המצטבר האחרון. הערך צריך להיות בפורמט cron. לדוגמה, אם מגדירים את הערך ל-‎0 21 * * *‎, מתבצע גיבוי מצטבר בכל יום בשעה 21:00.

  • RETENTION_DAYS: מספר הימים שבהם האופרטור של AlloyDB Omni שומר את הגיבוי הזה. הערך חייב להיות מספר שלם בין 1 ל-90. ערך ברירת המחדל הוא 14.

  • SOURCE_STRATEGY: קובע אם הגיבויים מתבצעים מאשכול Kubernetes הראשי או מאשכול Kubernetes במצב המתנה. ערך ברירת המחדל הוא primary. אפשר לבחור מבין הערכים הבאים:

    • primary: הגיבויים מתבצעים מאשכול Kubernetes הראשי.

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

  • PAUSED_BOOLEAN: מציין אם תוכנית הגיבוי מושהית או לא. מציינים אחד מהערכים הבאים:

    • true: הגיבויים מושהים ולא נוצרים גיבויים מתוזמנים.

    • false: האופרטור של AlloyDB Omni יוצר גיבויים לפי התזמון שצוין ב-cronSchedule. זהו ערך ברירת המחדל, אם לא מציינים במפורש את הערך true.

    ערך ברירת המחדל הוא false.

יצירת תוכנית לאחסון גיבויים ב-Cloud Storage

כדי להפעיל גיבויים שמאוחסנים ב-Cloud Storage, פועלים לפי השלבים הבאים:

  1. יצירת קטגוריה של Cloud Storage חשוב לזכור את השם שנותנים לקטגוריה, כי תצטרכו להשתמש בו בהמשך.

  2. יוצרים חשבון שירות כדי להוסיף גיבויים לדלי.

  3. מקצים לחשבון השירות את התפקיד storage.objectAdmin בניהול זהויות והרשאות גישה.

  4. יוצרים מפתח לחשבון השירות.המפתח הפרטי יורד לסביבה המקומית.

  5. משנים את השם של קובץ המפתח שהורדתם ל-key.json.

  6. יוצרים סוד ב-Kubernetes שמכיל את המפתח הפרטי:

    kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACE

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

    • SECRET_NAME: השם של סוד Kubernetes שאתם יוצרים. לדוגמה, gcs-key.

    • KEY_PATH: הנתיב במערכת הקבצים המקומית לקובץ key.json שהורדתם בשלבים הקודמים.

    • NAMESPACE: מרחב השמות של אשכול מסד הנתונים.

  7. מחילים את המניפסט הבא:

      apiVersion: alloydbomni.dbadmin.goog/v1
      kind: BackupPlan
      metadata:
        name: BACKUP_PLAN_NAME
        namespace: NAMESPACE
      spec:
        dbclusterRef: DB_CLUSTER_NAME
        backupSchedules:
          full: "FULL_CRON_SCHEDULE"
          differential: "DIFF_CRON_SCHEDULE"
          incremental: "INCR_CRON_SCHEDULE"
        backupRetainDays: RETENTION_DAYS
        backupSourceStrategy: SOURCE_STRATEGY
        paused: PAUSED_BOOLEAN
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: BUCKET_URL
            key: BACKUP_PATH
            secretRef:
              name: SECRET_NAME
              namespace: NAMESPACE
    

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

    • BACKUP_PLAN_NAME: שם של משאב תוכנית הגיבוי, לדוגמה backup-plan-1.

    • NAMESPACE: מרחב השמות של Kubernetes לתוכנית הגיבוי הזו. הוא חייב להיות זהה למרחב השמות של אשכול מסד הנתונים.

    • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.

    • FULL_CRON_SCHEDULE: תזמון גיבוי ליצירת גיבוי מלא, שמכיל את כל הנתונים, בפורמט cron. לדוגמה, אם מגדירים את הערך '0 0 * * 0', גיבוי מלא יתבצע בכל יום ראשון בשעה 00:00.

    • DIFF_CRON_SCHEDULE: תזמון גיבויים ליצירת גיבויים שהם בתחילה גיבויים מלאים. הגיבויים הבאים הם דיפרנציאליים, על סמך שינויים שהתרחשו בנתונים, בפורמט cron. לדוגמה, אם מגדירים את האפשרות ל-0 22 * * 3, מתבצע גיבוי דיפרנציאלי בכל יום רביעי בשעה 22:00.

    • INCR_CRON_SCHEDULE: תזמון גיבוי ליצירת גיבויים שכוללים נתונים שהשתנו מאז הגיבוי המלא, הדיפרנציאלי או המצטבר האחרון. הערך צריך להיות בפורמט cron. לדוגמה, אם מגדירים את הערך ל-‎0 21 * * *‎, מתבצע גיבוי מצטבר בכל יום בשעה 21:00.

    • RETENTION_DAYS: מספר הימים שבהם האופרטור של AlloyDB Omni שומר את הגיבוי הזה. הערך חייב להיות מספר שלם בין 1 ל-90. ערך ברירת המחדל הוא 14.

    • SOURCE_STRATEGY: קובע אם הגיבויים מתבצעים מאשכול Kubernetes הראשי או מאשכול Kubernetes במצב המתנה. ערך ברירת המחדל הוא primary. אפשר לבחור מבין הערכים הבאים:

      • primary: הגיבויים מתבצעים מאשכול Kubernetes הראשי.

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

    • PAUSED_BOOLEAN: מציין אם תוכנית הגיבוי מושהית או לא. מציינים אחד מהערכים הבאים:

      • true: הגיבויים מושהים ולא נוצרים גיבויים מתוזמנים.

      • false: האופרטור של AlloyDB Omni יוצר גיבויים לפי התזמון שצוין ב-cronSchedule. זהו ערך ברירת המחדל, אם לא מציינים במפורש את הערך true.

      ערך ברירת המחדל הוא false.

    • BUCKET_URL: השם של הקטגוריה ב-Cloud Storage שיצרתם בשלב קודם. זו לא כתובת ה-URL המלאה של הקטגוריה. אל תוסיפו את הקידומת gs:// לשם הקטגוריה.

    • BACKUP_PATH: הנתיב של הספרייה שבה האופרטור של AlloyDB Omni כותב גיבויים, בתוך קטגוריית Cloud Storage. הנתיב חייב להיות מוחלט, ולהתחיל ב-/.

    • SECRET_NAME: השם שבחרתם לסוד של Kubernetes שיצרתם בשלב קודם.

יצירת גיבויים לאחסון שתואם ל-S3

אפשר להשתמש בשדה s30options כדי לשלוח גיבויים לנקודות קצה שתואמות ל-S3.

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

כדי להפעיל גיבויים באחסון שתואם ל-S3, פועלים לפי השלבים הבאים:

  1. יוצרים קטגוריית אחסון ב-S3. חשוב לזכור את השם שנותנים לקטגוריה, כי תצטרכו להשתמש בו בהמשך.
  2. כדי לגשת לקטגוריית האחסון S3, צריך ליצור חשבון משתמש, למשל חשבון שירות או משתמש. כדאי לבדוק אצל ספק S3 אם צריך להעניק לחשבון המשתמש תפקיד או מדיניות מוגדרים מראש.
  3. נותנים הרשאת קריאה וכתיבה לחשבון המשתמש שיצרתם בשלב הקודם. בשלב הזה תוכלו לקרוא ולכתוב בדלי האחסון של S3.
  4. יוצרים מפתח גישה עבור הגורם המרכזי שיצרתם. מפתח הגישה כולל מזהה מפתח וסוד מפתח. הפעולה הזו מורידה את המפתח לסביבה המקומית.
  5. יוצרים סוד של Kubernetes שמכיל את המפתח:

    kubectl create secret generic SECRET_NAME --from-literal=access-key-id=KEY_ID --from-literal=access-key=KEY -n NAMESPACE

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

    • SECRET_NAME: השם של סוד Kubernetes שאתם יוצרים, לדוגמה, s3-key.
    • KEY_ID: מזהה המפתח של מפתח הגישה.
    • KEY: הסוד של מפתח הגישה.
    • NAMESPACE: המרחב שבו נשמר שם הסוד. הערך הזה חייב להיות ייחודי.
  6. מחילים את המניפסט הבא:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: BackupPlan
    metadata:
      name: BACKUP_PLAN_NAME
      namespace: NAMESPACE
    spec:
      dbclusterRef: DB_CLUSTER_NAME
      backupSchedules:
        full: "FULL_CRON_SCHEDULE"
        differential: "DIFF_CRON_SCHEDULE"
        incremental: "INCR_CRON_SCHEDULE"
      backupRetainDays: RETENTION_DAYS
      backupSourceStrategy: SOURCE_STRATEGY
      paused: PAUSED_BOOLEAN
      backupLocation:
        type: S3
        s3Options:
          bucket: BUCKET_NAME
          region: REGION
          endpoint: S3ENDPOINT
          key: BACKUP_PATH
          secretRef:
            namespace: NAMESPACE
            name: SECRET_NAME
          certRef:
            name: CA_BUNDLE_SECRET_NAME
            namespace: NAMESPACE
    

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

    • BACKUP_PLAN_NAME: שם של משאב תוכנית הגיבוי, לדוגמה, backup-plan-1.
    • NAMESPACE: מרחב השמות של Kubernetes לתוכנית הגיבוי הזו. מרחב השמות חייב להיות זהה למרחב השמות של אשכול מסד הנתונים.
    • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.
    • FULL_CRON_SCHEDULE: לוח זמנים לגיבוי ליצירת גיבוי מלא, שמכיל את כל הנתונים, בפורמט cron. לדוגמה, כדי לבצע גיבוי מלא בכל יום ראשון בשעה 00:00, מגדירים את FULL_CRON_SCHEDULE ל-
      0 0 * * 0.
    • DIFF_CRON_SCHEDULE: תזמון גיבוי ליצירת גיבויים שהם גיבויים מלאים בהתחלה. גיבויי המשנה הם דיפרנציאליים, ומבוססים על שינויים שהתרחשו בנתונים, בפורמט cron. לדוגמה, כדי לבצע גיבוי דיפרנציאלי בשעה 22:00 בכל יום רביעי, צריך להגדיר 0 22 * * 3 .
    • INCR_CRON_SCHEDULE: תזמון גיבויים ליצירת גיבויים שכוללים נתונים שהשתנו מאז הגיבוי המלא, הדיפרנציאלי או המצטבר האחרון. הערך הזה מופיע בפורמט cron. לדוגמה, כדי לבצע גיבוי מצטבר בכל יום בשעה 21:00, מגדירים את הערך הזה ל-0 21 * * * .
    • RETENTION_DAYS: מספר הימים שבהם האופרטור של AlloyDB Omni Kubernetes שומר את הגיבוי הזה. הפרמטר הזה חייב להיות מספר שלם בין 1 ל-90. ערך ברירת המחדל הוא 14.
    • SOURCE_STRATEGY: קובע אם הגיבויים מתבצעים מאשכול Kubernetes הראשי או מאשכול Kubernetes במצב המתנה. ערך ברירת המחדל הוא primary. אפשר לבחור מבין הערכים הבאים:
      • primary: הגיבויים מתבצעים מאשכול Kubernetes הראשי.
      • standby: הגיבויים מתבצעים מאשכול Kubernetes במצב המתנה. אם אין מופע במצב המתנה כשהשדה SOURCE_STRATEGY מוגדר לערך standby, הגיבוי מתבצע במקום זאת מאשכול Kubernetes הראשי.
    • PAUSED_BOOLEAN: מציין אם תוכנית הגיבוי מושהית או לא. מציינים אחד מהערכים הבאים:
      • true: הגיבויים מושהים ולא נוצרים גיבויים מתוזמנים.
      • false: ערך ברירת המחדל. האופרטור AlloyDB Omni יוצר גיבויים לפי לוח הזמנים שצוין על ידי cronSchedule. זה ערך ברירת המחדל, אם לא הוגדר במפורש true.
    • BUCKET_NAME: השם של קטגוריית האחסון ב-S3 שיצרתם. שם הקטגוריה הוא לא כתובת ה-URL המלאה של הקטגוריה. לא מוסיפים את הקידומת gs:// לשם הקטגוריה.
    • REGION: האזור שבו מאוחסנת קטגוריית ה-S3.
    • S3ENDPOINT: נקודת הקצה של קטגוריית האחסון ב-S3.
    • BACKUP_PATH: הנתיב של הספרייה שאליה האופרטור של AlloyDB Omni כותב גיבויים, בתוך קטגוריית האחסון ב-S3. הנתיב חייב להיות מוחלט, והוא חייב להתחיל ב-/.
    • NAMESPACE: המרחב שבו שם הסוד חייב להיות ייחודי.
    • SECRET_NAME: השם שבחרתם לסוד של Kubernetes שיצרתם.
    • CA_BUNDLE_SECRET_NAME: מאגר של אישורי CA בקידוד PEM שהשרת של S3 משתמש בו כדי לאמת את האישור. מוודאים שהחבילה כלולה בסוד מתחת למפתח בשם ca.crt.

      בדוגמה הבאה אפשר לראות איך יוצרים סוד שמכיל את האישור, כאשר PEM_FILE_PATH הוא הנתיב לקובץ החבילה ca:

      kubectl create secret generic CA_BUNDLE_SECRET_NAME -n NAMESPACE --from-file=ca.crt=PEM_FILE_PATH
      

יצירת גיבוי באופן ידני

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

כדי ליצור גיבוי באופן ידני מאשכול Kubernetes ראשי או מגיבוי, צריך לציין את מופע מסד הנתונים של המקור לגיבוי באמצעות השדה backupSourceRole ולהחיל את המניפסט הבא:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: Backup
metadata:
  name: BACKUP_NAME
  namespace: NAMESPACE
spec:
  dbclusterRef: DB_CLUSTER_NAME
  backupPlanRef: BACKUP_PLAN_NAME
  manual: true
  backupSourceRole: SOURCE_ROLE
  physicalBackupSpec:
    backupType: BACKUP_TYPE

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

  • BACKUP_NAME: שם לגיבוי הזה, לדוגמה backup-1.

  • NAMESPACE: מרחב השמות של Kubernetes של השחזור הזה. הוא צריך להיות זהה למרחב השמות של אשכול מסד הנתונים.

  • BACKUP_PLAN_NAME: השם של משאב תוכנית הגיבוי שאליו שייך הגיבוי הזה. השם צריך להיות זהה לשם שבחרתם כשיצרתם את תוכנית הגיבוי.

  • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.

  • SOURCE_ROLE: מציין את התפקיד של מופע מסד הנתונים של המקור שממנו נוצר הגיבוי הידני. ערך ברירת המחדל הוא primary. אפשר לבחור באחד מהערכים הבאים:

    • primary: הגדרת הגיבוי מאשכול Kubernetes הראשי.
    • standby: הגדרת הגיבוי מאשכול Kubernetes במצב המתנה.
  • BACKUP_TYPE: מציין את סוג הגיבוי הידני שרוצים ליצור. בוחרים אחד מהערכים הבאים:

    • full: יוצר גיבוי מלא שמכיל את כל הנתונים.

    • diff: יוצר גיבוי דיפרנציאלי שתלוי בגיבוי המלא האחרון. גיבויי המשנה הם דיפרנציאליים, ומבוססים על שינויים שהתרחשו בנתונים מאז הגיבוי הקודם.

    • incr: יוצר גיבוי מצטבר שתלוי בגיבוי המלא או בגיבוי ההפרש הקודם, כדי לכלול נתונים שהשתנו מאז הגיבוי המלא או גיבוי ההפרש האחרון.

מעקב ורישום ביומן של הגיבויים

תוכניות הגיבוי והגיבויים הם משאבים באשכול Kubernetes. כדי לראות מידע עליהם, משתמשים בפקודה kubectl get.

צפייה בסיכום של תוכנית גיבוי

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

kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE

מחליפים את NAMESPACE במרחב השמות של אשכול מסד הנתונים.

הפלט אמור להיראות כך:

NAME               PHASE   LASTBACKUPTIME         NEXTBACKUPTIME
backup-plan-prod   Ready   2023-10-26T17:26:43Z   2023-10-27T00:00:00Z

צפייה ברשימת הגיבויים

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

kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE

מחליפים את NAMESPACE במרחב השמות של אשכול מסד הנתונים.

הפלט אמור להיראות כך:

NAME                              PHASE       COMPLETETIME
backup-plan-prod-20231026172643   Succeeded   2023-10-26T17:26:53Z
manual-backup-1                   Succeeded   2023-10-26T18:15:27Z
manual-backup-2                   InProgress

כל שורה בטבלת הפלט מייצגת משאב גיבוי, עם המאפיינים הבאים:

  • שם הגיבוי.
  • מצב הגיבוי, כאשר Succeeded מציין גיבוי שמוכן לשחזור.
  • חותמת הזמן של יצירת הגיבוי.

שחזור מגיבוי

‫AlloyDB Omni מאפשר לכם לשחזר מגיבויים פרטניים או לשכפל אשכול באמצעות גיבוי מנקודת זמן ספציפית.

שחזור מגיבוי עם שם

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

  1. רשימה של כל הגיבויים שהשלב שלהם הוא Succeeded.

    kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded

    מחליפים את NAMESPACE במרחב השמות של אשכול מסד הנתונים.

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

    backup-plan-prod-20231026172643   Succeeded   2023-10-26T17:26:53Z
    manual-backup-1                   Succeeded   2023-10-26T18:15:27Z
    
  2. בוחרים אחד מהגיבויים שמופיעים בשלב הקודם כגיבוי שממנו רוצים לשחזר. חשוב לשים לב לשם של מערך הנתונים – תצטרכו להזין אותו בשלב הבא.

  3. מחילים את המניפסט הבא:

      apiVersion: alloydbomni.dbadmin.goog/v1
      kind: Restore
      metadata:
        name: RESTORE_NAME
        namespace: NAMESPACE
      spec:
        sourceDBCluster: DB_CLUSTER_NAME
        backup: BACKUP_NAME
    

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

    • RESTORE_NAME: שם לשימוש במשאב data-restore שהמניפסט הזה יוצר – לדוגמה, restore-1.

    • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.

    • BACKUP_NAME: השם של הגיבוי שבחרתם בשלב הקודם.

שיבוט אשכול מנקודת זמן מסוימת

אופרטור AlloyDB Omni מאפשר לשכפל נתונים של אשכול מכל נקודת זמן בחלון שחזור. אורך חלון השחזור נקבע ישירות לפי תקופת השמירה.

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

  1. עוקבים אחרי חלון השחזור כדי לזהות את נקודת השחזור:

    kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
    

    זוהי דוגמה לתשובה:

    recoveryWindow:
    begin: "2024-01-31T02:54:35Z"
    

    ערך חותמת הזמן בפורמט חותמת הזמן RFC 3339 משמש במשאב השחזור.

  2. יוצרים ומחילים את מניפסט משאבי השחזור הבא:

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: Restore
    metadata:
      name: RESTORE_NAME
      namespace: NAMESPACE
    spec:
      sourceDBCluster: DB_CLUSTER_NAME
      pointInTime: "DATE_AND_TIME_STAMP"
      clonedDBClusterConfig:
        dbclusterName: NEW_DB_CLUSTER_NAME
    

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

    • RESTORE_NAME: שם לשימוש במשאב data-restore שהמניפסט הזה יוצר – לדוגמה, restore-1.

    • DB_CLUSTER_NAME: השם של אשכול מסד הנתונים שהקציתם לו כשיצרתם אותו.

    • DATE_AND_TIME_STAMP: חותמת הזמן בפורמט RFC 3339 של הגיבוי הרציף שרוצים לשחזר ממנו, ברמת דיוק של דקה. לדוגמה: 2024-03-05T15:32:10Z.

    • NEW_DB_CLUSTER_NAME: השם של אשכול מסד הנתונים החדש.

צפייה בסטטוס השחזור

  1. כדי לראות את התקדמות פעולת השחזור:

    kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACE

    מחליפים את NAMESPACE במרחב השמות של אשכול מסד הנתונים.

    כדי להריץ את הפקודה באופן רציף, מוסיפים את הדגל -Aw.

    הפלט אמור להיראות כך:

    NAME        PHASE               COMPLETETIME   RESTOREDPOINTINTIME
    restore-1   RestoreInProgress
    

    אם הערך בעמודה PHASE בטבלת הפלט הוא ProvisionSucceeded, המשמעות היא שהשחזור הושלם.

  2. כדי לראות את התקדמות השחזור או השכפול של אשכול מסד הנתונים שעולה אונליין:

    kubectl get dbclusters -A -n NAMESPACE

    מחליפים את NAMESPACE במרחב השמות של אשכול מסד הנתונים.

    כדי להריץ את הפקודה באופן רציף, מוסיפים את הדגל -Aw.

    הפלט אמור להיראות כך:

    NAMESPACE   NAME               PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    default     db-cluster-1       10.128.0.55       Ready          DBClusterReady
    

    אם הערך בעמודה DBCLUSTERPHASE בטבלת הפלט הוא DBClusterReady, זה אומר שאפשר להשתמש באשכול מסד הנתונים ששוחזר או ששוכפל.

מחיקת גיבוי

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

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

  • הגיבוי הוא לא הגיבוי היחיד שמאוחסן בתוכנית הגיבוי. האופרטור של AlloyDB Omni דורש שיהיה לפחות גיבוי אחד לכל תוכנית גיבוי.

  • אין גיבויים אחרים שתלויים בגיבוי הזה. לדוגמה, גיבוי מלא עם גיבויים דיפרנציאליים או מצטברים שתלויים בו, או גיבוי מצטבר עם גיבויים דיפרנציאליים שתלויים בו.

כדי למחוק גיבוי, מריצים את הפקודה הבאה:

kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE

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

  • BACKUP_NAME: השם של הגיבוי שרוצים למחוק.

  • NAMESPACE: מרחב השמות של אשכול מסד הנתונים.

שינוי הגודל של דיסק גיבוי

כדי לשנות את הגודל של הדיסק המקומי שבו נשמרים הגיבויים באשכול Kubernetes, מבצעים את השלבים הבאים:

  1. מעדכנים את השדה resources.disks במניפסט DBCluster באופן הבא:

    spec:
      primarySpec:
        resources:
          disks:
            - name: BACKUP_DISK
              size: 10Gi
    

    מחליפים את BACKUP_DISK בשם הדיסק שבו מאוחסנות הגיבויים.

  2. מחילים את המניפסט כדי לאכוף את העדכון.

    האופרטור AlloyDB Omni מחיל את המפרטים המעודכנים על DBCluster באופן מיידי.

ההגבלות הבאות חלות על שינוי דיסק הגיבוי של אשכול מסדי נתונים פעיל:

  • אפשר להגדיל את הגודל של דיסק רק אם storageClass שצוין תומך בהרחבת נפח.
  • אי אפשר להקטין את הגודל של דיסק.

עדכון של תוכנית גיבוי

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

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

  • משתמשים בפקודה kubectl patch.

לדוגמה, כדי להשהות תוכנית גיבוי פעילה, משנים את מאפיין paused של מניפסט התוכנית ל-true, ואז מחילים מחדש את המניפסט.

מחיקת תוכנית גיבוי

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

kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACE

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

  • BACKUP_PLAN_NAME: השם של תוכנית הגיבוי שרוצים למחוק.

  • NAMESPACE: מרחב השמות של אשכול מסד הנתונים.

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