এটি কি মঙ্গোডিবি-র জন্য বৈধ ব্যাকআপ কৌশল?


11

আমি প্রায় 10 জিবি এর একটি মঙ্গোডিবি ডাটাবেস সহ একটি একক উত্সর্গীকৃত সার্ভার পেয়েছি। আমার প্রতিদিনের ব্যাকআপগুলি করা দরকার, তবে ডেটাবেসের সাথে আমার ডাউনটাইম থাকতে পারে না। কোনও একক ডিস্কে (বিভিন্ন পোর্টে মংগড চলার 2 টি উদাহরণ সহ) একটি প্রতিলিপি সেট ব্যবহার করা কী সহজ, এবং কেবল মাধ্যমিকটিকে অফলাইন করে ডেটা ফাইলগুলিকে একটি অফসাইট স্টোরেজ যেমন S3 (জার্নালিং চালু আছে) তে ব্যাকআপ নিতে পারে? অথবা মাস্টার / ক্রীতদাস ব্যবহার করা একটি প্রতিরূপ সেট চেয়ে ভাল হতে পারে?

এটি কি কার্যকর, এবং যদি তা হয় তবে আমার কী সম্ভাব্য সমস্যা থাকতে পারে? যদি তা না হয় তবে কীভাবে আমি এটির কাজটি করতে পারি?

উত্তর:


6

এই দৃশ্যে রেপ্লিকাসেট কাজ করবে। তবে, আমি বলতে পারি না একই সার্ভারে দুটি মঙ্গোডিবি উদাহরণ থাকা ভাল ধারণা - এটি সার্ভার হার্ডওয়্যার / সফ্টওয়্যার এবং লোডের উপর নির্ভর করে।

নিশ্চিত করুন যে আপনার করা backupMongoDB নোড না হয়ে মাস্টার, তার সেট priorityপরামিতি থেকে 0যেমন

rs.add({_id: 1, host: "localhost:<port>", priority: 0})

দ্রষ্টব্য : যদি আপনার ডাউনটাইম না থাকে তবে আপনার রেপ্লিকাসেটে কমপক্ষে 2 টি প্রাথমিক মঙ্গোডিবি নোড থাকা উচিত, নিবন্ধটি দেখুন


2

বিবেচনা করার একটি কৌশল হ'ল আপনার প্রতিরূপের ব্যাকআপ নোডে "লুকানো" বিকল্পটি ব্যবহার করা। মঙ্গোডিবি ব্লগ থেকে:

লুকানো সার্ভারগুলি ইসমাস্টার () ফলাফলগুলিতে উপস্থিত হবে না। এর অর্থ হ'ল কোনও চালক যদি স্বয়ংক্রিয়ভাবে দাসগুলিতে পাঠ্য বিতরণ করে তবে সেগুলি ব্যবহার করা হবে না। একটি লুকানো সার্ভারের 0 টির অগ্রাধিকার থাকতে হবে (আপনার কোনও গোপন প্রাথমিক থাকতে পারে না)। কোনও লুকানো সদস্য যুক্ত করতে, চালান:

আরএসডিএড ({"_ আইডি": নাম্বার, "হোস্ট": হোস্টনাম, "অগ্রাধিকার": 0, "লুকানো": সত্য})


1

প্রতিরূপ সেটগুলি সাধারণত তাদের স্বতঃ-পুনরুদ্ধার এবং স্ব-পুনরায় সংশ্লেষ কার্যকারিতার কারণে সাধারণত পছন্দ হয়। আপনি যে ব্যাকআপ পদ্ধতিটি বর্ণনা করছেন তা পুরোপুরি যুক্তিসঙ্গত শোনায় এবং এর আগে অন্যান্য ডাটাবেসের সাথেও ব্যবহার করা হয়েছিল।

আমি দেখতে পেলাম কেবলমাত্র সম্ভাব্য সমস্যাটি হ'ল নির্দিষ্ট পরিস্থিতিতে আপনার মাধ্যমিকটি আপনার প্রাথমিকের পদে উন্নীত হতে পারে এবং আপনি হয় ক) নতুন মাধ্যমিক থেকে আপনার ব্যাকআপ নেবেন, বা খ) আপনার ব্যাকআপ স্ক্রিপ্টটিকে যথেষ্ট স্মার্ট করে তুলুন এটির উদাহরণটি বলার জন্য মোঙ্গোডিবি পদত্যাগ করতে।

ভাল খবর এটি মোটামুটি তুচ্ছ হওয়া উচিত

  1. কোন উদাহরণটি প্রাথমিক এবং কোনটি গৌণ ( db.isMaster()) এর অনুসন্ধান করতে আপনার ব্যাকআপ উত্সটি অনুসন্ধান করুন
  2. ব্যাকআপ উদাহরণস্বরূপ সন্তুষ্ট ব্যবহার পদত্যাগ করতে rs.freeze()এবং rs.stepDown()কমান্ড বা মাধ্যমিক পুনঃসংযোগ

আলেকজান্ডারের পরামর্শ মতো যে 0 টির ক্ষেত্রে প্রাথমিকটি প্রাথমিক না হয়ে যায় তাই 0-তে অগ্রাধিকার সেট করার বিকল্প নয় কি?
জেমস সিম্পসন

আপনাকে কিছু পরীক্ষা করতে হবে, তবে আমি নিশ্চিত নই যে কোনও কারণে প্রাথমিক প্রক্রিয়াটি নিচে চলে গেলে মাধ্যমিকটি কেবল স্ট্যান্ডবাই করবে কিনা। আমি সবসময় চেয়েছিলাম যে আমার সেকেন্ডারিদের দায়িত্ব নিতে হবে;)
চার্লস হুপার

1
>> আপনার মাধ্যমিকটি আপনার প্রাথমিকের ক্ষেত্রে পদোন্নতি দেওয়া যেতে পারে - যেমনটি উল্লেখ করা হয়েছে, মাধ্যমিকটিকে অগ্রাধিকার 0 তে সেট করা এটিকে মাস্টারে স্যুইচ করা থেকে বিরত রাখবে।
জোনসোম পুনরায় ইনস্টল করুন মনিকা

আপনার পিয়ার নোডগুলির তালিকা থেকে আপনি যে কোনও সমকক্ষের সাথে সংযোগ স্থাপন করতে পারেন (এটি যে কোনও প্রাথমিক, মাধ্যমিক, সালিশী বা লুকানো নোড হতে পারে), সেই পিয়ারকে জিজ্ঞাসা করুন যে সেকেন্ডারী কারা ( rs.status()এবং লুপ মাধ্যমে result["members"]), এবং এর মধ্যে একটির সাথে সংযুক্ত হতে পারে দ্বিতীয়ত ব্যাকআপ সঞ্চালন।
yfeldblum
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.