גיבויים של Spanner Omni

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

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

סקירה כללית על גיבוי של Spanner Omni

הגיבויים זמינים מאוד ואפשר לשמור אותם למשך עד שנה ממועד היצירה שלהם. לכל גיבוי יש createTime וversionTime משויכים. ‫createTime היא חותמת הזמן שבה Spanner Omni מתחיל ליצור את הגיבוי. ‫versionTime היא חותמת הזמן שבה הגיבוי מתעד את התוכן של מסד הנתונים. הגיבוי מכיל תצוגה עקבית של מסד הנתונים בנקודת הזמן versionTime.

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

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

לדוגמה, נניח שאתם יוצרים תזמון גיבוי עם תדירות של 0 7 * * * UTC (כל יום בשעה 7:00 UTC). כלומר, לכל גיבוי, הערך של versionTime הוא 7:00 UTC והערך של createTime הוא חותמת זמן בטווח של ארבע שעות בין 7:00 UTC ל-11:00 UTC.

תכונות עיקריות

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

  • עקביות בנתונים: הגיבויים של מסד נתונים של Spanner Omni הם עקביים מבחינת טרנזקציות ומבחינה חיצונית בנקודת הזמן versionTime של הגיבוי.

  • שכפול: קובצי הגיבוי מאוחסנים במערכת אחסון חיצונית, מחוץ לפריסת Spanner Omni.

  • תפוגה אוטומטית: לכל הגיבויים יש תאריך תפוגה שהמשתמש מגדיר, וזה התאריך שבו הגיבוי נמחק. ‫Spanner Omni מוחק גיבויים שתוקפם פג באופן אסינכרוני, כך שיכול להיות שיהיה עיכוב בין המועד שבו תוקף הגיבוי פג לבין המועד שבו הוא נמחק בפועל.

אחסון חיצוני

אחסון חיצוני מייצג אחסון מרוחק שנמצא מחוץ לפריסת Spanner Omni. אתם יכולים להגדיר את Amazon Simple Storage Service‏ (Amazon S3), את Cloud Storage או כל אחסון שתואם ל-Amazon S3 כאחסון חיצוני. קובצי הגיבוי מאוחסנים באחסון החיצוני הזה ב-Spanner Omni.

ניהול אחסון חיצוני

ניהול של אחסון חיצוני על ידי יצירה, מחיקה ורישום של מיקומי אחסון לגיבויים.

יצירת אחסון חיצוני

כדי ליצור אחסון חיצוני ב-Amazon S3, מריצים את הפקודה הבאה:

spanner external-storages create EXTERNAL_STORAGE_ID \
  --s3-bucket-name=BUCKET_NAME \
  --s3-region=AWS_REGION \
  --s3-assume-role-arn=ASSUME_ROLE_ARN

יצירת אחסון חיצוני ב-Cloud Storage

כדי ליצור אחסון חיצוני ב-Cloud Storage, מריצים את הפקודה הבאה:

spanner external-storages create EXTERNAL_STORAGE_ID \
   --gcs-bucket-name=BUCKET_NAME

יצירת אחסון חיצוני שתואם ל-Amazon S3

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

spanner external-storages create EXTERNAL_STORAGE_ID \
    --s3-compatible-bucket-name=BUCKET_NAME \
    --s3-compatible-endpoint=ENDPOINT \
    --s3-compatible-credential-file-path=FILE

מחיקת אחסון חיצוני

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

spanner external-storages delete EXTERNAL_STORAGE_ID

תיאור של אחסון חיצוני

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

spanner external-storages describe EXTERNAL_STORAGE_ID

רשימת התקני אחסון חיצוניים

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

spanner external-storages list

קובץ תיאור גיבוי

מתאר גיבוי מייצג את המטא-נתונים ואת נתיבי קובצי הגיבוי של גיבויים שהושלמו ושנשמרו באחסון חיצוני.

spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID

פרטי הגיבוי

כשיוצרים גיבוי, המטא-נתונים של הגיבוי נשמרים ב-Spanner Omni וקובצי הגיבוי נמצאים באחסון החיצוני.

גיבוי מכיל את המידע הבא ממאגר הנתונים בתאריך versionTime של הגיבוי:

  • גיבוי מלא מכיל את כל הנתונים.

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

  • כל האפשרויות של מסד הנתונים שמוגדרות באמצעות הפקודה ALTER DATABASE SET OPTIONS.

