মঙ্গো ডিবি রেপ্লিকা পুনরুদ্ধার অবস্থায় আটকে আছে


14

আমরা একটি প্রতিলিপি সেট তৈরি করেছি এবং এখন সমস্যাটি হ'ল প্রতিলিপি সেট 2 সদস্য [3 জন সদস্য] 48 ঘন্টা থেকে পুনরুদ্ধার মোডে আছেন। প্রাথমিকভাবে নোডগুলির পুনরুদ্ধারের আকার বাড়ছিল এবং এখন এমনকি এটি বন্ধ হয়ে গেছে। সুতরাং নোডগুলি পুনরুদ্ধার করতে তারা 60+ জিবি স্থানীয় ডেটা সহ 90 গিগাবাইট ডেটার পরে আটকে থাকে।

এই মোড থেকে বেরিয়ে আসবেন কীভাবে?

উত্তর:


13

সহজ, যদিও কিছুটা অনিরাপদ উপায়

  1. প্রথম মাধ্যমিক বন্ধ করুন
  2. এর বিষয়বস্তু মুছুন dbpath
  3. মাধ্যমিকটি পুনরায় চালু করুন
  4. এটি প্রাথমিকের সাথে দেখার জন্য অপেক্ষা করুন
  5. দ্বিতীয় মাধ্যমিকের সাথে পুনরাবৃত্তি প্রক্রিয়া

এটি কিছুটা অনিরাপদ কারণ এটি অজানা যে দ্বিতীয়ারীরা কেন পুনরুদ্ধার অবস্থায় প্রবেশ করেছিল।

আরও সুরক্ষিত, তবে আরও অনুপ্রবেশকারী উপায়

উপরে হিসাবে, কিন্তু প্রক্রিয়া চলাকালীন আপনার আবেদন বন্ধ করুন। এটি আপনার অ্যাপ্লিকেশনটি দ্বিতীয় শ্রেণীর প্রতিরূপ তৈরি করতে সক্ষম হওয়ার চেয়ে বেশি ডেটা isোকাচ্ছে এমন সম্ভাবনাটি রোধ করে। তবে উত্পাদনের সময় সমস্যা দেখা দিতে পারে।

সর্বাধিক সুরক্ষিত তবে সবচেয়ে অনুপ্রবেশমূলক উপায়

  1. পুরো রেপ্লিকা সেটটি বন্ধ করুন
  2. বিষয়বস্তু অপসারণ করুন dbpathউপর উভয় secondaries মধ্যে
  3. dbpathউভয় দ্বিতীয় স্তরের কন্টেন্ট অনুলিপি করুনdbpath
  4. পুরানো প্রাথমিক শুরু করুন।
  5. পুরানো সেকেন্ডারিগুলির একটি শুরু করুন।
  6. নতুন প্রাথমিক নির্বাচিত হওয়া পর্যন্ত অপেক্ষা করুন।
  7. বাকি মাধ্যমিকটি শুরু করুন।

কিছু নোট:

এমএমএস ব্যবহার করুন । এটি নিখরচায়, এটি সেটআপ করা সহজ এবং এটি আপনাকে আপনার প্রতিরূপ সেট সম্পর্কে ভাল তথ্য দেয়। "রেপ্লিকেশন লেগ" এর মান 0-এর আশেপাশে রাখার চেষ্টা করুন এবং প্রয়োজনীয় সমস্ত উপায় গ্রহণ করুন যে আপনার প্রতিলিপি ল্যাগ কখনই "রেপ্লিকেশন ওপলোগ উইন্ডো" এর চেয়ে বড় হবে না।

সর্বদা নিশ্চিত করুন যে আপনার কাছে 1 জিবি নেটওয়ার্ক এবং একটি (দুঃখিত) র‌্যামের শিটলোড রয়েছে। যত বেশি তত ভালো. থাম্বের অতিরিক্ত নিয়ম: দ্বিগুণ র‌্যামের চেয়ে অর্ধ র‌্যাম এবং এসএসডি নয় এবং এসএসডি নেই (যুক্তিসঙ্গত সীমাতে র‌্যামের সাথে থাকে)।

অস্বীকৃতি: সর্বদা উত্পাদন ডেটার সাথে ঝাঁকুনির আগে ব্যাকআপ করুন।


1
এখন পর্যন্ত আমাদের প্রতিরূপ সেটে একটি গৌণ নোড নেই। একটি প্রাইমারী মোডে এবং অন্য দুটি পুনরুদ্ধার মোডে।
অবিনাশ সাহু

