Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يمكنني مراقبة تقدم ترحيل البيانات بين شظايا في Mongodb


كيف يمكنني مراقبة تقدم ترحيل البيانات بين شظايا في Mongodb


تتضمن مراقبة تقدم ترحيل البيانات بين شظايا MongoDB فهم عدة جوانب لكيفية إدارة MongoDB من المجموعات المتقطعة ، وسلوك عملية الموازنة ، وآليات تتبع هجرات القطع والصحة العامة للمجموعة.

يوزع MongoDB Sharding البيانات عبر شظايا متعددة لدعم التحجيم الأفقي. يحدث ترحيل البيانات بين شظايا في المقام الأول من خلال عمليات ترحيل الجزء ، والتي تتم إدارتها تلقائيًا بواسطة موازن MongoDB أو يمكن تشغيلها يدويًا. تعد مراقبة عملية الترحيل هذه أمرًا بالغ الأهمية لضمان الأداء والتوافر وتوزيع البيانات المتوازن في المجموعة.

فهم Mongodb Sharding and Balancer

في مجموعة متقطعة ، يقوم MongoDB ببيانات إلى قطع. يتم توزيع هذه القطع عبر شظايا وفقًا لمفتاح Shard. Balancer هي عملية خلفية تعمل في الأساسي لمجموعة النسخة المتماثلة لخادم Config Server وتراقب بنشاط توزيع البيانات للحفاظ على التوازن عبر القطع. يقرر الموازن متى وأي أجزاء تحتاج إلى ترحيلها بناءً على عتبات محددة تتعلق بفارق حجم البيانات عبر القطع. تحدث الترحيل لضمان توزيع البيانات وحسن أداء الاستعلام.

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

التحقق من حالة الولادة وحالة الترحيل

لمراقبة تقدم ترحيل Shard ، فإن العديد من الأوامر وتفتيشات السجل مفيدة:

- SH.STATUS () أو db.printshardingstatus (): توفر هذه الأوامر نظرة عامة على حالة sharding ، بما في ذلك توزيع القطع عبر شظايا لكل مجموعة مشوهة. على الرغم من أنها لا تعطي نسبة مئوية مباشرة من التقدم المحرز للهجرة ، إلا أن سياق توزيع القطعة الذي يقدمونه يمكن أن يكون بمثابة وكيل لفهم مدى موازنة البيانات وما إذا كانت الترحيل مستمرة.

- سجلات نشاط الموازن: يسجل الموازن أنشطته ، بما في ذلك عمليات ترحيل قطعة ، في سجلات خوادم التكوين ومحالات Mongos. يمكن أن تكشف مراقبة هذه السجلات عن القطع التي يتم ترحيلها ، إلى جانب شظايا المصدر والوجهة ، وأي أخطاء أو تأخيرات تحدث أثناء الترحيل.

- الهجرة الحالية: MongoDB يحد من قشرة لترحيل واحد في وقت واحد ، ولكن مع شظايا متعددة ، يمكن أن تعمل عدة ترحيل على مستوى الكتلة المتوازي (ما يصل إلى نصف عدد الشظايا). يمكن مراقبة الترحيل النشط بشكل غير مباشر عن طريق فحص سجلات الموازن أو استخدام الأوامر الإدارية على خادم التكوين لرؤية أقفال الترحيل والعدادات المتعلقة بالترحيل.

أوامر ومقاييس للمراقبة

- قيادة Balancerstatus: تشغيل `sh.getBalancerstate ()` أو فحص الكتلة بالأوامر التي تكشف عن نشاط الولادة يساعد على معرفة ما إذا كان الموازن ممكّنًا أو نشطًا حاليًا.

- عدد chunkmigrationlocktimeout العد: يتتبع MongoDB مقاييس محددة مثل `ShardingStatistics.CountdonorMoveChunkNockTimeout` لفهم ما إذا كانت عمليات الترحيل المقطوعة توقيت بسبب الأقفال ، والتي يمكن أن تشير إلى مشاكل الترحيل أو اختناقات الأداء.

