Standard वर्शन से Enterprise वर्शन पर माइग्रेट करना

Firestore Standard edition डेटाबेस से Firestore Enterprise edition डेटाबेस में डेटा माइग्रेट करने के लिए, हमारा सुझाव है कि इनमें से किसी एक विकल्प का इस्तेमाल करें:

  • इंपोर्ट और एक्सपोर्ट करने की सुविधाएं. इंपोर्ट करने की प्रोसेस से मिली डेटा फ़ाइलें, Enterprise और Standard, दोनों वर्शन के साथ काम करती हैं.

  • firestore-to-firestore Dataflow टेंप्लेट. Dataflow सेवा की मदद से, डेटा पाइपलाइन बनाई जा सकती हैं. साथ ही, firestore-to-firestore टेंप्लेट, Cloud Firestore डेटाबेस के बीच बैच पाइपलाइन बनाता है.

इंपोर्ट और एक्सपोर्ट करने का विकल्प इस्तेमाल करना आसान है. इसमें कॉन्फ़िगरेशन के कम विकल्प मिलते हैं.

Dataflow टेंप्लेट को ज़्यादा कस्टमाइज़ किया जा सकता है. टेंप्लेट कोड को बढ़ाया जा सकता है, ताकि कुछ डेटा माइग्रेट किया जा सके या डेटा को बदला जा सके. आपके पास वर्कर की संख्या और साइज़ को कंट्रोल करने का विकल्प भी होता है.

दोनों विकल्पों में, प्रोजेक्ट और क्षेत्रों के बीच माइग्रेशन की सुविधा उपलब्ध है.

एक्सपोर्ट और इंपोर्ट करके डेटा माइग्रेट करना

एक्सपोर्ट और इंपोर्ट की कार्रवाइयों की मदद से डेटा माइग्रेट करने के लिए, डेटा एक्सपोर्ट और इंपोर्ट करना लेख पढ़ें. डेटा को किसी दूसरे प्रोजेक्ट के डेटाबेस में ले जाने के लिए, डेटा को एक प्रोजेक्ट से दूसरे प्रोजेक्ट में ले जाना लेख पढ़ें.

Dataflow टेंप्लेट का इस्तेमाल करके डेटा माइग्रेट करना

firestore-to-firestore Dataflow टेंप्लेट का इस्तेमाल करके डेटा माइग्रेट करने के लिए, यहां दिए गए निर्देश पढ़ें.

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

  1. डेटा माइग्रेट करने से पहले, पक्का करें कि सोर्स डेटाबेस पर किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) चालू हो. Dataflow जॉब, पीआईटीआर का इस्तेमाल करके पीआईटीआर टाइमस्टैंप पर डेटा को पढ़ता है. अगर PITR की सुविधा बंद है, तो एक घंटे से ज़्यादा समय तक चलने पर जॉब फ़ेल हो जाएगी.

  2. इस टेंप्लेट का इस्तेमाल करने के लिए, datastore.googleapis.com एपीआई चालू होना चाहिए.

  3. अगले सेक्शन में बताई गई ज़रूरी भूमिकाएं असाइन करें.

ज़रूरी भूमिकाएं

डेटा को एक डेटाबेस से दूसरे डेटाबेस में माइग्रेट करने के लिए, ये भूमिकाएं असाइन करें. आपको कस्टम भूमिकाओं या पहले से तय अन्य भूमिकाओं के ज़रिए भी ज़रूरी अनुमतियां मिल सकती हैं:

  1. नया डेटाबेस बनाने और Cloud Firestore डेटा को ऐक्सेस करने के लिए, अपने एडमिन से अनुरोध करें कि वह आपको आपके प्रोजेक्ट के लिए, Cloud Datastore के मालिक (roles/datastore.owner) की Identity and Access Management (IAM) भूमिका असाइन करे.
  2. Dataflow को अपने Cloud Firestore डेटाबेस में डेटा पढ़ने और लिखने का ऐक्सेस देने के लिए, अपने प्रोजेक्ट में Dataflow वर्कर सेवा खाते (उदाहरण के लिए, PROJECT_NUMBER-compute@) को Cloud Datastore User (roles/datastore.user) IAM भूमिका असाइन करें.

    Dataflow सुरक्षा के बारे में ज़्यादा जानने के लिए, Dataflow सुरक्षा और अनुमतियां लेख पढ़ें.

आईएएम की भूमिकाएं देने के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट, फ़ोल्डर, और संगठनों का ऐक्सेस मैनेज करना लेख पढ़ें.

1. Firestore Enterprise edition का नया डेटाबेस बनाना

