পয়েন্ট-ইন-টাইম রিকভারি (PITR) ব্যবহার করে কাজ করা

Cloud Firestore-এ ডেটা ধরে রাখতে এবং ফিরিয়ে আনতে কীভাবে পয়েন্ট-ইন-টাইম রিকভারি (PITR) ব্যবহার করতে হয় তা এই পৃষ্ঠায় বর্ণনা করা হয়েছে।

PITR-এর ধারণা বুঝতে, পয়েন্ট-ইন-টাইম রিকভারি দেখুন।

অনুমতি

PITR সেটিংস ম্যানেজ করার জন্য প্রয়োজনীয় অনুমতি পেতে, আপনার অ্যাডমিনিস্ট্রেটরকে বলুন, যে প্রোজেক্টে আপনি PITR চালু করতে চান সেখানে আপনাকে নিম্নলিখিত IAM ভূমিকা প্রদান করতে:

  • Cloud Datastore-এর মালিক (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
  • ডেটাবেস ক্লোন করতে: datastore.databases.clone

শুরু করার আগে

PITR ব্যবহার করা শুরু করার আগে নিম্নলিখিত বিষয়গুলি মনে রাখবেন:

  • আপনি PITR চালু করার সাথে সাথেই সাত দিন আগের ডেটা পড়তে পারবেন না।
  • আপনি যদি ডেটাবেস তৈরি করার সময় PITR চালু করতে চান, তাহলে আপনাকে অবশ্যই gcloud firestore databases create কমান্ড ব্যবহার করতে হবে। Google Cloud কনসোল ব্যবহার করে ডেটাবেস তৈরি করার সময় PITR চালু করার সুবিধা কাজ করে না।
  • PITR চালু করার পরে, Cloud Firestore সেই সময় থেকে ভার্সন সেভ করা শুরু করে।
  • আপনি PITR বন্ধ করার পরে PITR উইন্ডোতে PITR ডেটা পড়তে পারবেন না।
  • আপনি PITR বন্ধ করার সাথে সাথেই আবার চালু করলে, আগের PITR ডেটা আর উপলভ্য থাকে না। PITR বন্ধ করার আগে তৈরি করা যেকোনও PITR ডেটা PITR-এর মেয়াদ শেষ হওয়ার তারিখের পরে মুছে ফেলা হবে।
  • আপনি যদি গত এক ঘণ্টার মধ্যে ভুলবশত ডেটা মুছে ফেলেন এবং PITR বন্ধ থাকে, তাহলে আপনি মুছে ফেলার এক ঘণ্টার মধ্যে PITR চালু করে আপনার ডেটা ফিরিয়ে আনতে পারবেন।
  • মেয়াদ শেষ হয়ে যাওয়া PITR ডেটা রিড করার চেষ্টা করলে তা ব্যর্থ হয়।

PITR চালু করুন

PITR ব্যবহার করার আগে, আপনার Google Cloud প্রোজেক্টের জন্য বিলিং চালু করুন। বিলিং চালু করা আছে এমন Google Cloud প্রোজেক্টই শুধু PITR ফাংশনালিটি ব্যবহার করতে পারবে।

আপনার ডেটাবেসের জন্য PITR চালু করতে:

কনসোল

  1. Google Cloud কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডেটাবেসে যান

  2. ডেটাবেসের তালিকা থেকে প্রয়োজনীয় ডেটাবেস বেছে নিন।

  3. নেভিগেশন মেনুতে, ডিজাস্টার রিকভারি বিকল্পে ক্লিক করুন।

  4. সেটিংস এডিট করতে এডিট করুন বিকল্পে ক্লিক করুন।

  5. পয়েন্ট-ইন-টাইম রিকভারি চালু করুন চেকবক্স বেছে নিন এবং তারপরে সেভ করুন বিকল্পে ক্লিক করুন।

PITR চালু করলে স্টোরেজের জন্য খরচ হয়। আরও তথ্যের জন্য দাম দেখুন।

PITR বন্ধ করতে, Google Cloud কনসোলের ডিজাস্টার রিকভারি পৃষ্ঠা থেকে পয়েন্ট-ইন-টাইম রিকভারি চালু করুন চেকবক্স থেকে টিকচিহ্ন সরিয়ে দিন।

gcloud

ডেটাবেস তৈরি করার সময় gcloud firestore databases create ও --enable-ptir কমান্ডের সাহায্যে PITR চালু করুন:

gcloud firestore databases create\
  --location=LOCATION\
  --database=DATABASE_ID\
  --type=firestore-native\
  --enable-pitr

নিম্নলিখিতভাবে ভ্যালু পরিবর্তন করুন:

  • LOCATION - আপনি যেখানে ডেটাবেস তৈরি করতে চান সেই লোকেশন।
  • DATABASE_ID - ডেটাবেসের আইডিতে সেট করা হয়েছে।

আপনি এইভাবে gcloud firestore databases update কমান্ড ব্যবহার করে PITR বন্ধ করতে পারবেন:

gcloud firestore databases update\
  --database=DATABASE_ID\
  --no-enable-pitr

নিম্নলিখিতভাবে ভ্যালু পরিবর্তন করুন:

  • DATABASE_ID - ডেটাবেসের আইডি বা (ডিফল্ট) হিসেবে সেট করা।

রিটেনশন পিরিয়ড ও সবচেয়ে পুরনো ভার্সনের সময় পান

কনসোল

  1. Google Cloud কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডেটাবেসে যান

  2. ডেটাবেসের তালিকা থেকে প্রয়োজনীয় ডেটাবেস বেছে নিন।

  3. নেভিগেশন মেনুতে, ডিজাস্টার রিকভারি বিকল্পে ক্লিক করুন।

  4. সেটিংস বিভাগে, রিটেনশন পিরিয়ড এবং সবচেয়ে পুরনো ভার্সনের সময় নোট করুন।

    • রিটেনশন পিরিয়ড: যে সময়সীমা পর্যন্ত Cloud Firestore ডেটাবেসের জন্য ডেটার সব ভার্সন রেখে দেয়। PITR বন্ধ থাকলে ভ্যালু এক ঘণ্টা এবং PITR চালু থাকলে সাত দিন হয়।
    • সবচেয়ে পুরনো ভার্সনের সময়: সবচেয়ে পুরনো টাইমস্ট্যাম্প যেখানে ডেটার পুরনো ভার্সন PITR উইন্ডোতে পড়া যাবে। এই ভ্যালু Cloud Firestore-এর মাধ্যমে ক্রমাগত আপডেট করা হয় এবং কোয়েরি করার সাথে সাথেই তা বাসি হয়ে যায়। আপনি যদি ডেটা ফিরিয়ে আনার জন্য এই ভ্যালু ব্যবহার করেন, তাহলে ভ্যালু কোয়েরি করার মুহূর্ত থেকে ফিরিয়ে আনার প্রসেস শুরু করার মুহূর্ত পর্যন্ত সময় হিসেব করতে ভুলবেন না।
    • পয়েন্ট-ইন-টাইম রিকভারি: PITR চালু থাকলে, Enabled দেখায়। PITR বন্ধ করা থাকলে, আপনি Disabled দেখতে পাবেন।

gcloud

gcloud firestore databases describe কমান্ডটি এইভাবে রান করুন:

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/DATABASE_ID
    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: PITR চালু থাকলে, 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)}
);

