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