মংডব বর্ধিত ব্যাকআপ


26

আমাকে মোঙ্গোডিবি প্রতিরূপের জন্য বর্ধিত ব্যাকআপ সেটআপ করার জন্য কাজ দেওয়া হয়েছিল, শুরু করার পয়েন্ট হিসাবে অবশ্যই আমি এটি গুগল করেছিলাম এবং মঙ্গোডিবি ডক্সে কিছুই খুঁজে পাইনি, তবে স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি পেয়েছি , যা আমার নিজস্ব সমাধান বিকাশ করতে উত্সাহিত করেছিল যেমনটি তায়ারাকে খুব সক্রিয় মনে হয়নি।

আমি পড়েছি oplogএবং বুঝতে পেরেছিলাম যে লগটি পুনরায় খেলতে খুব সহজেই কিছু বিকাশ করা সম্ভব হয়েছিল, তবে এটি প্রমাণিত হয় যে আমার পক্ষে এটি করতে হয়নি mongorestore

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

আমি কীভাবে এটি প্রয়োগ করেছি নীচে:

সম্পূর্ণ ব্যাকআপ পদ্ধতি

  1. লক একটি দ্বিতীয় সদস্যকে লিখেছে db.fsyncLock()
  2. একটি স্থিরচিত্র গ্রহন করুন
  3. ওপলগ থেকে শেষ অবস্থান রেকর্ড করুন

    db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts
  4. আনলক লিখেছেন db.fsyncUnlock()

বর্ধিত ব্যাকআপ পদ্ধতি

  1. লক একটি দ্বিতীয় সদস্যকে লিখেছে
  2. পূর্ণ (বা সর্বশেষতম ইনক্রিমেন্টাল) ব্যাকআপে রেকর্ডকৃত ওপলগ অবস্থান থেকে ওপ্লগ ডাম্প করুন:

    mongodump --host <secondary> -d local -c oplog.rs -o /mnt/mongo-test_backup/1 
        --query '{ "ts" : { $gt :  Timestamp(1437725201, 50) } }'
  3. সর্বশেষ ওপলগ অবস্থান রেকর্ড করুন (পুরো ব্যাকআপ হিসাবে একইভাবে)

  4. আনলক লিখেছেন

সম্পূর্ণ ব্যাকআপ পুনরুদ্ধার পদ্ধতি

  1. সমস্ত দৃষ্টান্ত বন্ধ করুন mongod
  2. বক্সের ডেটা ডিয়ারে স্ন্যাপশটটি অনুলিপি করা হবে যা প্রাথমিক হবে তবে সমস্তটি বাদ দিতে ভুলবেন না local*এবং mongod.lock এই পুনরুদ্ধার কৌশলটিকে মিরর ভেঙে পুনরায় কনফিগার বলে
  3. প্রাথমিক শুরু করুন
  4. পুনরায় কনফিগার করুন
  5. কোনও ডেটা ছাড়াই সেকেন্ডারি শুরু করুন, তাদের প্রাথমিক সিঙ্কটি সম্পাদন করুন। বা নতুন প্রাথমিক থেকে ডেটা অনুলিপি করে localডেটাবেস

ইনক্রিমেন্টাল ব্যাকআপ পুনরুদ্ধার করুন

যখন আমরা ইনক্রিমেন্টাল ব্যাকআপ তৈরি করি এটি এটিকে এটি সংরক্ষণ করে:

/mnt/mongo-test_backup/1/local/oplog.rs.bson
/mnt/mongo-test_backup/1/local/oplog.rs.metadata.json

আমরা অন্তর্নিহিত রয়েছি oplog.rs.bsonতবে আমাদের এটির নতুন নামকরণ করতে হবে, সুতরাং পদক্ষেপগুলি এখানে:

  1. ব্যাকআপে ডিরেক্টরি পরিবর্তন করুন: cd /mnt/mongo-test_backup/1/local
  2. জসন ফাইলটি মুছুন rm *.json
  3. বিসন ফাইলটির নতুন নাম দিন mv oplog.rs.bson oplog.bson
  4. এটি পুনরুদ্ধার করুন:

    mongorestore -h <primary> --port <port> --oplogReplay /mnt/mongo-test_backup/1/local

আমার এটির সমস্ত স্ক্রিপ্ট রয়েছে, আমি এটি পরে গিটহাবের কাছে সংঘটিত করতে পারি।

