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

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

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

מידע על גיבויים

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

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

ב-Cloud Firestore נשמרים מטא-נתונים שקשורים לגיבויים ולתזמוני גיבוי שקשורים למסד נתונים. Cloud Firestore שומר את המטא-נתונים האלה עד שתוקף כל הגיבויים של מסד הנתונים יפוג או שהם יימחקו.

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

עלויות

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

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

פרטים נוספים ותעריפים מדויקים זמינים בדף Pricing.

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

כדי להשתמש בתכונה הזו צריך את תוכנית התמחור Blaze.

התפקידים הנדרשים

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

  • roles/datastore.owner: גישה מלאה למסד הנתונים Cloud Firestore
  • התפקידים הבאים זמינים גם כן, אבל הם לא גלויים במסוף Google Cloud. משתמשים בפקודה Google Cloud CLI כדי להקצות את התפקידים הבאים:

    • roles/datastore.backupsAdmin: גישה לקריאה וכתיבה לגיבויים
    • roles/datastore.backupsViewer: הרשאת קריאה לגיבויים
    • roles/datastore.backupSchedulesAdmin: הרשאת קריאה וכתיבה ללוחות זמנים לגיבוי
    • roles/datastore.backupSchedulesViewer: הרשאת קריאה ללוחות זמנים לגיבוי
    • roles/datastore.restoreAdmin: הרשאות להפעלת פעולות שחזור

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

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

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

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

כדי ליצור תזמון לגיבוי של מסד נתונים, משתמשים בפקודה gcloud firestore backups schedules create או בפקודה firebase firestore:databases:backups:schedules.

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

gcloud
כדי ליצור תזמון יומי לגיבוי, מגדירים את הדגל --recurrence לערך daily:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=daily \
--retention=RETENTION_PERIOD

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

  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).
Firebase CLI
כדי ליצור תזמון יומי לגיבוי, מגדירים את הדגל --recurrence לערך DAILY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'DAILY' \
--retention RETENTION_PERIOD

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

  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).
Terraform
כדי ליצור תזמון גיבוי יומי, יוצרים משאב google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "daily-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  daily_recurrence {}
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • אפשר גם להשתמש בהפניה למשאב של משאב Terraform מסוג google_firestore_database.
  • RETENTION_PERIOD_SECONDS: מגדירים ערך בשניות, ואחריו 's'. הערך המקסימלי הוא 8467200s (14 שבועות).

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

gcloud
כדי ליצור תזמון גיבוי שבועי, מגדירים את הדגל --recurrence לערך weekly:
gcloud firestore backups schedules create \
--database='DATABASE_ID' \
--recurrence=weekly \
--retention=RETENTION_PERIOD \
--day-of-week=DAY
מחליפים את הפרטים הבאים:
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).
  • DAY: היום בשבוע שבו יתבצע הגיבוי. מגדירים את הערך לאחת מהאפשרויות הבאות:
    • SUN ליום ראשון
    • MON ליום שני
    • TUE ליום שלישי
    • WED ליום רביעי
    • THU ליום חמישי
    • FRI ליום שישי
    • SAT בשבת
Firebase CLI
כדי ליצור תזמון גיבוי שבועי, מגדירים את הדגל --recurrence לערך WEEKLY:
firebase firestore:backups:schedules:create \
--database 'DATABASE_ID' \
--recurrence 'WEEKLY' \
--retention RETENTION_PERIOD
--day-of-week DAY
מחליפים את הפרטים הבאים:
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).
  • DAY: היום בשבוע שבו יתבצע הגיבוי. מגדירים את הערך לאחת מהאפשרויות הבאות:
    • SUNDAY ליום ראשון
    • MONDAY ליום שני
    • TUESDAY ליום שלישי
    • WEDNESDAY ליום רביעי
    • THURSDAY ליום חמישי
    • FRIDAY ליום שישי
    • SATURDAY בשבת
