पॉइंट-इन-टाइम रिकवरी (पीआईटीआर) के साथ काम करें

यह पृष्ठ बताता है कि क्लाउड फायरस्टोर में डेटा को बनाए रखने और पुनर्प्राप्त करने के लिए पॉइंट-इन-टाइम रिकवरी (पीआईटीआर) का उपयोग कैसे करें।

पीआईटीआर अवधारणाओं को समझने के लिए, पॉइंट-इन-टाइम रिकवरी देखें।

अनुमतियां

PITR सेटिंग्स को प्रबंधित करने के लिए आवश्यक अनुमतियाँ प्राप्त करने के लिए, अपने व्यवस्थापक से उस प्रोजेक्ट पर आपको निम्नलिखित IAM भूमिकाएँ प्रदान करने के लिए कहें जहाँ आप PITR को सक्षम करना चाहते हैं:

  • क्लाउड डेटास्टोर स्वामी ( roles/datastore.owner )

कस्टम भूमिकाओं के लिए, सुनिश्चित करें कि निम्नलिखित अनुमतियाँ दी गई हैं:

  • डेटाबेस बनाते समय PITR को सक्षम करने के लिए: datastore.databases.create
  • मौजूदा डेटाबेस पर PITR सेटिंग्स को अपडेट करने के लिए: datastore.databases.update , datastore.databases.list
  • PITR डेटा से पढ़ने के लिए: datastore.databases.get , datastore.entities.get , datastore.entities.list
  • PITR डेटा निर्यात करने के लिए: datastore.databases.export
  • PITR डेटा आयात करने के लिए: datastore.databases.import

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

PITR का उपयोग शुरू करने से पहले निम्नलिखित बातों पर ध्यान दें:

  • PITR सक्षम करने के तुरंत बाद आप सात दिन पहले से पढ़ना शुरू नहीं कर सकते।
  • यदि आप डेटाबेस बनाते समय PITR को सक्षम करना चाहते हैं, तो आपको gcloud firestore databases create कमांड का उपयोग करना होगा। GCP कंसोल का उपयोग करके डेटाबेस बनाते समय PITR को सक्षम करना समर्थित नहीं है।
  • PITR को सक्षम करने के बाद क्लाउड फायरस्टोर आगे से संस्करणों को बनाए रखना शुरू कर देता है।
  • PITR को अक्षम करने के बाद आप PITR विंडो में PITR डेटा नहीं पढ़ सकते।
  • यदि आप PITR को अक्षम करने के तुरंत बाद पुनः सक्षम करते हैं, तो पिछला PITR डेटा अब उपलब्ध नहीं है। PITR को अक्षम करने से पहले बनाया गया कोई भी PITR डेटा PITR की समाप्ति तिथि के बाद हटा दिया जाएगा।
  • यदि आपने अंतिम घंटे में गलती से डेटा हटा दिया है और PITR अक्षम है, तो आप हटाए जाने के एक घंटे के भीतर PITR को सक्षम करके अपना डेटा पुनर्स्थापित कर सकते हैं।
  • समाप्त हो चुके PITR डेटा पर किया गया कोई भी रीड विफल हो जाता है।

PITR सक्षम करें

PITR का उपयोग करने से पहले, अपने Google क्लाउड प्रोजेक्ट के लिए बिलिंग सक्षम करें । केवल बिलिंग सक्षम Google क्लाउड प्रोजेक्ट ही PITR कार्यक्षमता का उपयोग कर सकते हैं।

अपने डेटाबेस के लिए PITR सक्षम करने के लिए:

सांत्वना देना

  1. Google क्लाउड प्लेटफ़ॉर्म कंसोल में, डेटाबेस पृष्ठ पर जाएँ।

    डेटाबेस पर जाएँ

  2. डेटाबेस की सूची से आवश्यक डेटाबेस का चयन करें।

  3. नेविगेशन मेनू में, डिजास्टर रिकवरी पर क्लिक करें।

  4. सेटिंग्स को संपादित करने के लिए संपादित करें पर क्लिक करें।

  5. पॉइंट-इन-टाइम पुनर्प्राप्ति सक्षम करें चेक बॉक्स का चयन करें और फिर सहेजें पर क्लिक करें।

PITR को सक्षम करने से भंडारण लागत आएगी। अधिक जानकारी के लिए मूल्य निर्धारण देखें.

