גיבוי ושחזור נתונים
בדף הזה מוסבר איך להשתמש בתכונה של גיבויים מתוזמנים ב-Firestore. אפשר להשתמש בגיבויים כדי להגן על הנתונים מפני השחתת נתונים ברמת האפליקציה או מפני מחיקת נתונים בטעות.
גיבויים מאפשרים לכם להגדיר לוחות זמנים לגיבויים יומיים או שבועיים של מסד הנתונים שצוין. אחר כך תוכלו להשתמש בגיבויים האלה כדי לשחזר נתונים במסד נתונים חדש.
מידע על גיבויים
גיבוי הוא עותק עקבי של מסד הנתונים בנקודת זמן מסוימת. הגיבוי מכיל את כל הנתונים ואת הגדרות האינדקס שהיו קיימות באותו רגע.
גיבוי לא מכיל מדיניות אורך חיים של מסד נתונים או כללי אבטחה של Firebase. הגיבוי נמצא באותו מיקום כמו מסד הנתונים של המקור.לגיבויים יש תקופת שמירה שניתנת להגדרה, והם נשמרים עד שתקופת השמירה מסתיימת או עד שמוחקים את הגיבוי. מחיקה של מסד הנתונים המקורי לא מוחקת באופן אוטומטי גיבויים קשורים.
ב-Firestore נשמרים מטא-נתונים שקשורים לגיבויים ולתזמוני גיבויים שקשורים למסד נתונים. מערכת Firestore שומרת את המטא-נתונים האלה עד שמועד התפוגה של כל הגיבויים של מסד הנתונים יגיע או עד שהם יימחקו.
יצירה או שמירה של גיבויים לא משפיעות על הביצועים של פעולות קריאה או כתיבה במסד הנתונים הפעיל.
עלויות
כשמשתמשים בגיבויים, מחויבים על הדברים הבאים:
- כמות האחסון שכל גיבוי תופס.
- כשמבצעים פעולת שחזור, החיוב מתבצע על סמך גודל הגיבוי.
פרטים נוספים ותעריפים מדויקים זמינים בדף תמחור.
לפני שמתחילים
מוודאים שהחיוב מופעל בפרויקט Google Cloud . כך בודקים אם החיוב מופעל בפרויקטהתפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לניהול גיבויים ותזמון גיבויים, צריך לבקש מהאדמין להקצות לכם תפקיד אחד או יותר מהתפקידים הבאים בניהול זהויות וגישה (IAM):
-
roles/datastore.owner: גישה מלאה למסד הנתונים של Firestore -
roles/datastore.backupsAdmin: גישת קריאה וכתיבה לגיבויים -
roles/datastore.backupsViewer: גישת קריאה לגיבויים -
roles/datastore.backupSchedulesAdmin: גישת קריאה וכתיבה ללוחות זמנים של גיבויים -
roles/datastore.backupSchedulesViewer: גישת קריאה ללוחות זמנים של גיבויים -
roles/datastore.restoreAdmin: הרשאות להפעלת פעולות שחזור
יצירה וניהול של לוחות זמנים לגיבוי
בדוגמאות הבאות מוסבר איך להגדיר לוח זמנים לגיבוי. לכל מסד נתונים אפשר להגדיר עד לוח זמנים אחד לגיבוי יומי ועד לוח זמנים אחד לגיבוי שבועי. אי אפשר להגדיר כמה לוחות זמנים שבועיים לגיבוי לימים שונים בשבוע.
אי אפשר להגדיר את השעה המדויקת ביום שבה יתבצע הגיבוי. הגיבויים מתבצעים בשעות שונות בכל יום. כשמגדירים גיבויים שבועיים, אפשר להגדיר את היום בשבוע שבו יתבצע הגיבוי.
יצירת תזמון לגיבוי
כדי ליצור תזמון לגיבוי, משתמשים באחד מהכלים הבאים.
יצירת לוח זמנים לגיבוי יומי
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- כדי לערוך את ההגדרות של תוכנית התאוששות מאסון (DR), לוחצים על עריכה.
- מסמנים את תיבת הסימון יומי, מגדירים את תקופת השמירה ולוחצים על שמירה.
gcloud
כדי ליצור תזמון לגיבוי של מסד נתונים, משתמשים בפקודהgcloud firestore backups schedules create.
כדי ליצור תזמון גיבוי יומי, מגדירים את הדגל --recurrence לערך daily:
gcloud 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.
יצירת לוח זמנים שבועי לגיבוי
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- כדי לערוך את ההגדרות של תוכנית התאוששות מאסון (DR), לוחצים על עריכה.
- מסמנים את התיבה שבועי, בוחרים את יום הגיבוי, מגדירים את תקופת השמירה ולוחצים על שמירה.
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ליום שבת
-
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.
הצגת רשימה של לוחות זמנים לגיבוי
כדי לראות רשימה של כל לוחות הזמנים של הגיבויים של מסד נתונים, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- ייפתח הדף תוכנית התאוששות מאסון (DR). בדף הזה מתוארים לוחות זמנים לגיבוי ומוצגת רשימה של גיבויים זמינים.
gcloud
משתמשים בפקודהgcloud firestore backups schedules list.
gcloud firestore backups schedules list \ --database='DATABASE_ID'
'(default)' למסד הנתונים שמוגדר כברירת מחדל.
תיאור של לוח הזמנים של הגיבוי
כדי לאחזר מידע על לוח זמנים לגיבוי, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- ייפתח הדף תוכנית התאוששות מאסון (DR). בדף הזה מתוארים לוחות זמנים לגיבוי ומוצגת רשימה של גיבויים זמינים.
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: המזהה של תזמון גיבוי. אפשר לראות את המזהה של כל תזמון גיבוי כשמציגים את כל תזמוני הגיבוי.
עדכון של לוח זמנים לגיבוי
כדי לעדכן את תקופת השמירה של תזמון גיבוי, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות.
- כדי לערוך את ההגדרות של תוכנית התאוששות מאסון (DR), לוחצים על עריכה.
- עורכים את ההגדרות של לוח הזמנים לגיבוי ולוחצים על שמירה.
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).
אפשר לעדכן את תקופת השמירה של לוח זמנים לגיבוי, אבל אי אפשר לעדכן את המחזוריות שלו. אם אתם צריכים תזמון גיבוי עם מחזוריות שונה, אתם יכולים למחוק את תזמון הגיבוי הישן אם הוא כבר לא נחוץ וליצור תזמון גיבוי חדש עם המחזוריות הרצויה.
מחיקת לוח זמנים לגיבוי
כדי למחוק תזמון גיבוי, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- כדי לערוך את ההגדרות של תוכנית התאוששות מאסון (DR), לוחצים על עריכה.
- עורכים את ההגדרות של לוח הזמנים לגיבוי ולוחצים על שמירה.
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: המזהה של תזמון גיבוי. אפשר לראות את המזהה של כל תזמון גיבוי כשמציגים את כל תזמוני הגיבוי.
שימו לב: מחיקת לוח זמנים לגיבוי לא תגרום למחיקת גיבויים שכבר נוצרו לפי לוח הזמנים הזה. אפשר לחכות עד שהם יפוגו אחרי תקופת השמירה שלהם, או למחוק גיבוי באופן ידני.
ניהול הגיבויים
הצגת רשימת הגיבויים
כדי לראות את רשימת הגיבויים הזמינים, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- כדי לערוך את ההגדרות של תוכנית התאוששות מאסון (DR), לוחצים על עריכה.
- עורכים את ההגדרות של לוח הזמנים לגיבוי ולוחצים על שמירה.
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 בשם של מיקום ב-Firestore.
תיאור גיבוי
כדי לראות פרטים על גיבוי, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי.
- ייפתח הדף תוכנית התאוששות מאסון (DR). בדף הזה מתוארים לוחות זמנים לגיבוי ומוצגת רשימה של גיבויים זמינים.
gcloud
משתמשים בפקודהgcloud firestore backups describe:
gcloud firestore backups describe \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: המיקום של מסד הנתונים.
- BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי כשמציגים את רשימת כל הגיבויים.
מחיקת הגיבוי
כדי למחוק גיבוי, משתמשים באחת מהשיטות הבאות.
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי. ייפתח הדף תוכנית התאוששות מאסון (DR). בדף הזה מתוארים לוחות זמנים לגיבוי ומוצגת רשימה של גיבויים זמינים.
- בטבלה גיבויים, מחפשים את השורה של הגיבוי ובעמודה פעולות, לוחצים על הצגת פרטים נוספים(). לוחצים על מחיקה.
- מאשרים את הפעולה באמצעות שדה הטקסט ולוחצים על מחיקה.
gcloud
משתמשים בפקודהgcloud firestore backups delete:
gcloud firestore backups delete \ --location=LOCATION \ --backup=BACKUP_ID
- LOCATION: המיקום של מסד הנתונים.
- BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי כשמציגים את רשימת כל הגיבויים.
שחזור נתונים מגיבוי של מסד נתונים
פעולת שחזור כותבת את הנתונים מגיבוי למסד נתונים חדש של Firestore.
כדי להתחיל פעולת שחזור, משתמשים באחת מהשיטות הבאות:
מסוףGoogle Cloud
נכנסים לדף Databases במסוף Google Cloud .
- ברשימת מסדי הנתונים, מוצאים את השורה של מסד הנתונים. בעמודה גיבויים מתוזמנים, לוחצים על הצגת הגיבויים או על עריכת ההגדרות, בהתאם לשאלה אם קיים לוח זמנים לגיבוי. ייפתח הדף תוכנית התאוששות מאסון (DR). בדף הזה מתוארים לוחות זמנים לגיבוי ומוצגת רשימה של גיבויים זמינים.
- בטבלה Backups, מחפשים את השורה של הגיבוי ובעמודה Actions לוחצים על View more(). לוחצים על Restore with Cloud Shell.
-
החלונית של Cloud Shell נפתחת עם פקודת ה-CLI של gcloud לשחזור מגיבוי שנבחר. מחליפים את ID_OF_NEW_DATABASE במזהה של מסד הנתונים ומריצים את הפקודה.
הפעלת הפקודה מחזירה תשובה עם מידע נוסף על הפעולה. מסד הנתונים יופיע בקרוב ברשימת מסדי הנתונים. תהליך השחזור יימשך זמן מה, והוא צריך להסתיים לפני שאפשר לגשת למסד הנתונים.
gcloud
משתמשים בפקודהgcloud firestore databases restore:
gcloud firestore databases restore \ --source-backup=projects/PROJECT_ID/locations/LOCATION/backups/BACKUP_ID \ --destination-database='DATABASE_ID \ --tags=[KEY=VALUE]'
- PROJECT_ID: מזהה הפרויקט.
- LOCATION: המיקום של הגיבוי של מסד הנתונים והמיקום של מסד הנתונים החדש שנוצר עבור הנתונים ששוחזרו.
- BACKUP_ID: המזהה של הגיבוי. אפשר לראות את המזהה של כל גיבוי כשמציגים את רשימת כל הגיבויים.
- DATABASE_ID: מזהה מסד נתונים למסד הנתונים החדש. אי אפשר להשתמש במזהה מסד נתונים שכבר נמצא בשימוש.
- [KEY=VALUE]: רשימה אופציונלית של צמדי תגים KEY=VALUE לקשירה. לדוגמה:
--tags=123/environment=production,123/costCenter=marketing--tags=tagKeys/333=tagValues/444
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
מגבלות
פעולת שחזור לא משחזרת נתוני חיפוש של App Engine או ישויות blob ממסד נתונים של (default). הנתונים האלה תקפים רק במסד הנתונים (default), ולא יהיה בהם שימוש אם תשחזרו מ-(default) למסד נתונים שלא תומך בנתונים כאלה, ולכן הם לא נכללים בגיבויים.
מה לעשות אחרי השחזור
אחרי שמסיימים את השחזור, צריך לבצע את הפעולות הבאות:
אם השתמשתם בעבר בכללי אבטחה של Firebase, תצטרכו להגדיר את הכללים עבור מסד הנתונים המשוחזר. כברירת מחדל, הכללים של מסד נתונים שלא נעשה בו שימוש בעבר אוסרים על כל פעולות הקריאה והכתיבה מלקוחות אינטרנט ומלקוחות לנייד. אם מזהה מסד הנתונים שבחרתם שימש בעבר באותו פרויקט, כדאי לבדוק אם כבר קיימים כללי אבטחה למזהה מסד הנתונים הזה, ואם כן, אם הם תואמים לדרישות של האפליקציה שלכם.
מוודאים שאמצעי הבקרה המתאימים של IAM מוחלים על מסד הנתונים החדש.
אם השתמשתם בעבר במדיניות TTL, צריך להחיל אותה מחדש על מסד הנתונים החדש. מדיניות ה-TTL לא נכללת בגיבויים ולא מוחלת מחדש באופן אוטומטי על מסדי נתונים משוחזרים.