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

בדף הזה מוסבר איך להשתמש בתכונה 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: מזהה של מסד נתונים למסד הנתונים החדש. אי אפשר להשתמש במזהה של מסד נתונים שכבר נמצא בשימוש.