גיבוי של Spanner Omni לא כולל את המידע הבא:

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

  • כללי מדיניות של ניהול זהויות והרשאות גישה (IAM).

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

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

ניהול הגיבוי

כדי ליצור גיבויים, צריך את ההרשאות הבאות. צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפריסה:

פעולה תפקיד IAM
יצירה, הצגה, עדכון ומחיקה של גיבויים roles/spanner.backupAdmin
יצירה של גיבויים וצפייה בהם roles/spanner.backupWriter

יצירת גיבוי

יצירת גיבוי על פי דרישה.

spanner backups create BACKUP_NAME \
--database=DATABASE_ID \
--retention-period=RETENTION_PERIOD \
--async

מחיקת הגיבוי

מוחקים את המטא-נתונים ואת הקבצים של הגיבוי.

spanner backups delete BACKUP_NAME

תיאור הגיבוי

אחזור מידע על גיבוי.

spanner backups describe BACKUP_NAME

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

הצגת רשימה של גיבויים קיימים של Spanner Omni בפריסה.

spanner backups list

עדכון תאריך התפוגה של הגיבוי

עדכון תאריך התפוגה של גיבוי.

spanner backups update-metadata BACKUP_NAME \
--expiration-date=EXPIRATION_DATE

ייבוא גיבוי

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

  1. יוצרים אחסון חיצוני בפריסה החדשה שמשתמש באותה קטגוריה של Amazon S3 או קטגוריה של Cloud Storage מהפריסה המקורית.

    spanner external-storages create EXTERNAL_STORAGE_ID \
      --gcs-bucket-name=BUCKET_NAME
    
  2. הצגת רשימה של תיאורי הגיבוי באחסון החיצוני.

    spanner external-storages backup-descriptors list EXTERNAL_STORAGE_ID
    
  3. בוחרים את מתאר הגיבוי ומייבאים אותו לפריסה החדשה.

    spanner backups import BACKUP_NAME \
     --external-storage EXTERNAL_STORAGE_ID \
     --backup-descriptor BACKUP_DESCRIPTOR \
     --retention-period 24h
    

לוחות זמנים לגיבויים

‫Spanner Omni מאפשר לתזמן גיבויים מלאים של מסדי נתונים. אתם יכולים לציין את התדירות שבה Spanner Omni יוצר גיבויים בלוח הזמנים.

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

ניהול לוח הזמנים של הגיבוי

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

  • יצירה, הצגה, עדכון ומחיקה של לוחות זמנים לגיבוי: roles/spanner.backupAdmin

  • יצירה של לוחות זמנים לגיבוי וצפייה בהם: roles/spanner.backupWriter

יצירת לוח זמנים לגיבוי

יוצרים תזמון גיבוי חדש למסד הנתונים Spanner Omni.

spanner backup-schedules create SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

קבלת לוח זמנים לגיבוי

לקבל מידע על לוח זמנים ספציפי לגיבוי.

spanner backup-schedules describe SCHEDULE_ID --database=DATABASE_ID

הצגת רשימה של לוחות זמנים לגיבוי

רשימה של כל לוחות הזמנים של הגיבויים של מסד נתונים מסוים.

spanner backup-schedules list --database=DATABASE_ID

עדכון של לוח זמנים לגיבוי

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

spanner backup-schedules update SCHEDULE_ID \
  --database=DATABASE_ID \
  --retention-duration=RETENTION_DURATION \
  --cron="CRONTAB_EXPRESSION"

מחיקת לוח זמנים לגיבוי

מוחקים לוח זמנים לגיבוי ממסד הנתונים.

spanner backup-schedules delete SCHEDULE_ID --database=DATABASE_ID

הגדרת מדיניות בקרת גישה ב-IAM

הגדרת מדיניות בקרת הגישה ב-IAM ללוח זמנים של גיבוי.

spanner backup-schedules set-iam-policy SCHEDULE_ID \
  --database=DATABASE_ID \
  policy.json

קבלת מדיניות בקרת גישה ב-IAM

קבלת מדיניות בקרת הגישה ב-IAM ללוח זמנים של גיבוי.

spanner backup-schedules get-iam-policy SCHEDULE_ID --database=DATABASE_ID

השוואה בין אחסון גיבויים לבין אחסון מסדי נתונים

גודל האחסון של הגיבוי יכול להיות קטן או גדול יותר מגודל האחסון של מסד הנתונים של המקור בזמן היצירה.

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

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

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

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