- أمر Mongos Connpoolstats: مراقبة الاتصالات إلى القطع باستخدام `db.runcommand ({connpoolstats: 1}) من مثيل mongos يساعد على التحقق مما إذا كانت عمليات الترحيل تسبب زيادة في استخدام الاتصال أو الزجاجة على الانتخابات التمهيدية. تشير إحصائيات الاتصال إلى توزيع الحمل.

- مراقبة حجم البيانات لكل شارد: عن طريق الاستعلام عن بيانات SHRADASE الخاصة بقاعدة بيانات التكوين ، يمكن للمرء التحقق من حجم وعدد القطع المعينة لكل شارد. يقترح التناقض الكبير الهجرات المستمرة أو الخلل.

مراقبة الترحيل اليدوي

عندما يتم تشغيل ترحيل القطع اليدوية باستخدام أوامر مثل "MoveChunk" أو "Moverange" ، فإن العملية تعمل حتى تكمل الترحيل. يسمح هذا السلوك المتزامن بتأكيد فوري لنجاح الهجرة أو الفشل. ومع ذلك ، بالنسبة للترحيل الآلي طويل المدى الذي يديره الموازن ، لا يتم تعرض أي نسبة تقدم مباشرة من قبل MongoDB.

يساعد استخدام عمليات فحص الحالة المتكررة عبر `sh.status ()` بين خطوات الترحيل على استنتاج التقدم من خلال مراقبة الانخفاض في القطع على قشرة المصدر والزيادة في القشرة المستهدفة.

أدوات ولوحات المعلومات

توفر MongoDB Atlas ، الخدمة السحابية المدارة ، شاشة منزلية للترحيل لتتبع الترحيل بصريًا ، بما في ذلك حالتها وأي عمليات ترحيل تاريخية. يمكن أن تساعد هذه الواجهة في مراقبة بيئات أطلس.

في عمليات النشر ذاتية الإدارة ، غالبًا ما يقوم المسؤولون بإنشاء لوحات معلومات مراقبة باستخدام أدوات مراقبة MongoDB مثل MMS (خدمة إدارة MONGODB) أو أدوات الطرف الثالث التي تحصى سجلات ومقاييس MongoDB (على سبيل المثال ، Prometheus مع Grafana). يمكن لهذه الإعدادات تتبع المقاييس المتعلقة بنشاط الموازن ، والهجرات القطاعية ، واستخدام القرص ، وإنتاجية الشبكة ، والتي تشير جميعها بشكل غير مباشر إلى تقدم الترحيل.

التعامل مع وثائق اليتيم وقراءة الاتساق أثناء الترحيل

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

من المهم مراقبة أي مستندات مفقودة في القراءات الثانوية ، حيث قد تفوت القراءات الثانوية أثناء الترحيل المستندات إذا امتدت الاستعلامات على النطاقات المهاجرة. يعد الوعي بهذا السلوك ضروريًا عند تقييم تقدم الترحيل وقراءة الاتساق.

ملخص خطوات المراقبة

1. تحقق من حالة sharding: استخدم `sh.status ()` بانتظام لمراقبة توزيع القطعة.
2. فحص حالة الموازنة: تم تمكين التحقق من الولادة ونشط عبر `sh.getBalancerstate ()`.
3. سجلات الشاشة: تتبع السجلات المتناثرة والسجلات المتعلقة بالترحيل في خوادم Mongos وخوادم التكوين.
4. تتبع التهم المقطوعة: مجموعات بيانات بيانات Config Config (مثل "config.chunks`) لمراقبة القطع لكل قطة.
5. فحص إحصائيات الاتصال: استخدم `connpoolstats` للكشف عن طفرات اتصال غير عادية أثناء الترحيل.
6. شاهد أقفال ومقاييس الترحيل: تحديد مهلة الترحيل أو قفل المشكلات في المقاييس.
7. الأوامر اليدوية: استخدم "Movechunk" أو "Moverange" للترحيل الخاضع للرقابة والتعليقات المتزامنة.
8. أدوات مراقبة الرافعة المالية: استخدم شاشات ترحيل Atlas أو لوحات معلومات المراقبة المخصصة.
9. فهم تأثير الترحيل: حساب تنظيف وثيقة اليتيم والتناقضات الثانوية المحتملة.

من خلال هذه الوسائل ، يمكن للمسؤولين مراقبة وقياس تقدم ترحيل البيانات بشكل فعال بين شظايا MongoDB ، وضمان عمليات التوازن السلس وأداء الكتلة الأمثل. تعتبر هذه المراقبة أمرًا بالغ الأهمية بالنسبة للمجموعات الكبيرة حيث يمكن أن تستغرق الترحيل وقتًا كبيرًا وعرض النطاق الترددي للشبكة ، مما يؤثر بشكل مباشر على أداء التطبيق وتوافره.