ב-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 בפרויקט ב- Google Cloud .
- Google Cloud חשבון שירות שקיבל את התפקיד "אדמין של אובייקט אחסון" (
roles/storage.objectAdmin) בממשק לניהול זהויות והרשאות גישה (IAM) בקטגוריית היעד. מידע נוסף זמין במאמר תפקידי IAM ל-Cloud Storage. - פרטי כניסה לאימות שהוגדרו בסביבת Spanner Omni, כמו קובץ מפתח של חשבון שירות או פרטי כניסה שהוחלפו באמצעות איחוד שירותי אימות הזהות של עומסי עבודה. מידע נוסף על אימות מסביבות חיצוניות זמין במאמרים הגדרת איחוד שירותי אימות הזהות של עומסי עבודה באמצעות מכונות וירטואליות של AWS והגדרת איחוד שירותי אימות הזהות של עומסי עבודה באמצעות Kubernetes.
כדי לרשום את הקטגוריה של 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 או אם מחקתם את הפריסה המקורית – אתם יכולים לייבא גיבויים אם קובצי הגיבוי נשארים באחסון חיצוני:
יוצרים אחסון חיצוני בפריסה החדשה שמשתמש באותה קטגוריה של Amazon S3 או קטגוריה של Cloud Storage כמו הפריסה המקורית, לדוגמה:
spanner external-storages create EXTERNAL_STORAGE_ID \ --gcs-bucket-name=BUCKET_NAMEמציגים ברשימה את מתארי הגיבוי באחסון החיצוני:
spanner external-storages backup-descriptors list EXTERNAL_STORAGE_IDמייבאים את המטא-נתונים של הגיבוי לפריסה החדשה:
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
השוואה בין נפח האחסון של הגיבויים לנפח האחסון של מסד הנתונים
נפח האחסון של הגיבוי יכול להיות קטן או גדול יותר מנפח האחסון של מסד הנתונים המקורי בזמן היצירה.
נפח האחסון של הגיבוי יכול להיות קטן יותר מנפח האחסון של מסד הנתונים, כי הגיבוי מכיל רק גרסה אחת של הנתונים, ואילו מסד הנתונים הפעיל יכול להכיל כמה גרסאות בגלל פעולות שמתבצעות. גם הבדלים בפורמט הנתונים ובדחיסה יכולים להקטין את גודל הגיבוי.
לעומת זאת, נפח האחסון של הגיבוי יכול להיות גדול יותר מנפח האחסון של מסד הנתונים, בהתאם למצב של מסד הנתונים ולמועד שבו יצרתם את הגיבוי.
מסיבות דומות, כשמשחזרים מסד נתונים מגיבוי, נפח האחסון שלו יכול להיות גדול יותר מנפח האחסון של מסד הנתונים. זה יכול לקרות אם קבוצה גדולה של נתונים נמחקה ונדחסה אחרי שהגיבוי נוצר. לכן, גודל הגיבוי תלוי במועד שבו הגיבוי נוצר ובפעולות שבוצעו לאחר מכן במסד הנתונים.
אין נוסחה לחיזוי גודל הגיבוי ביחס למסד הנתונים הפעיל. במסד נתונים עם קצב כתיבה גבוה (מסד נתונים חם), סביר להניח שהגיבוי יהיה קטן יותר ממסד הנתונים הפעיל. עם זאת, במצבים מסוימים, גודל הגיבוי יכול להיות גדול יותר.