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