प्रोजेक्ट के बीच डेटा ट्रांसफ़र करना

इस पेज पर, मैनेज किए जा रहे इंप��र्ट और एक्सपोर्ट की सुविधाओं को इस्तेमाल करने का तरीका बताया गया है Cloud Firestore डेटा को एक से दूसरी जगह ले जाने के लिए प्र���जेक्ट क�����े ��े�� मदद करता है. इससे डेवलपमेंट एनवायरमेंट को सेट अप करने में मदद मिल सकती है हमेशा के लिए किसी दूसरे प्रोजेक्ट में माइग्रेट करने की वजह से. इस पेज पर दिए गए उदाहरण से पता चलता है कि सोर्स प्रोजेक्ट में भेजा जा सकता है और फिर उस डेटा को किसी डेस्टिनेशन प्रोजेक्ट में इंपोर्ट किया जा सकता है. डेटा ले जाना इसमें ये चरण शामिल हैं:

  1. अपने सोर्स प्रोजेक्ट का डेटा होल्ड करने के लिए, Cloud Storage बकेट बनाएं.
  2. अपने सोर्स प्रोजेक्ट से डेटा को बकेट में एक्सपोर्ट करें.
  3. अपने डेस्टिनेशन प्रोजेक्ट को बकेट से पढ़ने की अनुमति दें.
  4. बकेट से अपने डेस्टिनेशन प्रोजेक्ट में डेटा इंपोर्ट करें.

शुरू करने से पहले

मैनेज किए गए डेटा एक्सपोर्ट और इंपोर्ट करने की सेवा का इस्तेमाल करने से पहले, आपको ये काम पूरे करें:

  1. चालू करें बिलिंग, दोनों के लिए जारी रखें डेस्टिनेशन प्रोजेक्ट के लिए बनाया गया था. सिर्फ़ Google Cloud जिन प्रोजेक्ट में बिलिंग की सुविधा चालू है उनमें एक्सपोर्ट और इंपोर्ट फ़ंक्शन का इस्तेमाल किया जा सकता है.
  2. पक्का करें कि आपके खाते में ज़रूरी Cloud IAM हो अनुमतियां दी हैं और डेस्टिनेशन प्रोजेक्ट. अगर आप दोन���ं प्रोजेक्ट के मालिक हैं, तो आपको अपने खाते में अनुमतियां दी हैं. इसके अलावा, क्लाउड आईएएम की ये भूमिकाएं Cloud Firestore के लिए ज़रूरी अनुमतियां देनी होंगी एक्सपोर्ट और इंपोर्ट ऑपरेशन:

    Owner, Cloud Datastore Owner या Cloud Datastore Import Export Admin

    प्रोजेक्ट का मालिक, इनमें से कोई भूमिका देने के लिए, नीचे दिए गए तरीके का पालन कर सकता है: कदमों की संख्या ऐक्सेस दें.

  3. gcloud कमांड-लाइन टूल सेट अप करें और अपने प्रोजेक्ट से कनेक्ट करें नीचे दिए गए तरीकों में से किसी एक का इस्तेमाल करें:

  4. अपने नए प्रोजेक्ट में इंडेक्स सेट अप करें. मिश्रित इंडेक्स मेल खाने चाहिए सोर्स और डेस्टिनेशन प्रोजेक्ट के बीच में होता है. इंडेक्स सेट अप किए जाने चाहिए ऐसा करने से, आपको हर दस्तावेज़ को कई बार प्रोसेस करने की ज़रूरत नहीं पड़ेगी.

सोर्स प्रोजेक्ट से डेटा एक्सपोर्ट करना

अपने डेटा को एक्सपोर्ट करने के लिए, 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 में उपलब्ध है:

Cloud Shell शुरू करना

gsutil iam ch serviceAccount:[service-PROJECT_NUMBER]@gcp-sa-firestore.iam.gserviceaccount.com :roles/storage.admin\
gs://[BUCKET_NAME]@

आपके पास, Google Cloud Console में यह भूमिका देने का भी विकल्प है.

लिखने की कार्रवाई बंद करें (ज़रूरी नहीं)

अगर एक्सपोर्ट करने के दौरान भी आपका ऐप्लिकेशन आपके डेटाबेस में डेटा सेव करना जारी रखता है कार्रवाई ठीक से की है, तो हो सकता है कि आप अपनी निर्यात फ़ाइलों में उन सभी लेखों को कैप्चर न कर पाएं. यहां की यात्रा पर हूं डेटा को एक जैसी स्थिति से एक्सपोर्ट करें, अपडेट करके अपने डेटाबेस में राइट करने की सुविधा बंद करें आपके सुरक्षा नियमों और एडमिन SDK की सभी कार्रवाइयों को रोकने के बारे में भी बताया गया है.

  1. सुरक्षा के नियमों को अपडेट करें

    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
        }
      }
    
  2. एडमिन SDK टूल से लिखना रोकें

    सुरक्षा नियम, खास अधिकार वाले सर्वर से आने वाले लेखन को नहीं रोकते Firebase एडमिन का इस्तेमाल करके बनाए गए एनवायरमेंट SDK टूल या Google Cloud सर्वर क्लाइंट लाइब्रेरी. इस तारीख तक अपने एडमिन सर्वर से लिखने की कार्रवाइयों को रोक दें आपके सर्वर को बंद या अपडेट करते समय.

एक्सपोर्ट की कार्रवाई शुरू करना

एक्सपोर्ट करने के लिए, 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 बकेट में ले जाने के लिए, यह तरीका अपनाएं मूविंग और रीनेमिंग बकेट में जाना चाहिए. आगे दिए गए सभी चरणों के लिए, इस नए बकेट का इस्तेमाल [SOURCE_BUCKET] के तौर पर करें.

प्रोजेक्ट सेवा खाते को अपने सोर्स बकेट का ऐक्सेस देना

अगर आपके डेस्टिनेशन प्रोजेक्ट में सोर्स बकेट नहीं है, तो आपको आपके सोर्स बकेट के लिए, डेस्टिनेशन प्रोजेक्ट के डिफ़ॉल्ट सेवा खाते का ऐक्सेस. कॉन्टेंट बनाने डिफ़ॉल्ट सेवा खाते का नाम है [DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com. यहां की यात्रा पर हूं डिफ़ॉल्ट सेवा खाते को अपने सोर्स बकेट का ऐक्सेस दें और उसे बकेट को ऐक्सेस करने के लिए सही अनुमतियां दें.

आपके पास ज़रूरी भूमिकाएं देने के लिए, gsutil टूल Cloud Shell में उपलब्ध है:

Cloud Shell शुरू करना

gsutil iam ch serviceAccount:[DESTINATION_PROJECT_ID]@appspot.gserviceaccount.com:legacyBucketReader,legacyObjectReader \
gs://[SOURCE_BUCKET]

आपके पास, Google Cloud Console में यह भूमिका देने का भी विकल्प है.

इंपोर्ट कार्रवाई शुरू करें

इंपोर्ट कार्रवाई शुरू करने से पहले, पक्का करें कि 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