توضّح هذه الصفحة كيفية استخدام النُسخ الاحتياطية المُجدوَلة (Cloud Firestore) الجديدة. استخدام النسخ الاحتياطية لحماية بياناتك من البيانات على مستوى التطبيق التلف أو من الحذف غير المقصود للبيانات.
تتيح لك النُسخ الاحتياطية ضبط جداول زمنية للاحتفاظ بنسخة احتياطية من البيانات يوميًا أو أسبوعيًا. النسخ الاحتياطية لقاعدة البيانات المحددة. يمكنك بعد ذلك استخدام هذه النُسخ الاحتياطية لاستعادة data إلى قاعدة بيانات جديدة.
لمحة عن النُسخ الاحتياطية
النسخ الاحتياطي هو نسخة متسقة من قاعدة البيانات في وقت ما. تشتمل النسخة الاحتياطية على جميع تهيئات البيانات والفهرس في هذه المرحلة في الوقت المناسب. لا تحتوي النسخة الاحتياطية على سياسات مدة البث في قاعدة البيانات. تتوفّر النسخة الاحتياطية في الموقع نفسه الذي توجد فيه قاعدة بيانات المصدر.
تشتمل النُسخ الاحتياطية على فترة احتفاظ قابلة للضبط ويتم تخزينها حتى فترة الاحتفاظ بالبيانات. المدة أو إلى أن تحذف النسخة الاحتياطية. يؤدي حذف قاعدة بيانات المصدر عدم حذف النُسخ الاحتياطية ذات الصلة تلقائيًا.
تخزِّن ميزة "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'
'(default)'
لقاعدة البيانات التلقائية.
Firebase CLI
استخدِم الأمرfirebase firestore:backups:schedules:list
.
firebase firestore:backups:schedules:list \ --database '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: معرّف قاعدة البيانات الجديد قاعدة البيانات. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.