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