REST API

PITR রিড সব Cloud Firestore রিড পদ্ধতিতে কাজ করে, যেগুলি হল get, list, batchGet, listCollectionIds, listDocuments, runQuery, runAggregationQuery এবং partitionQuery।

REST পদ্ধতি ব্যবহার করে পড়তে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি ব্যবহার করে দেখুন:

  1. আপনার রিড মেথড অনুরোধে, readOptions মেথডে কাজ করে এমন PITR টাইমস্ট্যাম্প হিসেবে readTime ভ্যালু পাস করুন। PITR টাইমস্ট্যাম্প হয় গত এক ঘণ্টার মধ্যে মাইক্রোসেকেন্ড প্রিসিশন টাইমস্ট্যাম্প অথবা গত এক ঘণ্টার বাইরে পুরো মিনিটের টাইমস্ট্যাম্প হতে পারে, তবে earliestVersionTime-এর আগে নয়।

  2. একাধিক PITR রিডের জন্য ReadOnly ট্রানজ্যাকশনের অংশ হিসেবে BeginTransaction পদ্ধতির সাথে readTime প্যারামিটার ব্যবহার করুন।

Apache Beam

Dataflow-এর মাধ্যমে বড় স্কেলে Cloud Firestore ডেটাবেসে ডকুমেন্ট পড়তে বা লিখতে Cloud FirestoreIO Apache Beam কানেক্টর ব্যবহার করুন।

Cloud FirestoreIO কানেক্টরের নিম্নলিখিত রিড পদ্ধতিতে PITR রিড কাজ করে। এই রিড পদ্ধতি 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())
  ...

Dataflow পাইপলাইনে readTime-এর উদাহরণের সম্পূর্ণ তালিকা দেখতে, GitHub রিপোজিটরি দেখুন।

