परियोजनाओं के बीच डेटा ले जाएँ

यह पृष्ठ वर्णन करता है कि क्लाउड फायरस्टोर डेटा को एक प्रोजेक्ट से दूसरे प्रोजेक्ट में स्थानांतरित करने के लिए प्रबंधित आयात और निर्यात सुविधाओं का उपयोग कैसे करें। यह विकास परिवेश स्थापित करने या किसी ऐप को किसी अन्य प्रोजेक्ट में स्थायी रूप से स्थानांतरित करने के लिए उपयोगी हो सकता है। इस पृष्ठ पर उदाहरण दर्शाता है कि किसी स्रोत प्रोजेक्ट से डेटा कैसे निर्यात किया जाए और फिर उस डेटा को गंतव्य प्रोजेक्ट में कैसे आयात किया जाए। परियोजनाओं के बीच डेटा ले जाने में निम्नलिखित चरण शामिल हैं:

  1. अपने स्रोत प्रोजेक्ट से डेटा रखने के लिए क्लाउड स्टोरेज बकेट बनाएं।
  2. अपने स्रोत प्रोजेक्ट से डेटा को बकेट में निर्यात करें।
  3. अपने गंतव्य प्रोजेक्ट को बकेट से पढ़ने की अनुमति दें।
  4. बकेट से डेटा को अपने गंतव्य प्रोजेक्ट में आयात करें।

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

इससे पहले कि आप प्रबंधित निर्यात और आयात सेवा का उपयोग कर सकें, आपको निम्नलिखित कार्य पूरे करने होंगे:

  1. अपने स्रोत प्रोजेक्ट और गंतव्य प्रोजेक्ट दोनों के लिए बिलिंग सक्षम करें। केवल बिलिंग सक्षम Google क्लाउड प्रोजेक्ट ही निर्यात और आयात कार्यक्षमता का उपयोग कर सकते हैं।
  2. सुनिश्चित करें कि आपके खाते में आपके स्रोत प्रोजेक्ट और गंतव्य प्रोजेक्ट में आवश्यक क्लाउड IAM अनुमतियाँ हैं। यदि आप दोनों परियोजनाओं के परियोजना स्वामी हैं, तो आपके खाते के पास आवश्यक अनुमतियाँ हैं। अन्यथा, निम्नलिखित क्लाउड IAM भूमिकाएँ क्लाउड फायरस्टोर निर्यात और आयात संचालन के लिए आवश्यक अनुमतियाँ प्रदान करती हैं:

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

    एक प्रोजेक्ट स्वामी ग्रांट एक्सेस के चरणों का पालन करके इनमें से एक भूमिका प्रदान कर सकता है।

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

  4. अपने नए प्रोजेक्ट में इंडेक्स सेट करें। समग्र सूचकांक स्रोत और गंतव्य परियोजनाओं के बीच मेल खाना चाहिए। प्रत्येक दस्तावेज़ को कई बार संसाधित करने से बचने के लिए पहले अनुक्रमणिकाएँ स्थापित की जानी चाहिए।

स्रोत प्रोजेक्ट से डेटा निर्यात करें

अपनी क्लाउड फायरस्टोर निर्यात फ़ाइलों के लिए क्लाउड स्टोरेज बकेट बनाकर और एक निर्यात ऑपरेशन शुरू करके अपना डेटा निर्यात करें।

क्लाउड स्टोरेज बकेट बनाएं

अपने क्लाउड फायरस्टोर डेटाबेस के समान स्थान पर एक क्लाउड स्टोरेज बकेट बनाएं । अपना डेटाबेस स्थान देखने के लिए, अपनी प्रोजेक्ट स्थान सेटिंग देखें। आप निर्यात और आयात कार्यों के लिए अनुरोधकर्ता भुगतान बकेट का उपयोग नहीं कर सकते।

यदि आपका क्लाउड स्टोरेज बकेट आपके सोर्स प्रोजेक्ट में नहीं है , तो आपको सोर्स प्रोजेक्ट के डिफ़ॉल्ट सेवा खाते को बकेट तक पहुंच देनी होगी। प्रत्येक Google क्लाउड प्रोजेक्ट में PROJECT_ID @appspot.gserviceaccount.com नाम से स्वचालित रूप से बनाया गया डिफ़ॉल्ट सेवा खाता होता है। क्लाउड फायरस्टोर निर्यात संचालन क्लाउड स्टोरेज बकेट संचालन को अधिकृत करने के लिए इस डिफ़ॉल्ट सेवा खाते का उपयोग करते हैं। डिफ़ॉल्ट सेवा खाते को अपने स्रोत बकेट तक पहुंच देने के लिए, उसे Storage Admin भूमिका प्रदान करें।