প্রশ্ন হচ্ছে যুক্তিটিতে কোনও ত্রুটি আছে কিনা? প্রক্রিয়াটি বেশ সোজা হয়ে যাওয়ার কারণে আমি কিছুটা সন্দেহজনক এবং এখনও আমি এটি কোথাও নথিভুক্ত করতে পারি নি।


2
আপনি মঙ্গোর কোন সংস্করণ ব্যবহার করছেন? আপনি যদি ওয়্যারডিটার ব্যবহার করে থাকেন তবে db.fsyncLock () এর সাথে প্রথম যে আইটেমটি আপনি উল্লেখ করেছেন তা সমস্যা। মঙ্গোডিবি ইনক দাবি করেছে "ওয়্যার্ডটাইগার সহ, লক বিকল্পের সাথে fsync কমান্ড গ্যারান্টি দিতে পারে না যে ডেটা ফাইলগুলি পরিবর্তন হয় না। ফলস্বরূপ, ব্যাকআপগুলি তৈরি করার উদ্দেশ্যে ধারাবাহিকতা নিশ্চিত করতে এই পদ্ধতিগুলি ব্যবহার করবেন না।" লিঙ্ক
এসডিলন

1
@ এসডিলন ৩.০.৪ ব্যবহার করছেন তবে ওয়্যার্ডটাইগার ব্যবহার করছেন না, কমপক্ষে এখনও নেই। আমি আমরা এটি ব্যবহার করার সিদ্ধান্ত নিয়েছি, লক লেখার পরিবর্তে আমাদের সবাইকে একসাথে মঙ্গোদ বন্ধ করতে হবে। এটি মোটামুটি ধন্যবাদ ধন্যবাদ
টিয়াগো

আমি ক্রমবর্ধমান ব্যাকআপ জন্য নিম্নলিখিত উপকরণগুলোকে পাওয়া github.com/EqualExperts/Tayra আশা করি এই ইচ্ছার সাহায্যের
আহমাদ Abuhasna

1
"সংস্করণ ৩.২-এ পরিবর্তিত হয়েছে: লক বিকল্পের সাথে fsync কমান্ড নিশ্চিত করতে পারে যে এমএমএপিভি 1 বা ওয়্যারিডটাইজার স্টোরেজ ইঞ্জিনগুলি ব্যবহার করে মঙ্গোডিবি ইনস্ট্যান্সের জন্য ডেটা ফাইলগুলি পরিবর্তন না হয়, সুতরাং ব্যাকআপ তৈরির উদ্দেশ্যে ধারাবাহিকতা সরবরাহ করে।"
সুরক্ষা

সাধারণ (এবং একেবারে সহজ) বর্ধিত ব্যাকআপগুলি করার উপায় হল LVM এবং স্ন্যাপশট ব্যবহার। docs.mongodb.com/manual/tutorial/…
জে জুসি

উত্তর:


3

আপনার প্রশ্নের উত্তর দিতে। না! আপনার যুক্তিতে কোনও ব্যর্থতা নেই এবং এটি সমস্যা ছাড়াই কাজ করা উচিত। তবে, যদি এলভিএম স্ন্যাপশটগুলি ব্যবহার করা যায় তবে ব্যাকআপগুলি করার আরও ভাল উপায়।


আপনি কীভাবে এলভিএম স্ন্যাপশটের ইনক্রিমেন্টাল ব্যাকআপ করবেন? ধন্যবাদ!
তানিসডিএলজে

LVM স্ন্যাপশট প্রকৃতির দ্বারা বৃদ্ধিযোগ্য। স্ন্যাপশট সময় মুহূর্ত এবং শুধুমাত্র পরিবর্তন রেকর্ড করা হয়।
জেজেসি

হ্যাঁ নেওয়া হয়েছে কেবল একটি স্ন্যাপশট, এটি বর্ধিত। তবে আপনি যদি স্ন্যাপশট সংরক্ষণাগারভুক্ত হন তবে এটি সম্পূর্ণ ব্যাকআপ। উদাহরণস্বরূপ আপনি নকলের মতো বিভিন্ন বর্ধিত ব্যাকআপ সংরক্ষণাগারভুক্ত করতে পারবেন না। এবং আপনি প্রতি 30 মিনিটে বর্ধিত ব্যাকআপগুলির জন্য স্ন্যাপশট তৈরি করা শুরু করতে পারবেন না কারণ এটির কার্য সম্পাদনটি খারাপ।
TanisDLJ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.