تصف هذه الصفحة كيفية استخدام ميزة النسخ الاحتياطية المُجدوَلة من Cloud Firestore. استخدِم النُسخ الاحتياطية لحماية بياناتك من تلف البيانات على مستوى التطبيق أو من الحذف غير المقصود للبيانات.
تتيح لك النسخ الاحتياطية تهيئة جداول النسخ الاحتياطي لاتخاذ نسخ احتياطية يومية أو أسبوعية لقاعدة البيانات المحددة. يمكنك بعد ذلك استخدام هذه النسخ الاحتياطية لاستعادة البيانات إلى قاعدة بيانات جديدة.
لمحة عن النُسخ الاحتياطية
النسخ الاحتياطي هو نسخة متسقة من قاعدة البيانات في وقت ما. وتحتوي النسخة الاحتياطية على جميع تهيئات البيانات والفهرس في تلك المرحلة الزمنية. لا تحتوي النسخة الاحتياطية على سياسات مدة البث في قاعدة البيانات. تتوفّر النسخة الاحتياطية في الموقع نفسه الذي توجد فيه قاعدة بيانات المصدر.
تكون للنُسخ الاحتياطية فترة احتفاظ قابلة للضبط ويتم تخزينها حتى انتهاء فترة الاحتفاظ بالبيانات أو إلى أن تحذف النسخة الاحتياطية. لا يؤدي حذف قاعدة بيانات المصدر إلى حذف النسخ الاحتياطية ذات الصلة تلقائيًا.
تقوم Cloud Firestore بتخزين بيانات التعريف المتعلقة بالنسخ الاحتياطية وجداول النسخ الاحتياطي المتعلقة بقاعدة البيانات. تحتفظ Cloud Firestore بهذه البيانات الوصفية حتى تنتهي صلاحية جميع النسخ الاحتياطية لقاعدة البيانات أو يتم حذفها.
لا يؤثر إنشاء النسخ الاحتياطية أو الاحتفاظ بها على أداء عمليات القراءة أو الكتابة في قاعدة البيانات المباشرة الخاصة بك.
التكاليف
عند استخدام النُسخ الاحتياطية، يتم تحصيل رسوم منك مقابل ما يلي:
- مقدار مساحة التخزين التي تستخدمها كل نسخة احتياطية.
- لإجراء عملية استعادة، سيتم تحصيل الرسوم منك استنادًا إلى حجم النسخة الاحتياطية.
لمزيد من التفاصيل والأسعار الدقيقة، اطّلِع على صفحة التسعير.
قبل البدء
تتطلّب هذه الميزة خطة أسعار Blaze.الأدوار المطلوبة
للحصول على الأذونات اللازمة لإدارة النُسخ الاحتياطية والجداول الزمنية للنسخ الاحتياطي، اطلب من المشرف أن يمنحك واحدًا أو أكثر من أدوار "إدارة الهوية وإمكانية الوصول" التالية:
roles/datastore.owner
: الوصول الكامل إلى قاعدة بيانات Cloud Firestoreتتوفّر الأدوار التالية أيضًا ولكن لا تظهر في وحدة تحكّم Google Cloud Platform. استخدِم واجهة سطر الأوامر في Google Cloud لإسناد هذه الأدوار:
roles/datastore.backupsAdmin
: الإذن بالاطّلاع على النُسخ الاحتياطية والكتابة إليهاroles/datastore.backupsViewer
: الإذن بالاطّلاع على النُسخ الاحتياطيةroles/datastore.backupSchedulesAdmin
: إمكانية الاطّلاع على الجداول الزمنية للاحتفاظ بنسخة احتياطية والكتابة فيهاroles/datastore.backupSchedulesViewer
: الاطّلاع على جداول زمنية للاحتفاظ بنسخة احتياطيةroles/datastore.restoreAdmin
: الأذونات لبدء عمليات الاستعادة
إنشاء الجداول الزمنية للاحتفاظ بنسخة احتياطية وإدارتها
توضح الأمثلة أدناه كيفية إعداد جدول زمني احتياطي. بالنسبة لكل قاعدة بيانات، يمكنك تهيئة ما يصل إلى جدول احتياطي يومي وما يصل إلى جدول احتياطي أسبوعي واحد. لا يمكنك تهيئة جداول زمنية أسبوعية متعددة للنسخ الاحتياطية لأيام مختلفة من الأسبوع.
لا يمكنك ضبط الوقت الدقيق من يوم عملية النسخ الاحتياطي. يتم أخذ النسخ الاحتياطية في أوقات مختلفة كل يوم. بالنسبة إلى جداول النسخ الاحتياطي الأسبوعية، يمكنك تهيئة اليوم من الأسبوع لاتخاذ نسخة احتياطية.
إنشاء جدول زمني للنسخ الاحتياطي
لإنشاء جدول زمني احتياطي لقاعدة بيانات، استخدِم الأمر gcloud alpha firestore backups schedules create
أو الأمر firebase firestore:databases:backups:schedules
.
إنشاء جدول زمني يومي للنسخ الاحتياطي
gcloud
لإنشاء جدول زمني يومي للاحتفاظ بنسخة احتياطية، اضبط علامة--recurrence
على daily
:
gcloud alpha 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 alpha 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 alpha firestore backups schedules list
.
gcloud alpha 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 alpha firestore backups schedules describe
:
gcloud alpha firestore backups schedules describe \ --database='DATABASE_ID' \ --backup-schedule=BACKUP_SCHEDULE_IDاستبدِل ما يلي:
- DATABASE_ID: رقم تعريف قاعدة البيانات المطلوب الاحتفاظ بنسخة احتياطية منها اضبط القيمة على
'(default)'
لقاعدة البيانات التلقائية. - BACKUP_SCHEDULE_ID: رقم تعريف جدول زمني احتياطي يمكنك الاطّلاع على رقم تعريف كل جدول زمني للاحتفاظ بنسخة احتياطية عند إدراج جميع الجداول الزمنية للاحتفاظ بنسخة احتياطية.
تعديل الجدول الزمني للاحتفاظ بنسخة احتياطية
لتعديل فترة الاحتفاظ بالبيانات وفقًا لجدول زمني احتياطي، استخدِم إحدى الطرق التالية:
gcloud
استخدام الأمرgcloud alpha firestore backups schedules update
:
gcloud alpha 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 alpha firestore backups schedules delete
:
gcloud alpha 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 alpha firestore backups list
:
gcloud alpha firestore backups list \ --format="table(name, database, state)"تعمل العلامة
--format="table(name, database, state)"
على تنسيق النتائج لتكون
تنسيقًا أكثر قابلية للقراءة.
لإدراج النُسخ الاحتياطية فقط من موقع جغرافي معيّن، استخدِم العلامة --location
:
gcloud alpha 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 alpha firestore backups describe
:
gcloud alpha 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 alpha firestore backups delete
:
gcloud alpha 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 alpha firestore databases restore
:
gcloud alpha 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: معرّف قاعدة البيانات لقاعدة البيانات الجديدة. لا يمكنك استخدام معرّف قاعدة بيانات قيد الاستخدام من قبل.