মঙ্গোডিবি প্রতিরূপ SE রোলব্যাক রাজ্যে আটকে আছে Set


11

আমাদের মঙ্গোদবের সাম্প্রতিকতম স্বয়ংক্রিয় আপডেটের সময় PRIMARY, যখন পদক্ষেপটি PRIMARYস্থায়ীভাবে স্থিতিপথে একটি ROLLBACKঅবস্থায় চলে যায় ।

ROLLBACKরাজ্যে বেশ কয়েক ঘন্টা থাকার পরেও মংগদ্ব ডাটাবেস ডিরেক্টরিতে ডিরেক্টরিটিতে এখনও কোনও রোলব্যাক .bsonফাইল নেই rollback। এটি এবং আমাদের লগ ফাইলে এই লাইনটিও: প্রক্রিয়াটি ব্যর্থ হয়েছে [rsSync] replSet syncThread: 13410 replSet too much data to roll backবলে মনে হয় ROLLBACK

আমি ঠিক কী ভুল হয়েছে তা বিশ্লেষণ করতে কিছু সহায়তা চাই।

  • এটি আমাদের লগগুলিতে দুটি পৃথক রোলব্যাকগুলি উপস্থিত হয়েছিল। এটি কি ঘটনাটি ছিল নাকি এটিতে 3 ঘন্টা সময় লেগেছিল?
  • যদি প্রথম রোলব্যাকটি (19:00 ঘন্টা এ) সফল হয় তবে ওউ rollbackডিরেক্টরিতে কেন কিছু উপস্থিত হয়নি ?
  • এই সমস্ত সতর্কতার কারণ হিসাবে কোন অনুমান? এটি কি রোলব্যাক ব্যর্থতার সাথে সম্পর্কিত হতে পারে?
  • আমরা কি প্রথমটির কারণে 18 সেকেন্ডের ডেটা হারিয়েছি ROLLBACK?
  • "আটকে থাকা" সমস্যার কোনও জেনেরিক সমাধান রয়েছে কি ROLLBACK? আমরা আমাদের সম্পূর্ণ ডিবিটিকে পায়ের পাতার মোজাবিশেষ এবং প্রাথমিক থেকে পুনরায় সিঙ্ক করতে শেষ করেছি।

সম্পর্কিত লগ লাইনগুলি হ'ল:

# Primary coming back after restart...
Tue May 15 19:01:01 [initandlisten] MongoDB starting : pid=3684 port=27017 dbpath=/var/lib/mongodb 64-bit host=magnesium
Tue May 15 19:01:01 [initandlisten] db version v2.0.5, pdfile version 4.5
# ... init stuff
Tue May 15 19:01:01 [initandlisten] journal dir=/var/lib/mongodb/journal
Tue May 15 19:01:01 [initandlisten] recover : no journal files present, no recovery needed
# ... More init stuff
Tue May 15 19:01:03 [rsStart] trying to contact rs1arb1.c9w.co:27017
Tue May 15 19:01:03 [rsStart] trying to contact rs1m2.c9w.co:27017
Tue May 15 19:01:03 [rsStart] replSet STARTUP2
Tue May 15 19:01:03 [rsHealthPoll] replSet member rs1arb1.c9w.co:27017 is up
Tue May 15 19:01:03 [rsHealthPoll] replSet member rs1arb1.c9w.co:27017 is now in state ARBITER
Tue May 15 19:01:03 [rsSync] replSet SECONDARY
Tue May 15 19:01:05 [rsHealthPoll] replSet member rs1m2.c9w.co:27017 is up
Tue May 15 19:01:05 [rsHealthPoll] replSet member rs1m2.c9w.co:27017 is now in state PRIMARY
Tue May 15 19:01:09 [rsSync] replSet syncing to: rs1m2.c9w.co:27017
Tue May 15 19:01:09 [rsSync] replSet our last op time written: May 15 19:00:51:6
Tue May 15 19:01:09 [rsSync] replSet rollback 0
Tue May 15 19:01:09 [rsSync] replSet ROLLBACK
Tue May 15 19:01:09 [rsSync] replSet rollback 1
Tue May 15 19:01:09 [rsSync] replSet rollback 2 FindCommonPoint
Tue May 15 19:01:09 [rsSync] replSet info rollback our last optime:   May 15 19:00:51:6
Tue May 15 19:01:09 [rsSync] replSet info rollback their last optime: May 15 19:01:09:19
Tue May 15 19:01:09 [rsSync] replSet info rollback diff in end of log times: -18 seconds
Tue May 15 19:01:10 [rsSync] replSet WARNING ignoring op on rollback no _id TODO : nimbus.system.indexes { ts: Timestamp 1337108400000|17, h: 1628369028235805797, op: "i", ns: "nimbus.system.indexes", o: { unique: true, name: "pascalquery_ns_key_start_ts_keyvals", key: { __ns__: 1, _key: 1, start_ts: 1, _keyval.a: 1, _keyval.b: 1, _keyval.c: 1, _keyval.d: 1, _keyval.e: 1, _keyval.f: 1, _keyval.g: 1, _keyval.h: 1 }, ns: "nimbus.wifi_daily_series", background: true } }
# ...
# Then for several minutes there are similar warnings
# ...
Tue May 15 19:03:52 [rsSync] replSet WARNING ignoring op on rollback no _id TODO : nimbus.system.indexes { ts: Timestamp 1337097600000|204, h: -3526710968279064473, op: "i", ns: "nimbus.system.indexes", o: { unique: true, name: "pascalquery_ns_key_start_ts_keyvals", key: { __ns__: 1, _key: 1, start_ts: 1, _keyval.a: 1, _keyval.b: 1, _keyval.c: 1, _keyval.d: 1, _keyval.e: 1, _keyval.f: 1, _keyval.g: 1, _keyval.h: 1 }, ns: "nimbus.wifi_daily_series", background: true } }
Tue May 15 19:03:54 [rsSync] replSet rollback found matching events at May 15 15:59:13:181
Tue May 15 19:03:54 [rsSync] replSet rollback findcommonpoint scanned : 6472020
Tue May 15 19:03:54 [rsSync] replSet replSet rollback 3 fixup

তারপরে পরে কোনও কারণে আর একটি রোলব্যাক দেখা দেয় ...

Tue May 15 22:14:24 [rsSync] replSet rollback re-get objects: 13410 replSet too much data to roll back
Tue May 15 22:14:26 [rsSync] replSet syncThread: 13410 replSet too much data to roll back
Tue May 15 22:14:37 [rsSync] replSet syncing to: rs1m2.c9w.co:27017
Tue May 15 22:14:37 [rsSync] replSet syncThread: 13106 nextSafe(): { $err: "capped cursor overrun during query: local.oplog.rs", code: 13338 }
Tue May 15 22:14:48 [rsSync] replSet syncing to: rs1m2.c9w.co:27017
Tue May 15 22:15:30 [rsSync] replSet our last op time written: May 15 19:00:51:6
Tue May 15 22:15:30 [rsSync] replSet rollback 0
Tue May 15 22:15:30 [rsSync] replSet rollback 1
Tue May 15 22:15:30 [rsSync] replSet rollback 2 FindCommonPoint
Tue May 15 22:15:30 [rsSync] replSet info rollback our last optime:   May 15 19:00:51:6
Tue May 15 22:15:30 [rsSync] replSet info rollback their last optime: May 15 22:15:30:9
Tue May 15 22:15:30 [rsSync] replSet info rollback diff in end of log times: -11679 seconds
# More warnings matching the above warnings
Tue May 15 22:17:30 [rsSync] replSet rollback found matching events at May 15 15:59:13:181
Tue May 15 22:17:30 [rsSync] replSet rollback findcommonpoint scanned : 7628640
Tue May 15 22:17:30 [rsSync] replSet replSet rollback 3 fixup

