এই পৃষ্ঠাটি বর্ণনা করে কিভাবে Cloud Firestore ডেটা ধরে রাখতে এবং পুনরুদ্ধার করতে পয়েন্ট-ইন-টাইম রিকভারি (PITR) ব্যবহার করতে হয়।
PITR ধারণাগুলি বুঝতে, পয়েন্ট-ইন-টাইম পুনরুদ্ধার দেখুন।
অনুমতি
পিআইটিআর সেটিংস পরিচালনা করার জন্য আপনার প্রয়োজনীয় অনুমতিগুলি পেতে, আপনার প্রশাসককে আপনি যে প্রকল্পে পিআইটিআর সক্ষম করতে চান সেখানে আপনাকে নিম্নলিখিত IAM ভূমিকাগুলি প্রদান করতে বলুন:
- ক্লাউড ডেটাস্টোরের মালিক (
roles/datastore.owner
)
কাস্টম ভূমিকার জন্য, নিশ্চিত করুন যে নিম্নলিখিত অনুমতিগুলি দেওয়া হয়েছে:
- একটি ডাটাবেস তৈরি করার সময় PITR সক্ষম করতে:
datastore.databases.create
- বিদ্যমান ডাটাবেসে PITR সেটিংস আপডেট করতে:
datastore.databases.update
,datastore.databases.list
- পিআইটিআর ডেটা থেকে রিড সম্পাদন করতে:
datastore.databases.get
,datastore.entities.get
,datastore.entities.list
- PITR ডেটা রপ্তানি করতে:
datastore.databases.export
- PITR ডেটা আমদানি করতে:
datastore.databases.import
আপনি শুরু করার আগে
আপনি PITR ব্যবহার শুরু করার আগে নিম্নলিখিত পয়েন্টগুলি নোট করুন:
- আপনি PITR সক্ষম করার পরপরই আপনি অতীতের সাত দিন থেকে পড়া শুরু করতে পারবেন না।
- আপনি একটি ডাটাবেস তৈরি করার সময় PITR সক্ষম করতে চাইলে, আপনাকে অবশ্যই
gcloud firestore databases create
কমান্ড ব্যবহার করতে হবে। Google ক্লাউড কনসোল ব্যবহার করে একটি ডাটাবেস তৈরি করার সময় PITR সক্ষম করা সমর্থিত নয়৷ - Cloud Firestore পিআইটিআর সক্ষম করার পর বিন্দু থেকে সংস্করণগুলি ধরে রাখা শুরু করে৷
- আপনি PITR নিষ্ক্রিয় করার পরে আপনি PITR উইন্ডোতে PITR ডেটা পড়তে পারবেন না৷
- আপনি যদি এটি নিষ্ক্রিয় করার সাথে সাথে PITR পুনরায় সক্ষম করেন, তাহলে অতীতের PITR ডেটা আর উপলব্ধ থাকবে না৷ PITR নিষ্ক্রিয় করার আগে তৈরি করা যেকোনো PITR ডেটা PITR মেয়াদ শেষ হওয়ার তারিখের পরে মুছে ফেলা হবে।
- যদি আপনি ঘটনাক্রমে শেষ ঘন্টায় ডেটা মুছে ফেলেন এবং PITR অক্ষম করা হয়, আপনি মুছে ফেলার এক ঘন্টার মধ্যে PITR সক্ষম করে আপনার ডেটা পুনরুদ্ধার করতে পারেন।
- মেয়াদোত্তীর্ণ পিআইটিআর ডেটাতে সঞ্চালিত যেকোনো পঠন ব্যর্থ হয়।
PITR সক্ষম করুন৷
PITR ব্যবহার করার আগে, আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করুন । শুধুমাত্র Google ক্লাউড প্রজেক্টে বিলিং চালু আছে তারাই PITR কার্যকারিতা ব্যবহার করতে পারে।
আপনার ডাটাবেসের জন্য PITR সক্ষম করতে:
কনসোল
Google ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
ডাটাবেসের তালিকা থেকে প্রয়োজনীয় ডাটাবেস নির্বাচন করুন।
নেভিগেশন মেনুতে, ডিজাস্টার রিকভারি ক্লিক করুন।
সেটিংস সম্পাদনা করতে সম্পাদনা ক্লিক করুন.
পয়েন্ট-ইন-টাইম পুনরুদ্ধার সক্ষম করুন চেক বক্সটি নির্বাচন করুন এবং তারপর সংরক্ষণ করুন ক্লিক করুন।
PITR সক্ষম করার জন্য স্টোরেজ খরচ বহন করতে হবে। আরও তথ্যের জন্য মূল্য দেখুন।
PITR অক্ষম করতে, Google ক্লাউড কনসোলে দুর্যোগ পুনরুদ্ধার পৃষ্ঠা থেকে পয়েন্ট-ইন-টাইম পুনরুদ্ধার সক্ষম করুন চেক বক্সটি সাফ করুন৷
জিক্লাউড
ডাটাবেস তৈরির সময় পিআইটিআর সক্ষম করুন gcloud firestore databases create
:
gcloud firestore databases create\
--location=LOCATION\
[--database=DATABASE_ID; default="(default)"]\
[--type=TYPE; default="firestore-native"]\
--enable-pitr
নিম্নরূপ মান প্রতিস্থাপন করুন:
-
LOCATION
- অবস্থান যেখানে আপনি আপনার ডাটাবেস তৈরি করতে চান। -
DATABASE_ID
- ডাটাবেস আইডি বা (ডিফল্ট) সেট করা হয়েছে। -
TYPE
- firestore-নেটিভ সেট করা হয়েছে।
আপনি নিম্নরূপ gcloud firestore databases update
কমান্ড ব্যবহার করে PITR অক্ষম করতে পারেন:
gcloud firestore databases update\
[--database=DATABASE_ID; default="(default)"]\
--no-enable-pitr
নিম্নরূপ মান প্রতিস্থাপন করুন:
-
DATABASE_ID
- ডাটাবেস আইডি বা (ডিফল্ট) সেট করা হয়েছে।
ধরে রাখার সময়কাল এবং প্রথম সংস্করণের সময় পান
কনসোল
Google ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
ডাটাবেসের তালিকা থেকে প্রয়োজনীয় ডাটাবেস নির্বাচন করুন।
নেভিগেশন মেনুতে, ডিজাস্টার রিকভারি ক্লিক করুন।
সেটিংস বিভাগে, ধরে রাখার সময়কাল এবং প্রথম সংস্করণের সময় নোট করুন।
- ধরে রাখার সময়কাল : যে সময়কালে Cloud Firestore ডাটাবেসের জন্য ডেটার সমস্ত সংস্করণ ধরে রাখে। যখন PITR অক্ষম থাকে তখন মান হল এক ঘন্টা এবং PITR সক্ষম হলে সাত দিন৷
- প্রথমতম সংস্করণের সময় : প্রথমতম টাইমস্ট্যাম্প যেখানে ডেটার পুরানো সংস্করণগুলি পিআইটিআর উইন্ডোতে পড়া যায়৷ এই মানটি Cloud Firestore দ্বারা ক্রমাগত আপডেট করা হয় এবং এটিকে জিজ্ঞাসা করার সাথে সাথে এটি বাসি হয়ে যায়। আপনি যদি ডেটা পুনরুদ্ধার করার জন্য এই মানটি ব্যবহার করেন, তাহলে আপনি পুনরুদ্ধার শুরু করার মুহূর্ত থেকে যখন মানটি জিজ্ঞাসা করা হয় সেই মুহূর্ত থেকে সময়ের জন্য অ্যাকাউন্ট নিশ্চিত করুন৷
- পয়েন্ট-ইন-টাইম পুনরুদ্ধার : PITR সক্ষম হলে
Enabled
দেখায়। PITR নিষ্ক্রিয় হলে, আপনিDisabled
দেখতে পাবেন।
জিক্লাউড
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/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
:POINT_IN_TIME_RECOVERY_ENABLED
দেখায়, যদি PITR সক্রিয় থাকে। যদি PITR অক্ষম করা থাকে, আপনি হয়POINT_IN_TIME_RECOVERY_DISABLED
দেখতে পাবেন অথবাpointInTimeRecoveryEnablement
ক্ষেত্রটি প্রদর্শিত নাও হতে পারে৷ -
versionRetentionPeriod
: সময়কাল যার জন্য পিআইটিআর ডেটা মিলিসেকেন্ডে রাখা হয়। 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 পদ্ধতিগুলি ব্যবহার করে একটি পঠন সম্পাদন করতে, নিম্নলিখিত বিকল্পগুলির মধ্যে একটি চেষ্টা করুন:
আপনার পঠন পদ্ধতির অনুরোধে,
readOptions
পদ্ধতিতে একটি সমর্থিত PITR টাইমস্ট্যাম্প হিসাবেreadTime
মানটি পাস করুন৷ একটি PITR টাইমস্ট্যাম্প হয় গত ঘন্টার মধ্যে মাইক্রোসেকেন্ডের নির্ভুল টাইমস্ট্যাম্প হতে পারে বা গত ঘন্টার পরে পুরো মিনিটের টাইমস্ট্যাম্প হতে পারে, তবেearliestVersionTime
চেয়ে আগে নয়৷একাধিক PITR রিডের জন্য শুধুমাত্র
ReadOnly
লেনদেনের অংশ হিসাবেBeginTransaction
পদ্ধতির সাথেreadTime
প্যারামিটার ব্যবহার করুন।
অ্যাপাচি বিম
Cloud Firestore IO Apache Beam সংযোগকারী ব্যবহার করুন ডেটাফ্লো সহ একটি Cloud Firestore ডাটাবেসে ডকুমেন্ট পড়তে বা লিখতে।
PITR রিডগুলি Cloud Firestore IO সংযোগকারীর নিম্নলিখিত পঠন পদ্ধতিতে সমর্থিত। এই পঠন পদ্ধতিগুলি withReadTime(@Nullable Instant readTime)
পদ্ধতি সমর্থন করে যা আপনি PITR পড়ার জন্য ব্যবহার করতে পারেন:
- FirestoreV1.BatchGetDocuments
- FirestoreV1.ListCollectionIds
- FirestoreV1.ListDocuments
- FirestoreV1.PartitionQuery
জাভা
বাল্ক রিড বা রাইট অপারেশনের জন্য নিম্নলিখিত কোডটি ডেটাফ্লো পাইপলাইন কোডের উদাহরণ সহ ব্যবহার করা যেতে পারে। উদাহরণটি 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
উদাহরণগুলির একটি সম্পূর্ণ তালিকার জন্য, Github সংগ্রহস্থল দেখুন।
PITR ডেটা থেকে রপ্তানি এবং আমদানি
আপনি gcloud firestore export
কমান্ড ব্যবহার করে PITR ডেটা থেকে Cloud Storage আপনার ডাটাবেস রপ্তানি করতে পারেন। আপনি পিআইটিআর ডেটা রপ্তানি করতে পারেন যেখানে টাইমস্ট্যাম্পটি বিগত সাত দিনের মধ্যে পুরো মিনিটের টাইমস্ট্যাম্প, তবে earliestVersionTime
চেয়ে আগে নয়। যদি নির্দিষ্ট টাইমস্ট্যাম্পে ডেটা আর বিদ্যমান না থাকে, তাহলে এক্সপোর্ট অপারেশন ব্যর্থ হয়।
পিআইটিআর এক্সপোর্ট অপারেশন সমস্ত ফিল্টারকে সমর্থন করে, যার মধ্যে সমস্ত নথির রপ্তানি এবং নির্দিষ্ট সংগ্রহের রপ্তানিও রয়েছে।
পছন্দসই পুনরুদ্ধার টাইমস্ট্যাম্পে
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'
।
পিআইটিআর ডেটা রপ্তানি করার আগে নিম্নলিখিত পয়েন্টগুলি নোট করুন:
- RFC 3339 ফর্ম্যাটে টাইমস্ট্যাম্প নির্দিষ্ট করুন। উদাহরণস্বরূপ,
2023-05-26T10:20:00.00Z
বা2023-10-19T10:30:00.00-07:00
। - নিশ্চিত করুন যে আপনি যে টাইমস্ট্যাম্পটি নির্দিষ্ট করেছেন তা গত সাত দিনের মধ্যে পুরো মিনিটের টাইমস্ট্যাম্প, তবে
earliestVersionTime
এর আগে নয়। যদি নির্দিষ্ট টাইমস্ট্যাম্পে ডেটা আর বিদ্যমান না থাকে, একটি ত্রুটি তৈরি হয়। টাইমস্ট্যাম্প অবশ্যই একটি সম্পূর্ণ মিনিট হতে হবে, এমনকি যদি নির্দিষ্ট সময়টি গত ঘন্টার মধ্যে হয়। - আপনি একটি ব্যর্থ PITR রপ্তানির জন্য চার্জ করা হয় না.
-
একটি ডাটাবেসে আমদানি করুন।
আপনার রপ্তানিকৃত ডাটাবেস আমদানি করতে সমস্ত নথি আমদানির ধাপগুলি ব্যবহার করুন৷ আপনার ডাটাবেসে যদি কোনো ডকুমেন্ট আগে থেকেই থাকে, তাহলে তা ওভাররাইট করা হবে।