توضّح هذه الصفحة كيفية استخدام ميزات الاستيراد والتصدير المُدارة لنقل بيانات Cloud Firestoreمن مشروع إلى آخر. يمكن أن يكون ذلك مفيدًا لإعداد بيئة تطوير أو كجزء من عملية نقل تطبيق بشكل دائم إلى مشروع آخر. يوضّح المثال في هذه الصفحة كيفية تصدير البيانات من مشروع مصدر ثم استيراد هذه البيانات إلى مشروع وجهة. يتضمّن نقل البيانات بين المشاريع الخطوات التالية:
- إنشاء حزمة Cloud Storage لحفظ البيانات من مشروعك المصدر
- تصدير البيانات من مشروعك المصدر إلى الحزمة
- منح مشروعك الوجهة إذن القراءة من الحزمة
- استيراد البيانات من الحزمة إلى مشروعك الوجهة
قبل البدء
قبل أن تتمكّن من استخدام خدمة التصدير والاستيراد المُدارة، عليك إكمال المهام التالية:
- تفعيل الفوترة لكلّ من مشروعك المصدر ومشروعك الوجهة. لا يمكن استخدام وظيفة التصدير والاستيراد إلا في مشاريع Google Cloud التي تم تفعيل الفوترة فيها.
-
التأكّد من أنّ حسابك لديه أذونات Cloud IAM اللازمة في مشروعك المصدر ومشروعك الوجهة إذا كنت مالكًا لكلا المشروعَين، سيكون لدى حسابك الأذونات المطلوبة. بخلاف ذلك، تمنح أدوار Cloud IAM التالية الأذونات اللازمة لعمليات التصدير والاستيراد:Cloud Firestore
OwnerأوCloud Datastore OwnerأوCloud Datastore Import Export Adminيمكن لمالك المشروع منح أحد هذه الأدوار باتّباع الخطوات الواردة في منح إذن الوصول.
-
إعداد أداة سطر الأوامر
gcloudوالاتصال بمشروعك بإحدى الطرق التالية:-
الوصول إلى
gcloudمن Google Cloud console باستخدام Cloud Shell.التأكّد من ضبط
gcloudللمشروع الصحيح:gcloud config set project [SOURCE_PROJECT_ID]
-
-
إعداد الفهارس في مشروعك الجديد يجب أن تتطابق الفهارس المركّبة بين المشروعَين المصدر والوجهة. يجب إعداد الفهارس أولاً لتجنُّب معالجة كل مستند عدة مرات.
تصدير البيانات من المشروع المصدر
يمكنك تصدير بياناتك من خلال إنشاء حزمة تخزين في Cloud Storage لملفات التصدير في Cloud Firestore وبدء عملية تصدير.
إنشاء حزمة Cloud Storage
يمكنك إنشاء Cloud Storage حزمة تخزين في الموقع الجغرافي نفسه لقاعدة بيانات Cloud Firestore. للاطّلاع على موقع قاعدة البيانات، يمكنك الاطّلاع على إعداد موقع مشروعك . لا يمكنك استخدام حزمة "الدفع حسب الطلب" أو حزمة "السريع" لعمليات التصدير والاستيراد.
إذا لم تكن حزمة Cloud Storage ضمن
مشروعك المصدر، عليك منح حساب الخدمة التلقائي
للمشروع المصدر إذن الوصول إلى الحزمة. يتم تلقائيًا إنشاء حساب خدمة تلقائي لكل مشروع Google Cloud باسم PROJECT_ID@appspot.gserviceaccount.com. Cloud Firestore
تستخدم عمليات التصدير حساب الخدمة التلقائي هذا لتفويض Cloud Storage
عمليات الحزمة. لمنح حساب الخدمة التلقائي إذن الوصول إلى حزمة المصدر، عليك منحه دور
Storage Admin.
يمكنك منح هذا الدور باستخدام الأداة
gsutil المتوفّرة في Cloud Shell:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
يمكنك أيضًا منح هذا الدور في Google Cloudوحدة التحكم.
إيقاف عمليات الكتابة (اختياري)
إذا استمرّ تطبيقك في الكتابة إلى قاعدة البيانات أثناء إجراء عملية تصدير، قد لا يتم تسجيل كل عمليات الكتابة هذه في ملفات التصدير. لتصدير البيانات من حالة متّسقة، عليك إيقاف عمليات الكتابة إلى قاعدة البيانات من خلال تعديل قواعد الأمان وإيقاف أي عمليات في حزمة تطوير البرامج (SDK) للمشرف.
تعديل قواعد الأمان
في علامة التبويب Cloud Firestore القواعد في Google Cloud Console، عليك تعديل قواعد الأمان في مشروعك المصدر لرفض جميع عمليات الكتابة. على سبيل المثال:
// Deny write access to all users under any conditions service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow write: if false; } // Reads do not affect export operations // Add your read rules here } }إيقاف عمليات الكتابة من حِزم تطوير البرامج (SDK) للمشرف
لا توقف قواعد الأمان عمليات الكتابة الواردة من بيئات الخادم المميّزة التي تم إنشاؤها باستخدام حزمة Firebase Admin أو مكتبة عميل خادم Google Cloud. عليك التأكّد من إيقاف عمليات الكتابة من خوادم المشرف من خلال إيقاف خوادمك أو تعديلها.
بدء عملية تصدير
استخدِم الأمر gcloud firestore export لتصدير البيانات من مشروعك المصدر. يمكنك تصدير جميع بياناتك أو مجموعات مجموعات معيّنة فقط. عليك استبدال [SOURCE_BUCKET] باسم حزمة التخزين في
Cloud Storage bucket:
- تصدير جميع البيانات
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- تصدير مجموعات مجموعات معيّنة
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] --async
عليك تدوين outputURIPrefix لعملية التصدير، لأنّك ستستخدمها لاحقًا. تضيف Cloud Firestore تلقائيًا بادئة إلى ملفات التصدير
استنادًا إلى طابع زمني:
outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418
أثناء تشغيل عملية التصدير، يمكنك استخدام الأمر firestore operations list للاطّلاع على مدى تقدّم العملية:
gcloud firestore operations list
استيراد البيانات إلى المشروع الوجهة
بعد ذلك، عليك منح المشروع الوجهة إذن الوصول إلى ملفات بيانات Cloud Firestore وبدء عملية استيراد.
منح المشروع الوجهة إذن الوصول إلى ملفات البيانات
قبل أن تتمكّن من بدء عملية استيراد، عليك التأكّد من أنّ مشروعك الوجهة يمكنه الوصول إلى ملفات البيانات.Cloud Firestore
نقل ملفات البيانات إلى حزمة محلية
إذا كان موقع حزمة المصدر مختلفًا عن Cloud Firestore موقع مشروعك الوجهة، عليك نقل ملفات البيانات إلى حزمة Cloud Storage في الموقع الجغرافي نفسه لمشروعك الوجهة.
يمكنك نقل ملفات البيانات إلى حزمة Cloud Storage أخرى باتّباع الخطوات
الواردة في نقل الحِزم وإعادة تسميتها.
بالنسبة إلى جميع الخطوات التالية، استخدِم هذه الحزمة الجديدة كـ [SOURCE_BUCKET].
منح حساب خدمة المشروع إذن الوصول إلى حزمة المصدر
إذا لم تكن حزمة المصدر ضمن مشروعك الوجهة، عليك منح حساب الخدمة التلقائي للمشروع الوجهة إذن الوصول إلى حزمة المصدر. يُطلق على حساب الخدمة التلقائي الاسم
[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com. لمنح حساب الخدمة التلقائي إذن الوصول إلى حزمة المصدر، عليك منحه الأذونات المناسبة للوصول إلى الحزمة.
يمكنك منح الأدوار اللازمة باستخدام الأداة
gsutilالمتوفرة في Cloud Shell:
gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \ gs://[SOURCE_BUCKET]
يمكنك أيضًا منح هذا الدور في Google Cloudوحدة التحكم.
بدء عملية استيراد
قبل بدء عملية الاستيراد، عليك التأكّد من ضبط gcloud للمشروع الصحيح:
gcloud config set project [DESTINATION_PROJECT_ID]
استخدِم الأمر gcloud firestore import لاستيراد البيانات في حزمة المصدر إلى مشروعك الوجهة:
gcloud firestore import gs://[SOURCE_BUCKET]/[EXPORT_PREFIX] --async
حيث يتطابق [EXPORT_PREFIX] مع البادئة في outputUriPrefix لعملية التصدير. على سبيل المثال:
gcloud firestore import gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418 --async
أثناء تشغيل عملية التصدير، يمكنك استخدام الأمر firestore operations list للاطّلاع على مدى تقدّم العملية:
gcloud firestore operations list