इस पेज पर, मैनेज किए गए इंपोर्ट और एक्सपोर्ट की सुविधाओं का इस्तेमाल करने का तरीका बताया गया है. इनकी मदद से, Cloud Firestore डेटा को एक प्रोजेक्ट से दूसरे प्रोजेक्ट में ट्रांसफ़र किया जा सकता है. यह डेवलपमेंट एनवायरमेंट सेट अप करने के लिए या किसी ऐप्लिकेशन को हमेशा के लिए किसी दूसरे प्रोजेक्ट में माइग्रेट करने के लिए फ़ायदेमंद हो सकता है. इस पेज पर दिए गए उदाहरण में, सोर्स प्रोजेक्ट से डेटा एक्सपोर्ट करने और फिर उस डेटा को डेस्टिनेशन प्रोजेक्ट में इंपोर्ट करने का तरीका बताया गया है. एक प्रोजेक्ट से दूसरे प्रोजेक्ट में डेटा ट्रांसफ़र करने के लिए, यह तरीका अपनाएं:
- अपने सोर्स प्रोजेक्ट से डेटा को सेव करने के लिए, Cloud Storage बकेट बनाएं.
- अपने सोर्स प्रोजेक्ट से डेटा को बकेट में एक्सपोर्ट करें.
- अपने डेस्टिनेशन प्रोजेक्ट को बकेट से डेटा पढ़ने की अनुमति दें.
- बकेट से डेटा को अपने डेस्टिनेशन प्रोजेक्ट में इंपोर्ट करें.
शुरू करने से पहले
मैनेज की गई एक्सपोर्ट और इंपोर्ट सेवा का इस्तेमाल करने से पहले, आपको ये काम पूरे करने होंगे:
- अपने सोर्स प्रोजेक्ट और डेस्टिनेशन प्रोजेक्ट, दोनों के लिए बिलिंग चालू करें. एक्सपोर्ट और इंपोर्ट करने की सुविधा का इस्तेमाल सिर्फ़ उन Google Cloud प्रोजेक्ट के लिए किया जा सकता है जिनमें बिलिंग की सुविधा चालू है.
-
पक्का करें कि आपके खाते के पास सोर्स प्रोजेक्ट और डेस्टिनेशन प्रोजेक्ट में, Cloud IAM की ज़रूरी अनुमतियां हों. अगर आप दोनों प्रोजेक्ट के मालिक हैं, तो आपके खाते के पास ज़रूरी अनुमतियां हैं. इसके अलावा, Cloud IAM की इन भूमिकाओं से, Cloud Firestore के एक्सपोर्ट और इंपोर्ट ऑपरेशन के लिए ज़रूरी अनुमतियां मिलती हैं:
Owner
,Cloud Datastore Owner
याCloud Datastore Import Export Admin
प्रोजेक्ट का मालिक, ऐक्सेस देना में दिया गया तरीका अपनाकर, इनमें से कोई भूमिका असाइन कर सकता है.
-
gcloud
कमांड-लाइन टूल सेट अप करें और अपने प्रोजेक्ट से कनेक्ट करें. इसके लिए, इनमें से कोई एक तरीका अपनाएं:-
Google Cloud कंसोल से
gcloud
को ऐक्सेस करने के लिए, Cloud Shell का इस्तेमाल करें.पक्का करें कि
gcloud
को सही प्रोजेक्ट के लिए कॉन्फ़िगर किया गया हो:gcloud config set project [SOURCE_PROJECT_ID]
-
Google Cloud SDK टूल इंस्टॉल करें और उसे इस्तेमाल करना शुरू करें.
-
-
अपने नए प्रोजेक्ट में इंडेक्स सेट अप करें. सोर्स और डेस्टिनेशन प्रोजेक्ट के कंपोज़िट इंडेक्स मेल खाने चाहिए. हर दस्तावेज़ को कई बार प्रोसेस करने से बचने के लिए, इंडेक्स पहले सेट अप किए जाने चाहिए.
सोर्स प्रोजेक्ट से डेटा एक्सपोर्ट करना
अपनी Cloud Storage एक्सपोर्ट फ़ाइलों के लिए Cloud Storage बकेट बनाकर और एक्सपोर्ट ऑपरेशन शुरू करके, अपना डेटा एक्सपोर्ट करें.Cloud Firestore
Cloud Storage बकेट बनाना
Cloud Firestore डेटाबेस की तरह ही, उसी जगह पर Cloud Storage बकेट बनाएं. अपने डेटाबेस की जगह की जानकारी देखने के लिए, प्रोजेक्ट की जगह की सेटिंग देखें. एक्सपोर्ट और इंपोर्ट करने के लिए, अनुरोध करने वाले के पेमेंट वाले बकेट का इस्तेमाल नहीं किया जा सकता.
अगर आपका Cloud Storage बकेट, आपके सोर्स प्रोजेक्ट में नहीं है, तो आपको सोर्स प्रोजेक्ट के डिफ़ॉल्ट सेवा खाते को बकेट का ऐक्सेस देना होगा. हर Google Cloud प्रोजेक्ट
में, अपने-आप एक डिफ़ॉल्ट सेवा खाता बन जाता है. इसका नाम PROJECT_ID@appspot.gserviceaccount.com
होता है. Cloud Firestore
एक्सपोर्ट करने की कार्रवाइयों में, इस डिफ़ॉल्ट सेवा खाते का इस्तेमाल किया जाता है. इससे Cloud Storage
बकेट से जुड़ी कार्रवाइयों को अनुमति मिलती है. डिफ़ॉल्ट सेवा खाते को अपने सोर्स बकेट का ऐक्सेस देने के लिए, उसे Storage Admin
भूमिका असाइन करें.
यह भूमिका, Cloud Shell में उपलब्ध gsutil
टूल की मदद से दी जा सकती है:
gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\ gs://[BUCKET_NAME]@
Google Cloud कंसोल में जाकर भी यह भूमिका दी जा सकती है.
लिखने की कार्रवाइयां बंद करना (ज़रूरी नहीं)
अगर एक्सपोर्ट करने की प्रोसेस के दौरान आपका ऐप्लिकेशन डेटाबेस में डेटा सेव करता रहता है, तो हो सकता है कि एक्सपोर्ट की गई फ़ाइलों में वह सारा डेटा शामिल न हो. डेटा को एक जैसी स्थिति में एक्सपोर्ट करने के लिए, अपने डेटाबेस में लिखने की सुविधा बंद करें. इसके लिए, सुरक्षा नियमों को अपडेट करें और एडमिन SDK की सभी कार्रवाइयों को रोकें.
सुरक्षा के नियमों को अपडेट करना
कंसोल के Cloud Firestore नियम टैब में जाकर, अपने सोर्स प्रोजेक्ट के सुरक्षा नियमों को अपडेट करें, ताकि सभी राइट को अस्वीकार किया जा सके. उदाहरण के लिए:
// 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 } }
Admin SDK से किए जाने वाले राइट ऑपरेशन को रोकना
सुरक्षा के नियम, Firebase Admin SDK या Google Cloud Server Client Library का इस्तेमाल करके बनाए गए, खास अधिकार वाले सर्वर एनवायरमेंट से आने वाले राइट ऑपरेशन को नहीं रोकते. अपने एडमिन सर्वर से राइट ऑपरेशन को रोकने के लिए, अपने सर्वर बंद करें या उन्हें अपडेट करें.
एक्सपोर्ट करने की प्रोसेस शुरू करना
अपने सोर्स प्रोजेक्ट से डेटा एक्सपोर्ट करने के लिए, gcloud firestore export
कमांड का इस्तेमाल करें. आपके पास अपना पूरा डेटा या सिर्फ़ कुछ कलेक्शन एक्सपोर्ट करने का विकल्प होता है. [SOURCE_BUCKET]
की जगह अपने Cloud Storage बकेट का नाम डालें:
- सारा डेटा एक्सपोर्ट करें
-
gcloud firestore export gs://[SOURCE_BUCKET] --async
- चुनिंदा कलेक्शन एक्सपोर्ट करना
-
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_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
है. डिफ़ॉल्ट सेवा खाते को अपनी सोर्स बकेट का ऐक्सेस देने के लिए, उसे बकेट को ऐक्सेस करने की सही अनुमतियां दें.
Cloud Shell में उपलब्ध gsutil
टूल की मदद से, ज़रूरी भूमिकाएं असाइन की जा सकती हैं:
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