ডেটাবেস থেকে ক্লোন করুন

আপনি একটি নতুন ডেটাবেসে বেছে নেওয়া টাইমস্ট্যাম্পে আগে থেকে থাকা ডেটাবেস ক্লোন করতে পারবেন:

  • ক্লোন করা ডেটাবেস হল একটি নতুন ডেটাবেস যা সোর্স ডেটাবেসের মতো একই লোকেশনে তৈরি করা হবে।

    ক্লোন তৈরি করতে, Cloud Firestore সোর্স ডেটাবেসের পয়েন্ট-ইন-টাইম রিকভারি (PITR) ডেটা ব্যবহার করে। ক্লোন করা ডেটাবেসে সব ডেটা ও ইনডেক্স অন্তর্ভুক্ত থাকে।

  • ডিফল্ট হিসেবে, ক্লোন করা ডেটাবেস সোর্স ডেটাবেসের মতোই এনক্রিপ্ট করা হবে, Google-এর ডিফল্ট এনক্রিপশন বা CMEK এনক্রিপশন ব্যবহার করে। আপনি অন্য কোনও এনক্রিপশনের ধরন নির্দিষ্ট করতে পারেন অথবা CMEK এনক্রিপশনের জন্য অন্য কোনও 'কী' ব্যবহার করতে পারেন।

  • টাইমস্ট্যাম্পে এক মিনিটের গ্র্যানুলারিটি থাকে এবং এটি অতীতের একটি নির্দিষ্ট সময়কে উল্লেখ করে, যা PITR উইন্ডো দ্বারা নির্ধারিত সময়সীমার মধ্যে পড়ে:

    • আপনার ডেটাবেসের জন্য PITR চালু করা থাকলে, আপনি গত ৭ দিনের (বা PITR ৭ দিনের কম সময় আগে চালু করা হলে, তার কম সময়ের) যেকোনও মিনিট বেছে নিতে পারবেন।
    • PITR চালু করা না থাকলে, আপনি গত এক ঘণ্টার মধ্যে যেকোনও মিনিট বেছে নিতে পারবেন।
    • আপনি বেছে নিতে পারেন এমন সবচেয়ে পুরনো টাইমস্ট্যাম্প আপনার ডেটাবেসের বিবরণে চেক করতে পারবেন।

কনসোল

Firebase কনসোলে ডেটাবেস ক্লোন করার সুবিধা নেই। আপনি Google Cloud CLI-এর জন্য নির্দেশাবলী ব্যবহার করে ডেটাবেস ক্লোন করতে পারবেন।

gcloud

ডেটাবেস ক্লোন করতে gcloud firestore databases clone কমান্ড ব্যবহার করুন:

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

নিম্নলিখিতগুলি পরিবর্তন করুন:

  • SOURCE_DATABASE: আগে থেকে থাকা ডেটাবেসের নাম যা আপনি ক্লোন করতে চান। নামটি projects/PROJECT_ID/databases/SOURCE_DATABASE_ID ফর্ম্যাট ব্যবহার করে।

  • PITR_TIMESTAMP: মিনিট গ্র্যানুলারিটিতে RFC 3339 ফর্ম্যাটে PITR টাইমস্ট্যাম্প। যেমন: 2025-06-01T10:20:00.00Z বা 2025-06-01T10:30:00.00-07:00।

  • DESTINATION_DATABASE_ID: নতুন ক্লোন করা ডেটাবেসের জন্য ডেটাবেসের আইডি। এই ডেটাবেসের আইডি কোনও আগে থেকে থাকা ডেটাবেসের সাথে যুক্ত থাকলে চলবে না।

উদাহরণ:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

ডেটাবেস ক্লোন করার সময় আপনি কিছু ট্যাগের সাথে বাইন্ড করতে চাইলে, --tags ফ্ল্যাগ সহ আগের কমান্ড ব্যবহার করুন, এটি বাইন্ড করার জন্য ট্যাগের KEY=VALUE পেয়ারের একটি ঐচ্ছিক তালিকা।

উদাহরণ:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2

ডিফল্ট হিসেবে, ক্লোন করা ডেটাবেসে সোর্স ডেটাবেসের মতো একই এনক্রিপশন কনফিগারেশন থাকবে। এনক্রিপশন কনফিগারেশন পরিবর্তন করতে, --encryption-type আর্গুমেন্ট ব্যবহার করুন:

  • (ডিফল্ট) use-source-encryption: সোর্স ডেটাবেসের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করুন।
  • google-default-encryption: Google-এর ডিফল্ট এনক্রিপশন ব্যবহার করুন।
  • customer-managed-encryption: CMEK এনক্রিপশন ব্যবহার করুন। --kms-key-name আর্গুমেন্টে কী আইডি উল্লেখ করুন।