Terraform
כדי ליצור לוח זמנים שבועי לגיבוי, יוצרים משאב google_firestore_backup_schedule.
resource "google_firestore_backup_schedule" "weekly-backup" {
  project  = PROJECT_ID
  database = DATABASE_ID

  retention = RETENTION_PERIOD_SECONDS

  weekly_recurrence {
    day = DAY
  }
}

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

  • PROJECT_ID: מזהה הפרויקט.
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • אפשר גם להשתמש בהפניה למשאב של משאב Terraform מסוג google_firestore_database.
  • RETENTION_PERIOD_SECONDS: מגדירים ערך בשניות, ואחריו 's'. הערך המקסימלי הוא 8467200s (14 שבועות).
  • DAY: היום בשבוע שבו יתבצע הגיבוי. מגדירים את הערך לאחת מהאפשרויות הבאות:
    • SUNDAY ליום ראשון
    • MONDAY ליום שני
    • TUESDAY ליום שלישי
    • WEDNESDAY ליום רביעי
    • THURSDAY ליום חמישי
    • FRIDAY ליום שישי
    • SATURDAY בשבת

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

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

gcloud
משתמשים בפקודה gcloud firestore backups schedules list.
gcloud firestore backups schedules list \
--database='DATABASE_ID'
מחליפים את DATABASE_ID במזהה של מסד הנתונים. משתמשים ב-'(default)' למסד הנתונים שמוגדר כברירת מחדל.
Firebase CLI
משתמשים בפקודה firebase firestore:backups:schedules:list.
firebase firestore:backups:schedules:list \
--database 'DATABASE_ID'
מחליפים את DATABASE_ID במזהה של מסד הנתונים. משתמשים ב-'(default)' למסד הנתונים שמוגדר כברירת מחדל.

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

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

gcloud
משתמשים בפקודה gcloud firestore backups schedules describe:
gcloud firestore backups schedules describe \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
מחליפים את הפרטים הבאים:
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • BACKUP_SCHEDULE_ID: המזהה של לוח הזמנים לגיבוי. אפשר לראות את המזהה של כל תזמון גיבוי כשמציגים את רשימת כל תזמוני הגיבוי.

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

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

gcloud
משתמשים בפקודה gcloud firestore backups schedules update:
gcloud firestore backups schedules update \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID \
--retention=RETENTION_PERIOD
מחליפים את הפרטים הבאים:
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • BACKUP_SCHEDULE_ID: המזהה של לוח הזמנים לגיבוי. אפשר לראות את המזהה של כל תזמון גיבוי כשמציגים את רשימת כל תזמוני הגיבוי.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).
Firebase CLI
משתמשים בפקודה firebase firestore:backups:schedules:update:
firebase firestore:backups:schedules:update \
BACKUP_SCHEDULE \
--retention RETENTION_PERIOD
מחליפים את הפרטים הבאים:
  • BACKUP_SCHEDULE: שם המשאב המלא של לוח הזמנים לגיבוי. אפשר לראות את השם של כל תזמון גיבוי כשמציגים את כל תזמוני הגיבוי.
  • RETENTION_PERIOD: מגדירים ערך של עד 14 שבועות (14w).

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

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

כדי למחוק תזמון גיבוי, משתמשים באחת מהשיטות הבאות:

gcloud
משתמשים בפקודה gcloud firestore backups schedules delete:
gcloud firestore backups schedules delete \
--database='DATABASE_ID' \
--backup-schedule=BACKUP_SCHEDULE_ID
מחליפים את הפרטים הבאים:
  • DATABASE_ID: המזהה של מסד הנתונים שרוצים לגבות. מגדירים את הערך '(default)' למסד הנתונים שמוגדר כברירת מחדל.
  • BACKUP_SCHEDULE_ID: המזהה של לוח הזמנים לגיבוי. אפשר לראות את המזהה של כל תזמון גיבוי כשמציגים את רשימת כל תזמוני הגיבוי.
Firebase CLI
משתמשים בפקודה firebase firestore:backups:schedules:delete:
firebase firestore:backups:schedules:delete \
BACKUP_SCHEDULE
מחליפים את הפרטים הבאים:

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

ניהול הגיבויים

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

כדי להציג את רשימת הגיבויים הזמינים, משתמשים באחת מהשיטות הבאות:

gcloud
משתמשים בפקודה gcloud firestore backups list:
gcloud firestore backups list \
--format="table(name, database, state)"
הדגל --format="table(name, database, state)" מעצב את הפלט בפורמט קל יותר לקריאה. כדי להציג רק את הגיבויים ממיקום ספציפי, משתמשים בדגל --location:
gcloud firestore backups list \
--location=LOCATION \
--format="table(name, database, state)"
מחליפים את LOCATION בשם של מיקום Cloud Firestore.
Firebase CLI
משתמשים בפקודה firebase firestore:backups:list:
firebase firestore:backups:list
כדי להציג רק את הגיבויים ממיקום ספציפי, משתמשים בדגל --location:
firebase firestore:backups:list \
--location=LOCATION
מחליפים את LOCATION בשם של מיקום Cloud Firestore.

תיאור גיבוי

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

gcloud
משתמשים בפקודה gcloud firestore backups describe:
gcloud firestore backups describe \
--location=LOCATION \
--backup=BACKUP_ID
מחליפים את הפרטים הבאים:
  • LOCATION: המיקום של מסד הנתונים.
  • BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי ברשימת כל הגיבויים.
Firebase CLI
משתמשים בפקודה firebase firestore:backups:get:
firebase firestore:backups:get BACKUP
מחליפים את הפרטים הבאים:

מחיקת הגיבוי

כדי למחוק גיבוי, משתמשים באחת מהשיטות הבאות. אזהרה: אי אפשר לשחזר גיבוי שנמחק.
gcloud
משתמשים בפקודה gcloud firestore backups delete:
gcloud firestore backups delete \
--location=LOCATION \
--backup=BACKUP_ID
מחליפים את הפרטים הבאים:
  • LOCATION: המיקום של מסד הנתונים.
  • BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי ברשימת כל הגיבויים.
Firebase CLI
משתמשים בפקודה firebase firestore:backups:delete:
firebase firestore:backups:delete \
BACKUP
מחליפים את הפרטים הבאים:

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

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

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

gcloud
משתמשים בפקודה gcloud firestore databases restore:
gcloud firestore databases restore \
--source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \
--destination-database='DATABASE_ID'
מחליפים את הפרטים הבאים:
  • PROJECT_ID: מזהה הפרויקט.
  • LOCATION: המיקום של הגיבוי של מסד הנתונים והמיקום של מסד הנתונים החדש שנוצר לנתונים המשוחזרים.
  • BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי כשמציגים את רשימת כל הגיבויים.
  • DATABASE_ID: מזהה של מסד נתונים למסד הנתונים החדש. אי אפשר להשתמש במזהה של מסד נתונים שכבר נמצא בשימוש.
הפלט יכלול את הרכיבים metadata,‏ name ו-response:
metadata:
  '@type': type.googleapis.com/google.firestore.admin.v1.RestoreDatabaseMetadata
  backup: projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID
  database: projects/PROJECT_ID/databases/DATABASE_ID
  operationState: PROCESSING
  progressPercentage:
    completedWork: '20'
    estimatedWork: '100'
  startTime: '2023-12-06T14:20:17.398325Z'
name: projects/PROJECT_ID/databases/DATABASE_ID/operations/operation_uuid
response:
  '@type': type.googleapis.com/google.firestore.admin.v1.Database
  createTime: '2023-12-06T14:20:17.398325Z'
  name: projects/PROJECT_ID/databases/DATABASE_ID
  ...
השדה metadata כולל רכיב progressPercentage עם פירוט של ההתקדמות המשוערת של השחזור עד כה, ורכיב operationState שמציין את המצב הכללי של השחזור. כדי לאחזר את המידע הזה שוב, משתמשים ב-gcloud firestore operations list:
gcloud firestore operations list --database=DATABASE_ID
או משתמשים בשדה name מהפלט שמתואר למעלה, עם gcloud firestore operations describe:
gcloud firestore operations describe OPERATION_NAME
Firebase CLI
משתמשים בפקודה firebase firestore:databases:restore:
firebase firestore:databases:restore \
--backup 'BACKUP' \
--database 'DATABASE_ID'
מחליפים את הפרטים הבאים:
  • BACKUP: שם המשאב המלא של גיבוי. אפשר לראות את השם של כל גיבוי כשמציגים את רשימת כל הגיבויים.
  • DATABASE_ID: מזהה של מסד נתונים למסד הנתונים החדש. אי אפשר להשתמש במזהה של מסד נתונים שכבר נמצא בשימוש.