ডেটা রপ্তানির সময়সূচী

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে আপনার ক্লাউড ফায়ারস্টোর ডেটা রপ্তানির সময়সূচী করতে হয়। একটি সময়সূচীতে রপ্তানি চালানোর জন্য, আমরা ক্লাউড ফাংশন এবং ক্লাউড শিডিউলার ব্যবহার করার পরামর্শ দিই।

তুমি শুরু করার আগে

পরিচালিত ডেটা রপ্তানির সময়সূচী করার আগে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি সম্পূর্ণ করতে হবে:

  1. আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করুন৷ শুধুমাত্র Google ক্লাউড প্রজেক্টে বিলিং চালু আছে তারা এক্সপোর্ট এবং ইম্পোর্ট ফিচার ব্যবহার করতে পারে।
  2. রপ্তানি ক্রিয়াকলাপগুলির জন্য একটি গন্তব্য ক্লাউড স্টোরেজ বালতি প্রয়োজন৷ আপনার ক্লাউড ফায়ারস্টোর ডাটাবেস অবস্থানের কাছাকাছি একটি অবস্থানে একটি ক্লাউড স্টোরেজ বালতি তৈরি করুন । আপনি রপ্তানি কার্যক্রমের জন্য একটি Requester Pays বালতি ব্যবহার করতে পারবেন না।

একটি ক্লাউড ফাংশন এবং একটি ক্লাউড শিডিউলার কাজ তৈরি করুন

একটি Node.js ক্লাউড ফাংশন তৈরি করতে নীচের পদক্ষেপগুলি অনুসরণ করুন যা একটি ক্লাউড ফায়ারস্টোর ডেটা এক্সপোর্ট শুরু করে এবং সেই ফাংশনটিকে কল করার জন্য একটি ক্লাউড শিডিউলার কাজ শুরু করে:

ফায়ারবেস CLI
  1. Firebase CLI ইনস্টল করুন । একটি নতুন ডিরেক্টরিতে, ক্লাউড ফাংশনগুলির জন্য CLI শুরু করুন:

    firebase init functions --project PROJECT_ID
    1. ভাষার জন্য JavaScript নির্বাচন করুন।
    2. ঐচ্ছিকভাবে, ESLint সক্ষম করুন।
    3. নির্ভরতা ইনস্টল করতে y লিখুন।
  2. নিম্নলিখিত দিয়ে functions/index.js ফাইলের কোড প্রতিস্থাপন করুন:

    const functions = require('firebase-functions');
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME';
    
    exports.scheduledFirestoreExport = functions.pubsub
                                                .schedule('every 24 hours')
                                                .onRun((context) => {
    
      const projectId = process.env.GCP_PROJECT;
      const databaseName = 
        client.databasePath(projectId, '(default)');
    
      return client.exportDocuments({
        name: databaseName,
        outputUriPrefix: bucket,
        // Leave collectionIds empty to export all collections
        // or set to a list of collection IDs to export,
        // collectionIds: ['users', 'posts']
        collectionIds: []
        })
      .then(responses => {
        const response = responses[0];
        console.log(`Operation Name: ${response['name']}`);
      })
      .catch(err => {
        console.error(err);
        throw new Error('Export operation failed');
      });
    });
  3. উপরের কোডে, নিম্নলিখিত পরিবর্তন করুন:
    • আপনার বালতির নাম দিয়ে BUCKET_NAME প্রতিস্থাপন করুন।
    • আপনার রপ্তানির সময়সূচী সেট করতে every 24 hours পরিবর্তন করুন। AppEngine cron.yaml সিনট্যাক্স বা ইউনিক্স-ক্রোন ফর্ম্যাট ( * * * * * ) ব্যবহার করুন।
    • collectionIds: [] শুধুমাত্র নির্দিষ্ট সংগ্রহ গোষ্ঠী রপ্তানি করতে। সব সংগ্রহ রপ্তানি করা হয় হিসাবে ছেড়ে.

  4. নির্ধারিত ফাংশন স্থাপন করুন:

    firebase deploy --only functions