1
লজিকাল সেকেন্ডারি, তারপর। পদ্ধতি একই।
মার্কাস ডাব্লু মাহলবার্গ

আমি মংগোর দৃষ্টান্তটি শুরু করে পুনরায় সংযোগ করার চেষ্টা করেছি, প্রতিবার এটি নির্দিষ্ট আকারের (~ 96gb) অবধি অন্য নোডে ডেটা অনুলিপি করা শুরু করে এবং পরে আটকে যায়। ওপলগ আকার এর সাথে কিছু করতে হবে?
অবিনাশ সাহু

1
সত্যিকারের নয়, আপনি যখন প্রাথমিক পুনরায় সংযোগের সময় ওপলগের চেয়ে বেশি ডেটা সন্নিবেশ করতে পারেন তখন রিসাইকটি থামতে পারে except এই ক্ষেত্রে বিকল্প 2 বা 3 নিন।
মার্কাস ডাব্লু মাহলবার্গ

1
আপনি এই বিট আরও ব্যাখ্যা করতে পারেন? "র‌্যামের দ্বিগুণ চেয়ে কোনও র‌্যাম এবং এসএসডি অর্ধেক এবং এসএসডি নেই (যুক্তিসঙ্গত সীমাতে র‌্যামের সাথে থাকে)" "
স্টিফেন

1

অনুলিপিকরণ প্রক্রিয়া ব্যর্থ হয় এমনকি যদি আপনি একটি নতুন dbpath জিনিস কিছু করা হয় secondary.So থেকে আঁচড়ের দাগ শুরু oplog পরিবর্তন । ওপলগের আকারটি একটি সর্বোত্তম মানতে সেট করতে হবে যাতে এটি এতে সমস্ত অ্যাপ্লিকেশন লেখাকে পরিচালনা করতে সক্ষম হয়।

ওপ্লগের আকার বাড়ছে:

প্রাথমিক সার্ভারটি বন্ধ করুন

use admin

db.shutdownServer()

স্বতন্ত্র হিসাবে প্রাথমিক শুরু করুন এবং বিভিন্ন বন্দরে চালান বলুন 37017

37017 বন্দরে মঙ্গোতে লগইন করুন

mongo --port 37017

স্থানীয় ডাটাবেসে পুরানো সামগ্রীগুলি সরান

সুরক্ষার জন্য ড্রপ করার আগে পুরানো ওপলগের ব্যাকআপ রাখুন

mongodump --db local --collection 'oplog.rs' --port 37017

স্থানীয় ডাটাবেসে পুরানো সামগ্রীগুলি ফেলে দিন

use local

db.oplog.rs.drop()

db.me.drop()

db.replset.election.drop()

db.replset.minvalid.drop()

db.startup_log.drop()

রিপ্লसेट সংগ্রহ বাদ দেওয়া যায় না তাই এটি প্রয়োজনীয় আইডি দিয়ে সরান:

db.system.replset.remove({ "_id" : "your_replsetname"})

প্রয়োজনীয় আকারের একটি নতুন ওপ্লগ তৈরি করুন 50 জিবি বলে

db.runCommand( { create: "oplog.rs", capped: true, size: (50 * 1024 * 1024 * 1024) } )

এছাড়াও আপনি mongod.conf ফাইলে এমবিতে ওপলগের আকারটি নির্দিষ্ট করতে পারেন, 50 জিবি এর জন্য বলুন 429496 এমবি

replication:
   oplogSizeMB: 429496

আশাকরি এটা সাহায্য করবে !!!

সম্পাদনা:

যেমনটি মন্তব্যে নিকোলাস টলি কটরেল উল্লেখ করেছেন। MongoDB ইন সংস্করণ 3.6 আমরা পুনর্সূচনা ছাড়া রানটাইম মধ্যে oplog আকার পরিবর্তন করতে পারেন।

বর্তমান ওপলগের আকার পরীক্ষা করুন

use local
db.oplog.rs.stats().maxSize

ওপলগের আকারটি 10 ​​গিগাবাইটে পরিবর্তন করতে

db.adminCommand({replSetResizeOplog: 1, size: 10000})

1
উপরেরটি 3.6 হিসাবে তারিখের বাইরে। আপনি এখন সামগ্রীটি না ফেলে বা নোডগুলি পুনঃসূচনা না করে ওপ্লগকে পুনরায় আকার দিতে পারেন: ডকস.মংডব.ম্যানুয়াল
নিকোলাস

1
@ নিকোলাস টলিকোটারেল হ্যাঁ, আমি উত্তরটি সম্পাদনা করেছি।
জেরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.