स्टैंडर्ड एडिशन के डेटाबेस से डेटा को Enterprise एडिशन के डेटाबेस में माइग्रेट करने के लिए, आपको सबसे पहले Enterprise एडिशन का डेस्टिनेशन डेटाबेस बनाना होगा. डेटाबेस बनाना लेख पढ़ें.

2. Dataflow firestore-to-firestore टेंप्लेट चलाना

firestore-to-firestore टेंप्लेट की मदद से, Dataflow जॉब को कॉन्फ़िगर और चलाएं. टेंप्लेट की मदद से, पूरे डेटाबेस या सिर्फ़ चुने गए कलेक्शन ग्रुप को माइग्रेट किया जा सकता है.

सीमाएं

firestore-to-firestore Dataflow टेंप्लेट के लिए, इन सीमाओं का ध्यान रखें:

  • सोर्स डेटाबेस, स्टैंडर्ड एडिशन का डेटाबेस होना चाहिए.
  • माइग्रेशन, डेटा को किसी खास रीड-टाइम पर पढ़ता है. हमारा सुझाव है कि सोर्स डेटाबेस में किसी खास समय पर डेटा वापस पाने की सुविधा (पीआईटीआर) चालू करें. अगर PITR चालू नहीं है, तो डेटा एक घंटे बाद मिट जाता है. साथ ही, डेटा माइग्रेट करने के लिए इतना समय काफ़ी नहीं हो सकता. पीआईटीआर की सुविधा में, डेटा को सात दिनों तक सेव करके रखा जाता है.
  • इंडेक्स माइग्रेट नहीं किए जाते.
  • Dataflow जॉब, डेटाबेस कॉन्फ़िगरेशन को माइग्रेट नहीं करता. जैसे, टाइम टू लिव (टीटीएल) नीतियां, बैकअप, पीआईटीआर, और ग्राहक के मैनेज किए गए एन्क्रिप्शन कुंजियां (सीएमईके).

    आपको नए डेटाबेस पर ये सेटिंग कॉन्फ़िगर करनी होंगी. डेटा माइग्रेशन की स्पीड को बेहतर बनाने के लिए, माइग्रेशन पूरा होने के बाद डेस्टिनेशन डेटाबेस पर टीटीएल, बैकअप, और पीआईटीआर कॉन्फ़िगर करें.

यहां दिए गए उदाहरणों में, Google Cloud CLI का इस्तेमाल करके टेंप्लेट को चलाने का तरीका बताया गया है.

पूरा डेटा माइग्रेट करना

पूरा डेटा माइग्रेट करने के लिए, इस कमांड का इस्तेमाल करें:

gcloud dataflow flex-template run "JOB_NAME" \
  --project "PROJECT" \
  --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

इनकी जगह ये डालें:

  • JOB_NAME: नौकरी का नाम.
  • PROJECT: आपके Google Cloud प्रोजेक्ट का आईडी.
  • REGION_NAME: वह Google Cloud लोकेशन जहां आपको Dataflow जॉब चलानी है. ऐसी जगह का इस्तेमाल करें जो आपके डेटाबेस के आस-पास हो.
  • VERSION: टेंप्लेट का वह वर्शन जिसका आपको इस्तेमाल करना है. इन वैल्यू का इस्तेमाल किया जा सकता है:

    • latest टेंप्लेट के नए वर्शन का इस्तेमाल करने के लिए, जो बकेट में बिना तारीख वाले पैरंट फ़ोल्डर में उपलब्ध है— gs://dataflow-templates-REGION_NAME/latest/
    • टेम्प्लेट के किसी खास वर्शन का इस्तेमाल करने के लिए, वर्शन का नाम डालें. जैसे, 2023-09-12-00_RC00. यह नाम, बकेट में मौजूद तारीख के हिसाब से बनाए गए पैरंट फ़ोल्डर में नेस्ट किया गया होता है— gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: यह उस सोर्स Google Cloud प्रोजेक्ट का आईडी है जिसमें Firestore Standard Edition का डेटाबेस मौजूद है.

  • SOURCE_DATABASE_ID: यह सोर्स Cloud Firestore डेटाबेस का आईडी है.

  • DESTINATION_PROJECT_ID: नए Cloud Firestore डेटाबेस के लिए, डेस्टिनेशन Google Cloud प्रोजेक्ट का आईडी.

  • DESTINATION_DATABASE_ID: डेस्टिनेशन Cloud Firestore डेटाबेस का आईडी.

  • READ_TIME: सोर्स डेटाबेस से डेटा पढ़ने के लिए टाइमस्टैंप. इसे आरएफ़सी 3339 फ़ॉर्मैट में टाइमस्टैंप पर सेट करें. इसमें मिनट के हिसाब से जानकारी होती है. जैसे, 2026-05-15T16:31:00.00Z.

    सबसे पुराना मान्य टाइमस्टैंप, पॉइंट-इन-टाइम रिकवरी (पीआईटीआर) की सेटिंग पर निर्भर करता है. सबसे पुराने वर्शन का समय पाना लेख पढ़ें.

