בדף הזה מוסבר איך להשתמש בתכונה Cloud Firestore של גיבויים מתוזמנים. מומלץ להשתמש בגיבויים כדי להגן על הנתונים שלכם מפני פגיעה בנתונים ברמת האפליקציה או מפני מחיקה של נתונים בטעות.
הגדרות הגיבוי מאפשרות לקבוע לוחות זמנים לגיבוי כדי ליצור גיבויים יומיים או שבועיים של מסד הנתונים שצוין. לאחר מכן תוכלו להשתמש בגיבויים האלה כדי לשחזר את הנתונים למסד נתונים חדש.
מידע על גיבויים
גיבוי הוא עותק עקבי של מסד הנתונים בנקודת זמן מסוימת. הגיבוי מכיל את כל הנתונים וההגדרות של האינדקס בנקודת הזמן הזו. גיבוי לא מכיל מדיניות זמן חיים של מסדי נתונים. הגיבוי נמצא באותו מיקום שבו נמצא מסד הנתונים המקור.
לגיבויים יש תקופת שמירה שניתן להגדיר, והם נשמרים עד שתקופת השמירה תסתיים או עד שמוחקים את הגיבוי. מחיקה של מסד הנתונים של המקור לא מוחקת באופן אוטומטי את הגיבויים הקשורים.
ב-Cloud Firestore נשמרים מטא-נתונים שקשורים לגיבויים ולתזמוני גיבוי שקשורים למסד נתונים. Cloud Firestore שומר את המטא-נתונים האלה עד שתוקף כל הגיבויים של מסד הנתונים יפוג או שהם יימחקו.
יצירת גיבויים או שמירת גיבויים לא משפיעה על הביצועים של קריאה או כתיבה במסד הנתונים הפעיל.
עלויות
כשמשתמשים בגיבויים, אתם מחויבים על הדברים הבאים:
- נפח האחסון שמנוצל בכל גיבוי.
- על פעולת שחזור, אתם מחויבים על סמך גודל הגיבוי.
פרטים נוספים ותעריפים מדויקים זמינים בדף תמחור.
לפני שמתחילים
כדי להשתמש בתכונה הזו צריך את תוכנית התמחור 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 מסוג - RETENTION_PERIOD_SECONDS: כדי להגדיר את הערך בשניות, ואחריהן "s". הערך המקסימלי הוא
8467200s
(14 שבועות).
google_firestore_database
.
יצירת לוח זמנים שבועי לגיבוי
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 מסוג - RETENTION_PERIOD_SECONDS: כדי להגדיר את הערך בשניות, ואחריהן "s". הערך המקסימלי הוא
8467200s
(14 שבועות). - DAY: היום בשבוע שבו יתבצע הגיבוי. מגדירים את אחת מהאפשרויות הבאות:
SUNDAY
ליום ראשוןMONDAY
ליום שניTUESDAY
ליום שלישיWEDNESDAY
ליום רביעיTHURSDAY
ליום חמישיFRIDAY
ליום שישיSATURDAY
בשבת
google_firestore_database
.
הצגת רשימה של לוחות זמנים לגיבוי
כדי לקבל רשימה של כל לוחות הזמנים לגיבוי של מסד נתונים, משתמשים באחת מהשיטות הבאות:
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מחליפים את מה שכתוב בשדות הבאים:
- 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מחליפים את הפרטים הבאים:
- 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מחליפים את הפרטים הבאים:
- 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: מזהה מסד הנתונים למסד הנתונים החדש. אי אפשר להשתמש במזהה של מסד נתונים שכבר נמצא בשימוש.