आप क्लाउड शेल में उपलब्ध gsutil टूल से यह भूमिका प्रदान कर सकते हैं:

क्लाउड शेल प्रारंभ करें

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

आप यह भूमिका Google क्लाउड कंसोल में भी दे सकते हैं।

लिखने का कार्य अक्षम करें (वैकल्पिक)

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

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

    कंसोल के क्लाउड फायरस्टोर नियम टैब में, सभी लेखन को अस्वीकार करने के लिए अपने स्रोत प्रोजेक्ट सुरक्षा नियमों को अपडेट करें। उदाहरण के लिए:

      // 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. हॉल्ट एडमिन एसडीके से लिखता है

    सुरक्षा नियम फ़ायरबेस एडमिन एसडीके या Google क्लाउड सर्वर क्लाइंट लाइब्रेरी का उपयोग करके बनाए गए विशेषाधिकार प्राप्त सर्वर वातावरण से आने वाले लेखन को नहीं रोकते हैं। अपने सर्वर को बंद या अपडेट करके अपने व्यवस्थापक सर्वर से लेखन कार्यों को रोकना सुनिश्चित करें।

एक निर्यात ऑपरेशन शुरू करें

अपने स्रोत प्रोजेक्ट से डेटा निर्यात करने के लिए gcloud firestore export कमांड का उपयोग करें। आप अपना सारा डेटा या केवल विशिष्ट संग्रह निर्यात कर सकते हैं। [SOURCE_BUCKET] अपने क्लाउड स्टोरेज बकेट के नाम से बदलें:

सभी डेटा निर्यात करें
gcloud firestore export gs://[SOURCE_BUCKET] --async
विशिष्ट संग्रह निर्यात करें
gcloud firestore export gs://[SOURCE_BUCKET] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] --async

अपने निर्यात ऑपरेशन के outputURIPrefix पर ध्यान दें क्योंकि आप इसे बाद में उपयोग करेंगे। डिफ़ॉल्ट रूप से, क्लाउड फायरस्टोर टाइमस्टैम्प के आधार पर आपकी निर्यात फ़ाइलों में एक प्री-फ़िक्स जोड़ता है:

outputUriPrefix: gs://[SOURCE_BUCKET]/2019-03-05T20:58:23_56418

जैसे ही निर्यात ऑपरेशन चलता है, आप अपने ऑपरेशन की प्रगति देखने के लिए firestore operations list कमांड का उपयोग कर सकते हैं:

gcloud firestore operations list

गंतव्य प्रोजेक्ट में डेटा आयात करें

इसके बाद, गंतव्य प्रोजेक्ट को अपनी क्लाउड फायरस्टोर डेटा फ़ाइलों तक पहुंच दें और एक आयात ऑपरेशन शुरू करें।

गंतव्य प्रोजेक्ट को अपनी डेटा फ़ाइलों तक पहुंच प्रदान करें

इससे पहले कि आप एक आयात ऑपरेशन शुरू कर सकें, आपको यह सुनिश्चित करना होगा कि आपका गंतव्य प्रोजेक्ट आपके क्लाउड फायरस्टोर डेटा फ़ाइलों तक पहुंच सकता है।

डेटा फ़ाइलों को स्थानीय बकेट में ले जाएँ

यदि आपका स्रोत बकेट स्थान आपके गंतव्य प्रोजेक्ट के क्लाउड फायरस्टोर स्थान से भिन्न है, तो आपको अपनी डेटा फ़ाइलों को अपने गंतव्य प्रोजेक्ट के समान स्थान पर क्लाउड स्टोरेज बकेट में ले जाना होगा।

बकेट को स्थानांतरित करने और उसका नाम बदलने में दिए गए चरणों का पालन करके अपनी डेटा फ़ाइलों को किसी अन्य क्लाउड स्टोरेज बकेट में ले जाएं। निम्नलिखित सभी चरणों के लिए, इस नई बकेट का उपयोग [SOURCE_BUCKET] के रूप में करें।

प्रोजेक्ट सेवा खाते को अपने स्रोत बकेट तक पहुंच प्रदान करें

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

आप क्लाउड शेल में उपलब्ध gsutil टूल से आवश्यक भूमिकाएँ प्रदान कर सकते हैं:

क्लाउड शेल प्रारंभ करें

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

आप यह भूमिका Google क्लाउड कंसोल में भी दे सकते हैं।

एक आयात कार्रवाई प्रारंभ करें

आयात कार्रवाई शुरू करने से पहले, सुनिश्चित करें कि 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