سؤال

لدينا إعداد من شظايا mongodb. تحتوي كل قطة على سيد ، عبد ، عبد عبيد 24 ساعة وحكم. ومع ذلك ، فشل الموازن في ترحيل أي شظايا في انتظار هجرة العبد المتأخر. لقد حاولت إعداد _SecondaryThorttle إلى False في تكوين Balancer ، لكن لا يزال لدي المشكلة.

يبدو أن الهجرة تستمر ليوم واحد ثم تفشل (طن من انتظار رسائل الرقيق في السجلات). في النهاية يستسلم ويبدأ هجرة جديدة. تقول الرسالة في انتظار 3 عبيد ، لكن العبد التأخير مخفي و prio 0 لذلك يجب أن ينتظر ذلك. وإذا عملت _secondarythrottle ، فلا ينبغي أن تنتظر أي عبد صحيح؟

لقد كان الأمر هكذا لبضعة أشهر حتى الآن ، لذا كان ينبغي إعادة تحميل التكوين على جميع المغنسيين. تم استقرار بعض الأناشيد التي تدير الموازن مؤخرًا.

هل لدى أي شخص أي فكرة عن كيفية حل المشكلة ، لم يكن لدينا هذه المشكلات قبل بدء العبد المتأخر ، لكنها مجرد نظريتنا.

التكوين:

{ "_id" : "balancer", "_secondaryThrottle" : false, "stopped" : false }

سجل من عملية Shard1 Master:

migratethread] تحذير: ترحيل الالتزام في انتظار 3 عبيد لـ 'xxx.xxx' {ShardKey: ObjectId ('4fd2025ae087c37d32039a9e')} -> {shardkey: ObjectId ('4fd2035ae087c37f04014a79') النسخ المتماثل للحاق بالركب قبل دخول القسم الحرج

سجل من عملية Shard2 Master:

الثلاثاء 3 ديسمبر 3 14: 52: 25.302 [conn1369472] تقدم نقل بيانات Movechunk: {نشط: صواب ، ns: "4fd2025ae087c37d32039a9e ')} ، max: {Shardkey: ObjectId (' 4fd2035ae087c37f04014a79 ')} ، shardkepattern: {Shardkey: 0} ، طيب: 1.0} ميمي المستخدم: 0

استكمال: لقد أكدت أن إزالة Slavedelay حصلت على الموازن مرة أخرى. بمجرد أن وصلوا إلى قطع السرعة تحركت. لذلك يبدو أن المشكلة مرتبطة بـ slavedelay. لقد أكدت أيضًا أن الموازن يركض مع "Secondarythrottle": خطأ. يبدو أنه ينتظر العبيد على أي حال.

Shard2:

الثلاثاء 10 ديسمبر 11: 44: 25.423 [migratethread] تحذير: ترحيل الالتزام في انتظار 3 عبيد لـ 'xxx.xxx' {Shardke 52A6F089: 81

الثلاثاء 10 ديسمبر 11: 44: 26.423 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 27.423 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 28.423 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 29.424 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 30.424 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 31.424 [Migratethread] في انتظار اللحاق بالركب قبل الدخول إلى القسم الحرج

الثلاثاء 10 ديسمبر 11: 44: 31.424 [MigratetHread] نجحت Migrate Commice في التنظيف إلى المرتبات الثانية لـ 'xxx.xxx' {Shardkey: ObjectID ('4FF1213EE087C3516B2F703F')} -> {shardkey: '4ff12a5eddf2b32dff1e7.

الثلاثاء 10 ديسمبر 11: 44: 31.425 [migratethread] Migrate Migrate Communed Flushed to 'xxx.xxx' {ShardKey: ObjectID ('4FF1213EE087C3516B2F703F')} -> {shardkey: objectid ('4ff12a5edf2b32dff1e7e7.

الثلاثاء 10 ديسمبر 11: 44: 31.647 [MigratetHread] نجحت Migrate Commice في التنظيف إلى المرتبات الثانية لـ 'xxx.xxx' {Shardkey: ObjectID ('4FF1213EE087C3516B2F703F')} -> {shardkey: '4ff12a5eddf2b32dff1e7.

الثلاثاء 10 ديسمبر 11: 44: 31.667 [migratethread] Migrate Migrate Communed Flushed to 'xxx.xxx' {ShardKey: ObjectID ('4ff1213EE087C3516B2F703F')} -> {shardkey: '4ff12a5eddf2b32dff1e7e7e7bef1e7bef1e7bef1e7bef1e7be.

هل كانت مفيدة؟

المحلول

ينتظر الموازن بشكل صحيح غالبية مجموعة النسخ المتماثلة من Shard الوجهة لترحيل المستندات قبل بدء حذف تلك المستندات في Source Shard.

تكمن المشكلة في أن لديك أربعة أعضاء في مجموعة النسخة المتماثلة الخاصة بك (Master ، عبدا ، عبد تأخير الرقيق 24 ساعة وحكم). وهذا يعني أن ثلاثة هي الأغلبية. لست متأكدًا من سبب إضافة أحد الحكم ، ولكن إذا قمت بإزالته ، فسيكون اثنان هو الأغلبية ولن يضطر الموازن إلى انتظار العبد المتأخر.

الطريقة البديلة لتحقيق نفس النتيجة هي إعداد العبد المتأخر مع votes:0 الممتلكات وترك الحكم كعقدة التصويت الثالثة.

نصائح أخرى

ما هي الصيغة هي تركض؟ هناك خطأ معروف في 2.4.2 وأسفل ، وكذلك 2.2.4 وتحت أنه يتسبب في عدد غير صحيح لعدد المرتبات الثانية في المجموعة (وبالتالي يجعل من المستحيل تلبية الافتراضي دبليو: الأغلبية اكتب للهجرة). هذا هو الخطأ (ثابت في 2.4.3+ و 2.2.5+):

https://jira.mongodb.org/browse/server-8420

يجب أن يكون إيقاف الخانق الثانوي بمثابة حل صالح ، ولكن قد ترغب في القيام FlushrouterConfig على أي mongos العمليات (أو فقط أعد تشغيل كل mongos العمليات) للتأكد من أن الإعداد يسري لترحيلك ، خاصة إذا كانوا يأخذون يومًا إلى وقت. كحل محتمل آخر قبل الترقية ، يمكنك أيضًا إسقاط مجموعة local.slaves (سيتم إعادة إنشائها).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top