GCP কনসোল
একটি ক্লাউড ফাংশন তৈরি করুন
  1. GCP কনসোলে ক্লাউড ফাংশন পৃষ্ঠাতে যান:

    ক্লাউড ফাংশনে যান

  2. ফাংশন তৈরি করুন ক্লিক করুন
  3. একটি ফাংশনের নাম লিখুন যেমন firestoreExport
  4. ট্রিগারের অধীনে, ক্লাউড পাব/সাব নির্বাচন করুন
  5. বিষয়ের অধীনে, নতুন বিষয় তৈরি করুন নির্বাচন করুন। পাব/সাব বিষয়ের জন্য একটি নাম লিখুন, যেমন initiateFirestoreExport । আপনার ক্লাউড শিডিউলার কাজ তৈরি করতে আপনার প্রয়োজনীয় বিষয়ের নামটি নোট করুন।
  6. সোর্স কোডের অধীনে, ইনলাইন সম্পাদক নির্বাচন করুন। index.js এর অধীনে নিম্নলিখিত কোড লিখুন:
    const firestore = require('@google-cloud/firestore');
    const client = new firestore.v1.FirestoreAdminClient();
    // Replace BUCKET_NAME
    const bucket = 'gs://BUCKET_NAME'
    
    exports.scheduledFirestoreExport = (event, context) => {
      const databaseName = client.databasePath(
        process.env.GCP_PROJECT,
        '(default)'
      );
    
      return client
        .exportDocuments({
          name: databaseName,
          outputUriPrefix: bucket,
          // Leave collectionIds empty to export all collections
          // or define a list of collection IDs:
          // collectionIds: ['users', 'posts']
          collectionIds: [],
        })
        .then(responses => {
          const response = responses[0];
          console.log(`Operation Name: ${response['name']}`);
          return response;
        })
        .catch(err => {
          console.error(err);
        });
    };
    উপরের কোডে, নিম্নলিখিত পরিবর্তন করুন:
    • আপনার বালতির নাম দিয়ে BUCKET_NAME প্রতিস্থাপন করুন।
    • collectionIds: [] শুধুমাত্র নির্দিষ্ট সংগ্রহ গোষ্ঠী রপ্তানি করতে। সব সংগ্রহ রপ্তানি করা হয় হিসাবে ছেড়ে.

  7. package.json এর অধীনে, নিম্নলিখিত নির্ভরতা যোগ করুন:
    {
      "dependencies": {
        "@google-cloud/firestore": "^1.3.0"
      }
    }
  8. কার্যকর করার ফাংশনের অধীনে, index.js এ ফাংশনের নাম, scheduledFirestoreExport লিখুন।
  9. ক্লাউড ফাংশন স্থাপন করতে তৈরি করুন ক্লিক করুন।
একটি ক্লাউড শিডিউলার কাজ তৈরি করুন

এরপরে, একটি ক্লাউড শিডিউলার কাজ তৈরি করুন যা আপনার ক্লাউড ফাংশনকে কল করে:

  1. GCP কনসোলে ক্লাউড শিডিউলার পৃষ্ঠায় যান:

    Cloud Scheduler-এ যান

  2. কাজ তৈরি করুন ক্লিক করুন।
  3. কাজের জন্য একটি নাম লিখুন যেমন scheduledFirestoreExport
  4. একটি ফ্রিকোয়েন্সি লিখুন, উদাহরণস্বরূপ, every 24 hours
  5. একটি টাইমজোন নির্বাচন করুন।
  6. লক্ষ্যের অধীনে, পাব/সাব নির্বাচন করুন। টপিক ফিল্ডে, আপনার ক্লাউড ফাংশনের পাশে আপনার সংজ্ঞায়িত পাব/সাব টপিকের নাম লিখুন, উপরের উদাহরণে initiateFirestoreExport
  7. পেলোড ফিল্ডে, start export লিখুন। কাজের জন্য একটি পেলোড সংজ্ঞায়িত করা প্রয়োজন, কিন্তু উপরের ক্লাউড ফাংশনটি আসলে এই মানটি ব্যবহার করে না।
  8. তৈরি করুন ক্লিক করুন।
এই মুহুর্তে, আপনি আপনার ক্লাউড ফাংশন এবং ক্লাউড শিডিউলার কাজ স্থাপন করেছেন, কিন্তু আপনার ক্লাউড ফাংশনের এখনও এক্সপোর্ট অপারেশন চালানোর জন্য অ্যাক্সেসের অনুমতি প্রয়োজন৷

অ্যাক্সেসের অনুমতি কনফিগার করুন

এর পরে, ক্লাউড ফাংশনকে রপ্তানি কার্যক্রম শুরু করার এবং আপনার GCS বালতিতে লেখার অনুমতি দিন।

এই ক্লাউড ফাংশনটি আপনার প্রজেক্টের ডিফল্ট পরিষেবা অ্যাকাউন্ট ব্যবহার করে এটির রপ্তানি ক্রিয়াকলাপকে প্রমাণীকরণ এবং অনুমোদন করতে। আপনি যখন একটি প্রকল্প তৈরি করেন, তখন নিম্নলিখিত নামে আপনার জন্য একটি ডিফল্ট পরিষেবা অ্যাকাউন্ট তৈরি করা হয়:

PROJECT_ID@appspot.gserviceaccount.com

এই পরিষেবা অ্যাকাউন্টটির একটি রপ্তানি অপারেশন শুরু করার জন্য এবং আপনার ক্লাউড স্টোরেজ বালতিতে লিখতে অনুমতি প্রয়োজন৷ এই অনুমতিগুলি মঞ্জুর করতে, ডিফল্ট পরিষেবা অ্যাকাউন্টে নিম্নলিখিত IAM ভূমিকাগুলি বরাদ্দ করুন:

  • Cloud Datastore Import Export Admin
  • বালতিতে Owner বা Storage Admin ভূমিকা