चुने गए कलेक्शन ग्रुप माइग्रेट करें

सिर्फ़ कुछ कलेक्शन ग्रुप माइग्रेट करने के लिए, इस कमांड का इस्तेमाल करें:

gcloud dataflow jobs run "JOB_NAME" \
  --project "PROJECT" \
  --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \
  --region REGION_NAME \
  --parameters "sourceProjectId=SOURCE_PROJECT_ID" \
  --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \
  --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \
  --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \
  --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \
  --parameters "readTime=READ_TIME"

इनकी जगह ये डालें:

  • JOB_NAME: नौकरी का नाम.
  • PROJECT: आपके Google Cloud प्रोजेक्ट का आईडी.
  • REGION_NAME: वह Google Cloud लोकेशन जहां आपको Dataflow जॉब चलानी है. ऐसी जगह का इस्तेमाल करें जो आपके डेटाबेस के आस-पास हो.
  • VERSION: टेंप्लेट का वह वर्शन जिसका आपको इस्तेमाल करना है. इन वैल्यू का इस्तेमाल किया जा सकता है:

    • latest टेंप्लेट के नए वर्शन का इस्तेमाल करने के लिए, जो बकेट में बिना तारीख वाले पैरंट फ़ोल्डर में उपलब्ध है— gs://dataflow-templates-REGION_NAME/latest/
    • टेम्प्लेट के किसी खास वर्शन का इस्तेमाल करने के लिए, वर्शन का नाम, जैसे कि 2023-09-12-00_RC00. यह नाम, बकेट में मौजूद तारीख के हिसाब से बनाए गए पैरंट फ़ोल्डर में नेस्ट किया गया होता है— gs://dataflow-templates-REGION_NAME/
  • SOURCE_PROJECT_ID: यह सोर्स Google Cloud प्रोजेक्ट का आईडी है. इसमें Firestore Standard edition का डेटाबेस मौजूद होता है.

  • SOURCE_DATABASE_ID: यह सोर्स Cloud Firestore डेटाबेस का आईडी है.

  • COLLECTION_GROUP_IDS: माइग्रेट करने के लिए, कॉमा लगाकर अलग की गई कलेक्शन ग्रुप आईडी की सूची.

    सब-कलेक्शन को बार-बार शामिल नहीं किया जाता. उदाहरण के लिए, अगर आपने users कलेक्शन ग्रुप चुना है, तो माइग्रेशन में /users/userid/messages पर मौजूद messages सब-कलेक्शन शामिल नहीं होगा. हालांकि, अगर आपने messages कलेक्शन ग्रुप भी चुना है, तो माइग्रेशन में /users/userid/messages पर मौजूद सब-कलेक्शन शामिल होगा.

  • DESTINATION_PROJECT_ID: नए Cloud Firestore डेटाबेस के लिए, डेस्टिनेशन Google Cloud प्रोजेक्ट का आईडी.

  • DESTINATION_DATABASE_ID: डेस्टिनेशन Cloud Firestore डेटाबेस का आईडी.

  • READ_TIME: सोर्स डेटाबेस से डेटा पढ़ने का टाइमस्टैंप. इसे आरएफ़सी 3339 फ़ॉर्मैट में टाइमस्टैंप पर सेट करें. इसमें मिनट के हिसाब से जानकारी दी जाती है. जैसे, 2026-05-15T16:31:00.00Z.

    सबसे पुराना मान्य टाइमस्टैंप, पॉइंट-इन-टाइम रिकवरी (पीआईटीआर) की सेटिंग पर निर्भर करता है. सबसे पुराने वर्शन का समय पाना लेख पढ़ें.

3. डेटाबेस कॉन्फ़िगर करना

firestore-to-firestore जॉब सिर्फ़ डेटा माइग्रेट करती है. इंडेक्स और डेटाबेस की अन्य सेटिंग माइग्रेट नहीं की जाती हैं. डेटा माइग्रेट करने के अलावा, नए डेटाबेस पर ये कॉन्फ़िगरेशन भी किए जा सकते हैं:

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

समस्या का हल

बड़े डेटाबेस के लिए, एक साथ बहुत ज़्यादा डेटा पढ़ने पर जॉब फ़ेल हो सकती है. इस समस्या को ठीक करने के लिए:

आगे क्या करना है