PITR को अक्षम करने के लिए, GCP कंसोल में डिजास्टर रिकवरी पेज से पॉइंट-इन-टाइम रिकवरी सक्षम करें चेक बॉक्स को साफ़ करें।

gcloud

डेटाबेस निर्माण के दौरान gcloud firestore databases create कमांड के साथ PITR को निम्नानुसार सक्षम करें:

gcloud firestore databases create\
  --location=LOCATION\
  [--database=DATABASE_ID; default="(default)"]\
  [--type=TYPE; default="firestore-native"]\
  --enable-pitr

मानों को इस प्रकार बदलें:

  • Location - वह स्थान जहाँ आप अपना डेटाबेस बनाना चाहते हैं।
  • DATABASE_ID - डेटाबेस आईडी या (डिफ़ॉल्ट) पर सेट करें।
  • TYPE - फायरस्टोर-नेटिव पर सेट करें।

आप निम्नानुसार gcloud firestore databases update कमांड का उपयोग करके PITR को अक्षम कर सकते हैं:

gcloud firestore databases update\
  [--database=DATABASE_ID; default="(default)"]\
  --no-enable-pitr

मानों को इस प्रकार बदलें:

  • DATABASE_ID - डेटाबेस आईडी या (डिफ़ॉल्ट) पर सेट करें।

अवधारण अवधि और प्रारंभिक संस्करण समय प्राप्त करें

सांत्वना देना

  1. Google क्लाउड प्लेटफ़ॉर्म कंसोल में, डेटाबेस पृष्ठ पर जाएँ।

    डेटाबेस पर जाएँ

  2. डेटाबेस की सूची से आवश्यक डेटाबेस का चयन करें।

  3. नेविगेशन मेनू में, डिजास्टर रिकवरी पर क्लिक करें।

  4. सेटिंग्स अनुभाग में, अवधारण अवधि और प्रारंभिक संस्करण समय नोट करें।

    • अवधारण अवधि : वह अवधि जिसमें क्लाउड फायरस्टोर डेटाबेस के लिए डेटा के सभी संस्करणों को बनाए रखता है। PITR अक्षम होने पर मान एक घंटा है और PITR सक्षम होने पर सात दिन है।
    • प्रारंभिक संस्करण समय : सबसे प्रारंभिक टाइमस्टैम्प जिस पर डेटा के पुराने संस्करण PITR विंडो में पढ़े जा सकते हैं। यह मान क्लाउड फायरस्टोर द्वारा लगातार अपडेट किया जाता है और क्वेरी करते ही पुराना हो जाता है। यदि आप डेटा को पुनर्प्राप्त करने के लिए इस मान का उपयोग कर रहे हैं, तो उस समय से समय का ध्यान रखना सुनिश्चित करें जब मूल्य पूछा जाता है और उस क्षण तक जब आप पुनर्प्राप्ति शुरू करते हैं।
    • पॉइंट-इन-टाइम पुनर्प्राप्ति : यदि PITR सक्षम है, तो Enabled दिखाता है। यदि PITR अक्षम है, तो आपको Disabled दिखाई देगा।

gcloud

gcloud firestore डेटाबेस विवरण कमांड को इस प्रकार चलाएँ:

gcloud firestore databases describe --database=DATABASE_ID

DATABASE_ID को डेटाबेस आईडी या default से बदलें।

यहाँ आउटपुट है:

    appEngineIntegrationMode: ENABLED
    concurrencyMode: PESSIMISTIC
    createTime: '2021-03-24T17:02:35.234Z'
    deleteProtectionState: DELETE_PROTECTION_DISABLED
    earliestVersionTime: '2023-06-12T16:17:25.222474Z'
    etag: IIDayqOevv8CMNTvyNK4uv8C
    keyPrefix: s
    locationId: nam5
    name: projects/PROJECT_ID/databases/(default)
    pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_DISABLED
    type: FIRESTORE_NATIVE
    uid: 5230c382-dcd2-468f-8cb3-2a1acfde2b32
    updateTime: '2021-11-17T17:48:22.171180Z'
    versionRetentionPeriod: 3600s