আপনি এই ভূমিকাগুলি বরাদ্দ করতে gcloud এবং gsutil কমান্ড-লাইন সরঞ্জামগুলি ব্যবহার করতে পারেন।

যদি ইতিমধ্যে ইনস্টল না করা থাকে, আপনি Google ক্লাউড প্ল্যাটফর্ম কনসোলে ক্লাউড শেল থেকে এই সরঞ্জামগুলি অ্যাক্সেস করতে পারেন:
ক্লাউড শেল শুরু করুন

  1. ক্লাউড ডেটাস্টোর আমদানি রপ্তানি প্রশাসক ভূমিকা বরাদ্দ করুন৷ PROJECT_ID প্রতিস্থাপন করুন এবং নিম্নলিখিত কমান্ডটি চালান:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \
        --role roles/datastore.importExportAdmin
    
  2. আপনার বালতিতে স্টোরেজ অ্যাডমিনের ভূমিকা বরাদ্দ করুন। PROJECT_ID এবং BUCKET_NAME প্রতিস্থাপন করুন এবং নিম্নলিখিত কমান্ডটি চালান:

    gsutil iam ch serviceAccount:PROJECT_ID@appspot.gserviceaccount.com:admin \
        gs://BUCKET_NAME
    

আপনি যদি আপনার অ্যাপ ইঞ্জিন ডিফল্ট পরিষেবা অ্যাকাউন্ট অক্ষম বা মুছে ফেলেন, তাহলে আপনার অ্যাপ ইঞ্জিন অ্যাপ আপনার ক্লাউড ফায়ারস্টোর ডেটাবেসে অ্যাক্সেস হারাবে। আপনি যদি আপনার অ্যাপ ইঞ্জিন পরিষেবা অ্যাকাউন্টটি অক্ষম করে থাকেন তবে আপনি এটিকে পুনরায় সক্ষম করতে পারেন, একটি পরিষেবা অ্যাকাউন্ট সক্ষম করা দেখুন৷ আপনি যদি আপনার অ্যাপ ইঞ্জিন পরিষেবা অ্যাকাউন্টটি গত 30 দিনের মধ্যে মুছে ফেলে থাকেন তবে আপনি আপনার পরিষেবা অ্যাকাউন্ট পুনরুদ্ধার করতে পারেন, একটি পরিষেবা অ্যাকাউন্ট মুছে ফেলার বিষয়টি দেখুন।

আপনার ক্লাউড শিডিউলারের কাজ এবং ক্লাউড ফাংশন পরীক্ষা করুন

আপনি Google ক্লাউড প্ল্যাটফর্ম কনসোলের ক্লাউড শিডিউলার পৃষ্ঠায় আপনার ক্লাউড শিডিউলারের কাজটি পরীক্ষা করতে পারেন।

  1. GCP কনসোলে ক্লাউড শিডিউলার পৃষ্ঠায় যান।
    Cloud Scheduler-এ যান

  2. আপনার নতুন ক্লাউড শিডিউলার কাজের জন্য সারিতে, এখন চালান ক্লিক করুন।

    কয়েক সেকেন্ডের পরে, ক্লাউড শিডিউলারের কাজটি ফলাফলের কলামটিকে সফল এবং বর্তমান সময়ে সর্বশেষ রানে আপডেট করতে হবে। আপনাকে রিফ্রেশ ক্লিক করতে হতে পারে।

ক্লাউড শিডিউলার পৃষ্ঠাটি শুধুমাত্র নিশ্চিত করে যে কাজটিকে আপনার ক্লাউড ফাংশন বলা হয়। আপনার ফাংশনের লগগুলি দেখতে ক্লাউড ফাংশন পৃষ্ঠাটি খুলুন৷

ক্লাউড ফাংশন লগগুলি দেখুন

ক্লাউড ফাংশন সফলভাবে একটি এক্সপোর্ট অপারেশন শুরু করেছে কিনা তা দেখতে, ফাংশনের লগগুলি খুলুন:

ফায়ারবেস কনসোল

Firebase কনসোলে ক্লাউড ফাংশন পৃষ্ঠাতে যান।

ফাংশন লগ-এ যান

GCP কনসোল

GCP কনসোলে ক্লাউড ফাংশন পৃষ্ঠাতে যান।

লগ ভিউয়ারে যান

রপ্তানি অগ্রগতি দেখুন

আপনি আপনার রপ্তানি ক্রিয়াকলাপের অগ্রগতি দেখতে, রপ্তানি এবং আমদানি ক্রিয়াকলাপ পরিচালনা দেখতে gcloud firestore operations list কমান্ড ব্যবহার করতে পারেন।

একটি রপ্তানি অপারেশন সম্পূর্ণ হওয়ার পরে, আপনি আপনার ক্লাউড স্টোরেজ বাকেটের আউটপুট ফাইলগুলি দেখতে পারেন:

ক্লাউড স্টোরেজ ব্রাউজার খুলুন