রোলব্যাকগুলিতে কেবলমাত্র দরকারী তথ্য হ'ল এই নোটগুলি হ'ল "রোলব্যাকের পরিস্থিতিতে আটকে আছে" address http://www.mongodb.org/display/DOCS/Replica+Sets+-+ রোলব্যাকস http://www.snailinaturtleneck.com/blog/2011/01/19/how-to-use-replica-set-rolbacks/


আপনি লেখার-উদ্বেগ পরীক্ষা করেছেন? docs.mongodb.com/manual/core/replica-set-write-concern/…
ওজমা

উত্তর:


7

যখন কোনও মঙ্গোডিবি উদাহরণ একটি রোলব্যাক অবস্থায় চলে যায় এবং রোলব্যাক ডেটা 300MB ডেটার চেয়ে বেশি হয়, আপনাকে ম্যানুয়ালি হস্তক্ষেপ করতে হবে। আপনি যে তথ্য সংরক্ষণ / অপসারণ / সরানোর জন্য পদক্ষেপ না নেবেন ততক্ষণ এটি রোলব্যাক অবস্থায় থাকবে, (এখন গৌণ) এটি প্রাথমিকের সাথে সামঞ্জস্য রেখে আবার আনতে হবে। এটি একটি সম্পূর্ণ পুনরায় সংযোগ স্থাপন করার দরকার নেই, তবে এটি সহজ উপায়।

একাধিক রোলব্যাক একটি সমস্যার কারণ না হয়ে লক্ষণ। রোলব্যাক কেবল তখনই ঘটে যখন কোনও মাধ্যমিক সিঙ্কে ছিল না (হয় পিছিয়ে পড়ার কারণে বা প্রতিরূপে কোনও সমস্যার কারণে) প্রাথমিক হয়ে যায় এবং লেখাগুলি নেয়। সুতরাং, যে সমস্যাগুলির কারণে প্রথম স্থানে দেখা দেয় সেগুলি হ'ল যত্ন নেওয়া দরকার - রোলব্যাক নিজেই এমন একটি বিষয় যা আপনাকে অ্যাডমিন হিসাবে মোকাবেলা করতে হবে - মংগোডিবির পক্ষে স্বয়ংক্রিয়ভাবে ডেটা পুনরায় মিলনের জন্য অনেকগুলি সম্ভাব্য সমস্যা রয়েছে।

আপনি যদি পরীক্ষার উদ্দেশ্যে এটি আবার অনুকরণ করতে চান তবে আমি এখানে কীভাবে এটি করব তা বর্ণিত করেছি:

http://comerford.cc/2012/05/28/simulating-rollback-on-mongodb/

অবশেষে, এই ডেটাটি ডিস্কে ফেলে ফেলার পরিবর্তে (স্থানীয় ডিবিতে) একটি সংগ্রহে সংরক্ষণ করা হবে, যা আরও কার্যকরভাবে এটি মোকাবেলার সুযোগ উপস্থাপন করবে:

https://jira.mongodb.org/browse/SERVER-4375

এই মুহুর্তে যদিও একবার রোলব্যাক হয়, আপনি যেমন খুঁজে পেয়েছেন, ম্যানুয়াল হস্তক্ষেপ প্রয়োজন।

অবশেষে, ম্যানুয়ালটিতে এখন ক্রিস্টিনার ব্লগে অনুরূপ তথ্য রয়েছে:

https://docs.mongodb.com/manual/core/replica-set-rollbacks


2

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

আশা করি এর জন্য আরও ভাল উত্তর নিয়ে কেউ আসবেন।


আপনি যা করেছেন সে সম্পর্কে আমাদের আপডেট করার জন্য আপনাকে ধন্যবাদ। আপনি যদি এই সম্পর্কে আরও কোনও তথ্য খুঁজে পান তবে ফিরে এসে আপনার উত্তর আপডেট করুন (বা অন্য কোনও সরবরাহ করুন)।
নিক চাম্মাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.