גיבויים של Spanner Omni

ב-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 AM UTC והערך של createTime הוא חותמת זמן בחלון של ארבע שעות בין 7:00 AM UTC ל-11:00 AM UTC.

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

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

הגיבויים של 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, צריך לוודא שיש לכם את הפריטים הבאים:

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

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

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

  • ‫EXTERNAL_STORAGE_ID: מזהה ייחודי של הגדרת האחסון החיצוני, לדוגמה gcp-gcs-backup-target.
  • ‫BUCKET_NAME: השם של קטגוריית היעד ב-Cloud Storage.

יצירת אחסון חיצוני שתואם ל-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

ייבוא הגיבוי

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

  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=RETENTION_PERIOD
    

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

    • ‫BACKUP_NAME: שם לגיבוי המיובא.
    • ‫EXTERNAL_STORAGE_ID: המזהה של הגדרת האחסון החיצוני.
    • ‫BACKUP_DESCRIPTOR: מזהה התיאור שהוחזר בשלב הקודם.
    • ‫RETENTION_PERIOD: משך הזמן לשמירת הגיבוי, לדוגמה 24h או 30d.

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

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

ב-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

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

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

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

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

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

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

המאמרים הבאים