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

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

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

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

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

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

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

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

עלויות

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

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

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

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

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

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

כדי לקבל את ההרשאות שנדרשות לניהול הגיבויים ולוחות הזמנים של הגיבויים: עליך לבקש מהאדמין להעניק לך אחד או יותר מהממשקים הבאים של ניהול זהויות והרשאות גישה (IAM) תפקידים:

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