कहाँ,

  • earliestVersionTime - संग्रहित सबसे पुराने PITR डेटा का टाइमस्टैम्प।
  • pointInTimeRecoveryEnablement : यदि पीआईटीआर सक्षम है तो POINT_IN_TIME_RECOVERY_ENABLED दिखाता है। यदि PITR अक्षम है, तो आपको या तो POINT_IN_TIME_RECOVERY_DISABLED दिखाई देगा या pointInTimeRecoveryEnablement फ़ील्ड प्रदर्शित नहीं हो सकती है।
  • versionRetentionPeriod - वह समय अवधि जिसके लिए PITR डेटा मिलीसेकंड में बनाए रखा जाता है। PITR अक्षम होने पर मान एक घंटा या PITR सक्षम होने पर सात दिन हो सकता है।

PITR डेटा पढ़ें

आप क्लाइंट लाइब्रेरीज़, REST API विधियों, या FirestoreIO Apache Beam कनेक्टर का उपयोग करके PITR डेटा पढ़ सकते हैं।

ग्राहक पुस्तकालय

जावा

आपको PITR डेटा पढ़ने के लिए ReadOnly लेनदेन का उपयोग करना होगा। आप रीड्स में सीधे readTime निर्दिष्ट नहीं कर सकते। अधिक जानकारी के लिए लेन-देन और बैचेड राइट्स देखें।

  Firestore firestore = …

  TransactionOptions options =
          TransactionOptions.createReadOnlyOptionsBuilder()
              .setReadTime(
                  com.google.protobuf.Timestamp.newBuilder()
                      .setSeconds(1684098540L)
                      .setNanos(0))
              .build();

  ApiFuture<Void> futureTransaction = firestore.runTransaction(
              transaction -> {
                // Does a snapshot read document lookup
                final DocumentSnapshot documentResult =
                    transaction.get(documentReference).get();

                // Executes a snapshot read query
                final QuerySnapshot queryResult =
                  transaction.get(query).get();
              },
              options);

  // Blocks on transaction to complete
  futureTransaction.get();

नोड

PITR डेटा को पढ़ने के लिए आपको ReadOnly लेनदेन का उपयोग करना होगा। आप रीड्स में सीधे readTime निर्दिष्ट नहीं कर सकते। अधिक जानकारी के लिए लेन-देन और बैचेड राइट्स देखें।

  const documentSnapshot = await firestore.runTransaction(
    updateFunction => updateFunction.get(documentRef),
    {readOnly: true, readTime: new Firestore.Timestamp(1684098540, 0)}
);

  const querySnapshot = await firestore.runTransaction(
    updateFunction => updateFunction.get(query),
    {readOnly: true, readTime: new Firestore.Timestamp(1684098540, 0)}
  )

बाकी एपीआई

PITR रीड्स सभी क्लाउड फायरस्टोर रीड विधियों में समर्थित हैं, जो हैं get , list , BatchGet , listCollectionIds , listDocuments , runQuery , runAggregationQuery , और partitionQuery

REST विधियों का उपयोग करके पढ़ने के लिए, निम्न विकल्पों में से एक आज़माएँ:

  1. अपने रीड मेथड अनुरोध में, readTime मान को readOptions मेथड में समर्थित PITR टाइमस्टैम्प के रूप में पास करें। एक PITR टाइमस्टैम्प या तो पिछले घंटे के भीतर माइक्रोसेकंड सटीक टाइमस्टैम्प हो सकता है या पिछले घंटे से परे पूरे मिनट का टाइमस्टैम्प हो सकता है, लेकिन earliestVersionTime से पहले नहीं।

  2. एकाधिक पीआईटीआर रीड्स के लिए ReadOnly लेनदेन के हिस्से के रूप में BeginTransaction विधि के साथ readTime पैरामीटर का उपयोग करें।

अपाचे बीम

डेटाफ्लो के साथ बड़े पैमाने पर क्लाउड फायरस्टोर डेटाबेस में दस्तावेज़ों को पढ़ने या लिखने के लिए क्लाउड फायरस्टोरआईओ अपाचे बीम कनेक्टर का उपयोग करें।

PITR रीड्स क्लाउड फायरस्टोरIO कनेक्टर की निम्नलिखित रीड विधि में समर्थित हैं। ये पढ़ने की विधियाँ withReadTime(@Nullable Instant readTime) विधि का समर्थन करती हैं जिनका उपयोग आप PITR पढ़ने के लिए कर सकते हैं:

जावा

निम्नलिखित कोड का उपयोग थोक पढ़ने या लिखने के संचालन के लिए उदाहरण डेटाफ्लो पाइपलाइन कोड के साथ किया जा सकता है। उदाहरण PITR पढ़ने के लिए withReadTime(@Nullable Instant readTime) विधि का उपयोग करता है।

  Instant readTime = Instant.ofEpochSecond(1684098540L);

  PCollection<Document> documents =
      pipeline
          .apply(Create.of(collectionId))
          .apply(
              new FilterDocumentsQuery(
                  firestoreOptions.getProjectId(), firestoreOptions.getDatabaseId()))
          .apply(FirestoreIO.v1().read().runQuery().withReadTime(readTime).withRpcQosOptions(rpcQosOptions).build())
  ...

डेटाफ्लो पाइपलाइन में readTime उदाहरणों की पूरी सूची के लिए, जीथब रिपॉजिटरी देखें।

PITR डेटा से निर्यात और आयात करें

आप gcloud firestore export कमांड का उपयोग करके अपने डेटाबेस को PITR डेटा से क्लाउड स्टोरेज में निर्यात कर सकते हैं। आप PITR डेटा निर्यात कर सकते हैं जहां टाइमस्टैंप पिछले सात दिनों के भीतर पूरे मिनट का टाइमस्टैंप है, लेकिन जल्द से earliestVersionTime से पहले नहीं। यदि निर्दिष्ट टाइमस्टैम्प पर डेटा मौजूद नहीं है, तो निर्यात कार्रवाई विफल हो जाती है।

PITR निर्यात ऑपरेशन सभी दस्तावेज़ों के निर्यात और विशिष्ट संग्रहों के निर्यात सहित सभी फ़िल्टर का समर्थन करता है।

  1. वांछित पुनर्प्राप्ति टाइमस्टैम्प पर snapshot-time पैरामीटर निर्दिष्ट करते हुए डेटाबेस निर्यात करें।

    gcloud

    डेटाबेस को अपनी बकेट में निर्यात करने के लिए निम्न कमांड चलाएँ।

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    कहाँ,

    • BUCKET_NAME_PATH - एक वैकल्पिक पथ उपसर्ग के साथ एक वैध क्लाउड स्टोरेज बकेट जहां निर्यात फ़ाइलें संग्रहीत की जाती हैं।
    • PITR_TIMESTAMP - मिनट ग्रैन्युलैरिटी पर एक PITR टाइमस्टैम्प, उदाहरण के लिए, 2023-05-26T10:20:00.00Z या 2023-10-19T10:30:00.00-07:00
    • COLLECTION_IDS - संग्रह आईडी या संग्रह समूह आईडी की एक सूची, उदाहरण के लिए- 'specific collection group1' , 'specific collection group2'
    • NAMESPACE_IDS - नेमस्पेस आईडी की एक सूची, उदाहरण के लिए- 'customer' , 'orders'

    PITR डेटा निर्यात करने से पहले निम्नलिखित बातों पर ध्यान दें:

    • RFC 3339 प्रारूप में टाइमस्टैम्प निर्दिष्ट करें। उदाहरण के लिए, 2023-05-26T10:20:00.00Z या 2023-10-19T10:30:00.00-07:00
    • सुनिश्चित करें कि आपके द्वारा निर्दिष्ट टाइमस्टैम्प पिछले सात दिनों के भीतर पूरे मिनट का टाइमस्टैम्प है, लेकिन earliestVersionTime से पहले का नहीं। यदि निर्दिष्ट टाइमस्टैम्प पर डेटा मौजूद नहीं है, तो एक त्रुटि उत्पन्न होती है। टाइमस्टैम्प पूरे एक मिनट का होना चाहिए, भले ही निर्दिष्ट समय पिछले घंटे के भीतर हो।
    • आपसे विफल PITR निर्यात के लिए शुल्क नहीं लिया जाएगा।
  2. डेटाबेस में आयात करें.

    अपने निर्यातित डेटाबेस को आयात करने के लिए सभी दस्तावेज़ आयात करें में दिए गए चरणों का उपयोग करें। यदि आपके डेटाबेस में कोई दस्तावेज़ पहले से मौजूद है, तो उसे अधिलेखित कर दिया जाएगा।