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

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

PITR ধারণাগুলো বুঝতে হলে, Point-in-time recovery দেখুন।

অনুমতি

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

শুরু করার আগে

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

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

PITR সক্রিয় করুন

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

আপনার ডাটাবেসের জন্য PITR সক্রিয় করতে:

কনসোল

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

    ডাটাবেসে যান

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

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

  4. সেটিংস সম্পাদনা করতে এডিট-এ ক্লিক করুন।

  5. ‘Enable point-in-time recovery’ চেকবক্সটি নির্বাচন করুন এবং তারপরে ‘Save’-এ ক্লিক করুন।

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

PITR নিষ্ক্রিয় করতে, Google Cloud কনসোলের Disaster Recovery পৃষ্ঠা থেকে Enable point-in-time recovery চেকবক্সটির টিক চিহ্ন তুলে দিন।

জিক্লাউড

ডাটাবেস তৈরির সময় 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. গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডাটাবেসে যান

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

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

  4. সেটিংস বিভাগে, ডেটা সংরক্ষণের সময়কাল এবং সর্বপ্রথম সংস্করণের সময় লক্ষ্য করুন।

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

জিক্লাউড

নিম্নলিখিতভাবে 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

Cloud Firestore সমস্ত রিড মেথড, যেমন get , list , batchGet , listCollectionIds , listDocuments , runQuery , runAggregationQuery এবং partitionQuery- তে PITR রিড সমর্থিত।

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

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

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

অ্যাপাচি বিম

ডেটাফ্লো ব্যবহার করে Cloud Firestore আইও অ্যাপাচি বিম কানেক্টরের মাধ্যমে বৃহৎ পরিসরে Cloud Firestore ডাটাবেসে ডকুমেন্ট পড়া বা লেখা যায়।

Cloud Firestore IO কানেক্টরের নিম্নলিখিত রিড মেথডগুলিতে 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())
  ...

ডেটাফ্লো পাইপলাইনে readTime এর উদাহরণগুলির সম্পূর্ণ তালিকার জন্য, গিটহাব রিপোজিটরিটি দেখুন।

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

আপনি একটি বিদ্যমান ডেটাবেসকে একটি নির্বাচিত টাইমস্ট্যাম্পে ক্লোন করে একটি নতুন ডেটাবেস তৈরি করতে পারেন:

  • ক্লোন করা ডেটাবেস হলো একটি নতুন ডেটাবেস যা উৎস ডেটাবেসের একই অবস্থানে তৈরি করা হবে।

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

  • ডিফল্টরূপে, ক্লোন করা ডেটাবেসটি সোর্স ডেটাবেসের মতোই এনক্রিপ্ট করা হবে, যেখানে গুগলের ডিফল্ট এনক্রিপশন অথবা CMEK এনক্রিপশন ব্যবহার করা হবে। আপনি একটি ভিন্ন এনক্রিপশন টাইপ নির্দিষ্ট করতে পারেন অথবা CMEK এনক্রিপশনের জন্য একটি ভিন্ন কী ব্যবহার করতে পারেন।

  • টাইমস্ট্যাম্পটির সূক্ষ্মতা এক মিনিট এবং এটি PITR উইন্ডো দ্বারা সংজ্ঞায়িত সময়কালের মধ্যে অতীতের একটি নির্দিষ্ট সময়কে নির্দেশ করে।

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

কনসোল

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

জিক্লাউড

একটি ডাটাবেস ক্লোন করতে 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 : গুগলের ডিফল্ট এনক্রিপশন ব্যবহার করুন।
  • 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 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 : গুগলের ডিফল্ট এনক্রিপশন ব্যবহার করুন।
  • 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 এর আগের নয়। যদি নির্দিষ্ট টাইমস্ট্যাম্পে ডেটা আর বিদ্যমান না থাকে, তাহলে এক্সপোর্ট প্রক্রিয়াটি ব্যর্থ হবে।

পিআইটিআর এক্সপোর্ট অপারেশনটি সমস্ত ফিল্টার সমর্থন করে, যার মধ্যে সকল ডকুমেন্ট এক্সপোর্ট এবং নির্দিষ্ট কালেকশন এক্সপোর্ট অন্তর্ভুক্ত।

  1. নির্বাচিত রিকভারি টাইমস্ট্যাম্পে snapshot-time প্যারামিটারটি নির্দিষ্ট করে ডাটাবেসটি এক্সপোর্ট করুন।

    জিক্লাউড

    আপনার বাকেটে ডাটাবেস এক্সপোর্ট করতে নিম্নলিখিত কমান্ডটি চালান।

    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. ডাটাবেসে আমদানি করুন।

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