توضّح هذه الصفحة كيفية استخدام النُسخ الاحتياطية المُجدوَلة (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)'
لقاعدة البيانات التلقائية.
يمكنك أيضًا استخدام مرجع مورد
مورد ترابيّ من النوع - 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)'
لقاعدة البيانات التلقائية.
يمكنك أيضًا استخدام مرجع مورد
مورد ترابيّ من النوع - 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: معرّف قاعدة البيانات الجديد قاعدة البيانات. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.