ক্লোন করা ডেটাবেসের জন্য CMEK এনক্রিপশন কীভাবে কনফিগার করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

Firebase CLI

ডেটাবেস ক্লোন করতে firebase firestore:databases:clone কমান্ড ব্যবহার করুন:

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP'

নিম্নলিখিতগুলি পরিবর্তন করুন:

  • SOURCE_DATABASE: আগে থেকে থাকা ডেটাবেসের নাম যা আপনি ক্লোন করতে চান। নামটি projects/PROJECT_ID/databases/SOURCE_DATABASE_ID ফর্ম্যাট ব্যবহার করে।

  • DESTINATION_DATABASE: নতুন ক্লোন করা ডেটাবেসের জন্য একটি ডেটাবেসের নাম। নামটি projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID ফর্ম্যাট ব্যবহার করে। এই ডেটাবেসের নাম আগে থেকে থাকা কোনও ডেটাবেসের সাথে যুক্ত থাকলে চলবে না।

  • PITR_TIMESTAMP: মিনিট গ্র্যানুলারিটিতে RFC 3339 ফর্ম্যাটে PITR টাইমস্ট্যাম্প। যেমন: 2025-06-01T10:20:00.00Z বা 2025-06-01T10:30:00.00-07:00। নির্দিষ্ট করা না থাকলে, বেছে নেওয়া স্ন্যাপশটটি বর্তমান সময়ের হবে, যা মিনিটে রাউন্ড ডাউন করা হবে।

ডিফল্ট হিসেবে, ক্লোন করা ডেটাবেসে সোর্স ডেটাবেসের মতো একই এনক্রিপশন কনফিগারেশন থাকবে। এনক্রিপশন কনফিগারেশন পরিবর্তন করতে, --encryption-type আর্গুমেন্ট ব্যবহার করুন:

  • (ডিফল্ট) USE_SOURCE_ENCRYPTION: সোর্স ডেটাবেসের মতো একই এনক্রিপশন কনফিগারেশন ব্যবহার করুন।
  • GOOGLE_DEFAULT_ENCRYPTION: Google-এর ডিফল্ট এনক্রিপশন ব্যবহার করুন।
  • CUSTOMER_MANAGED_ENCRYPTION: CMEK এনক্রিপশন ব্যবহার করুন। --kms-key-name আর্গুমেন্টে কী আইডি উল্লেখ করুন।

ক্লোন করা ডেটাবেসের জন্য CMEK এনক্রিপশন কীভাবে কনফিগার করতে হয় তা নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

firebase firestore:databases:clone \
'projects/example-project/databases/(default)' \
'projects/example-project/databases/example-dest-db' \
--snapshot-time 'PITR_TIMESTAMP' \
--encryption-type CUSTOMER_MANAGED_ENCRYPTION

সীমাবদ্ধতা

ক্লোন অপারেশন (default) ডেটাবেস থেকে App Engine সার্চ ডেটা বা ব্লব এন্টিটি ক্লোন করে না। এই ডেটা শুধুমাত্র (default) ডেটাবেসের জন্য প্রযোজ্য এবং আপনি যদি (default) থেকে এমন কোনও ডেটাবেসে ক্লোন করেন যা এই ধরনের ডেটা সাপোর্ট করে না, তাহলে এটি কার্যকর হবে না, তাই এটি ক্লোন থেকে বাদ দেওয়া হয়েছে।

PITR ডেটা থেকে এক্সপোর্ট ও ইমপোর্ট করা

gcloud firestore export কমান্ড ব্যবহার করে PITR ডেটা থেকে আপনার ডেটাবেস Cloud Storage-এ এক্সপোর্ট করতে পারবেন। আপনি 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 - একটি সঠিক Cloud Storage বাকেট, যেখানে এক্সপোর্ট করা ফাইল সেভ করা হয়। এর সাথে ঐচ্ছিক পাথ প্রিফিক্স থাকে।
    • 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. ডেটাবেসে ইমপোর্ট করুন।

    আপনার এক্সপোর্ট করা ডেটাবেস ইমপোর্ট করতে সব ডকুমেন্ট ইমপোর্ট করুন বিকল্পে দেওয়া ধাপগুলি অনুসরণ করুন। আপনার ডেটাবেসে আগে থেকেই কোনও ডকুমেন্ট থাকলে, সেটি ওভাররাইট করা হবে।