متعدد المصادر: عدة أساتذة، نسخة طبق الأصل واحدة
يسمح النسخ المتماثل متعدد المصادر لخادم نسخة متماثلة واحد بتلقي البيانات من عدة شرائح رئيسية في وقت واحد . كل اتصال رئيسي عبارة عن قناة منفصلة، لها مؤشر ترابط الإدخال والإخراج الخاص بها، وخيط SQL الخاص بها، وحالة النسخ المتماثل الخاصة بها.
هذا نموذج قوي لـ:
- التوحيد: تجميع البيانات من عدة قواعد بيانات أعمال في نسخة تحليلية متماثلة
- الترحيل: تلقي البيانات من الأنظمة القديمة والجديدة أثناء عملية الانتقال
- مستودع البيانات: توفير مستودع من عدة مصادر MariaDB / MySQL
في مقالتنا السابقة حول النسخ المتماثل متعدد المصادر MySQL 8.4، قمنا بتغطية التكوين. نركز هنا على المراقبة: كيف يكتشف PmaControl هذه القنوات المتعددة ويعرضها ويراقبها.
الإعداد السريع (تذكير)
MariaDB
MariaDB يدعم أصلاً المصادر المتعددة منذ الإصدار 10.0:
-- Canal 1 : base clients
CHANGE MASTER 'channel_clients' TO
MASTER_HOST = '10.0.1.1',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'secret',
MASTER_USE_GTID = slave_pos;
START SLAVE 'channel_clients';
-- Canal 2 : base commandes
CHANGE MASTER 'channel_orders' TO
MASTER_HOST = '10.0.2.1',
MASTER_USER = 'repl',
MASTER_PASSWORD = 'secret',
MASTER_USE_GTID = slave_pos;
START SLAVE 'channel_orders';
MySQL 8.0+
يستخدم MySQL جملة FOR CHANNEL:
-- Canal 1
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = '10.0.1.1',
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'secret',
SOURCE_AUTO_POSITION = 1
FOR CHANNEL 'channel_clients';
START REPLICA FOR CHANNEL 'channel_clients';
-- Canal 2
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = '10.0.2.1',
SOURCE_USER = 'repl',
SOURCE_PASSWORD = 'secret',
SOURCE_AUTO_POSITION = 1
FOR CHANNEL 'channel_orders';
START REPLICA FOR CHANNEL 'channel_orders';
كيف يكتشف PmaControl المصادر المتعددة
طلب الكشف
عندما يقوم الفراغ بجمع بيانات النسخ المتماثل، فإنه يقوم بما يلي:
SHOW SLAVE STATUS;
-- ou en MySQL 8.0+ :
SHOW REPLICA STATUS;
في النسخ المتماثل الكلاسيكي (رئيسي واحد)، يقوم هذا الاستعلام بإرجاع صف واحد. في المصادر المتعددة، يتم إرجاع سطر واحد لكل قناة.
يكتشف PmaControl المصادر المتعددة تلقائيًا عندما يقوم SHOW SLAVE STATUS بإرجاع أكثر من سطر واحد. ليس هناك أي تكوين خاص ضروري على الجانب PmaControl.
التخزين الداخلي
يتم تخزين كل قناة كإدخال نسخ متماثل مستقل في جداول السلاسل الزمنية. يتم الاحتفاظ باسم القناة واستخدامه كعنصر تمييز:
ts_value_general_json:
server_id = 42
variable = slave_status
channel = 'channel_clients'
value = { "Slave_IO_Running": "Yes", "Seconds_Behind_Master": 3, ... }
server_id = 42
variable = slave_status
channel = 'channel_orders'
value = { "Slave_IO_Running": "Yes", "Seconds_Behind_Master": 0, ... }
الصفحة التابعة في مصادر متعددة
عندما يكتشف PmaControl قنوات متعددة على الخادم، تعرض الصفحة التابعة كل قناة بشكل مستقل. بشكل ملموس:
كتلة واحدة لكل قناة
كل قناة لديها كتلة خاصة بها مع:
- اسم القناة معروض في الرأس (على سبيل المثال:
channel_clients) - حالة الإدخال/الإخراج/SQL: المؤشرات
Slave_IO_RunningوSlave_SQL_Runningالخاصة بالقناة - تأخر:
Seconds_Behind_Masterقناة محددة - GTID: حالة GTID الخاصة بالقناة
- الخطأ الأخير:
Last_SQL_Errorللقناة
رسم بياني متخلف لكل قناة
تحتوي كل قناة على مخطط Chart.js الخاص بها مع تاريخ تأخر يبلغ 5 أيام. يتم تكديس الرسومات عموديًا على الصفحة.
يسمح هذا بإجراء مقارنة مرئية: إذا كان channel_clients به تأخر ثابت عند 0 ثانية ولكن channel_orders يظهر قمم متكررة، فإن المشكلة موجودة بوضوح في الجزء الرئيسي من عناصر التحكم.
قطاع الصحة حسب القناة
كل قناة لديها الفرقة الصحية الخاصة بها. تقدم إحدى القنوات باللون الأخضر والأخرى باللون الأحمر المعلومات على الفور: المشكلة في قناة واحدة، وليس في النسخة المتماثلة نفسها.
الإجراءات لكل قناة
تتوفر الإجراءات (START، STOP، SKIP) لكل قناة:
-- Arrêter un seul canal
STOP SLAVE 'channel_orders';
-- Sauter une erreur sur un canal
SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE 'channel_orders';
-- MariaDB : stopper un canal spécifique
STOP SLAVE 'channel_clients';
REPLICATE_REWRITE_DB لكل قناة
في المصادر المتعددة، من الشائع استخدام REPLICATE_REWRITE_DB لإعادة تعيين أسماء قواعد البيانات:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = '10.0.1.1',
...
FOR CHANNEL 'channel_clients';
-- Remapper 'clients' vers 'dw_clients' sur le réplica
CHANGE REPLICATION FILTER
REPLICATE_REWRITE_DB = ((clients, dw_clients))
FOR CHANNEL 'channel_clients';
يقوم PmaControl باكتشاف هذه المرشحات وعرضها في تفاصيل القناة. يعد هذا أمرًا مهمًا لتصحيح الأخطاء: إذا لم يظهر جدول في النسخة المتماثلة، فإن التحقق من مرشحات إعادة الكتابة هو أول رد فعل.
القيود الحالية
يتعامل PmaControl مع المصادر المتعددة بشكل جيد على مستوى كل قناة على حدة. ومع ذلك، هناك بعض الميزات مفقودة للإشراف الموحد حقًا.
لا يوجد عرض "جميع القنوات الصحية".
حاليًا، لا توجد صفحة موحدة توضح الحالة الصحية لجميع قنوات النسخة المتماثلة بنظرة واحدة. يجب عليك تمرير الصفحة التابعة للتحقق من كل قناة على حدة.
ما هو مفقود: جدول ملخص في أعلى الصفحة مع مؤشر أخضر/أحمر لكل قناة، مثل:
channel_clients ✅ IO: Yes SQL: Yes Lag: 0s
channel_orders ⚠️ IO: Yes SQL: Yes Lag: 45s
channel_logs ❌ IO: No SQL: No Error: 1062
لا يوجد تأخير إجمالي
PmaControl يراقب التأخر لكل قناة على حدة، لكنه لا يحسب مقياسًا مجمعًا. على سبيل المثال:
- الحد الأقصى للتأخر بين جميع القنوات
- متوسط التأخر
- عدد القنوات التي بها خطأ من الإجمالي
قد تكون هذه المقاييس المجمعة مفيدة للتنبيهات: "تحتوي قناة واحدة على الأقل على أكثر من 60 ثانية من التأخير" أكثر ملاءمة من التنبيهات لكل قناة على حدة عندما يكون لديك 10 قنوات.
لا يوجد رسم بياني للتبعية بين القنوات
في المصادر المتعددة، تكون القنوات مستقلة. ولكن في بعض البنيات، توجد تبعيات منطقية: يجب تطبيق القناة "أ" قبل القناة "ب" (على سبيل المثال، الجداول المرجعية قبل جداول المعاملات).
PmaControl لا يشكل نموذجًا لهذه التبعيات. يجب على DBA إدارة طلب التطبيق يدويًا إذا لزم الأمر.
لا توجد تنبيهات لكل قناة
التنبيهات الحالية تكون على مستوى الخادم، وليس على القناة. إذا توقفت القناة channel_clients ولكن channel_orders قيد التشغيل، فسيقول التنبيه ببساطة "النسخ المتماثل خطأ على الخادم X" دون تحديد القناة.
حالات عملية
التوحيد التحليلي
الهندسة المعمارية النموذجية:
Master A (clients) ─── channel_clients ──→
Réplica analytique
Master B (orders) ─── channel_orders ──→ (MariaDB / MySQL)
Master C (logs) ─── channel_logs ──→
النسخة المتماثلة تدمج القواعد الثلاث. PmaControl يراقب جميع القنوات الثلاث. إذا كان السيد C (السجلات) بطيئًا، فإن تأخر القناة channel_logs يزداد دون التأثير على القناتين الأخريين.
في PmaControl، ستشاهد ثلاث كتل على الصفحة التابعة للنسخة المتماثلة، مع ثلاثة رسوم بيانية متأخرة مستقلة. سيكون لقناة channel_logs شريط صحي خاص بها باللون الكهرماني أو الأحمر، بينما يظل الشريطان الآخران باللون الأخضر.
ترحيل القناة
أثناء عملية الترحيل، قد يكون لديك مؤقتًا:
Ancien master ─── channel_legacy ──→
Nouveau réplica
Nouveau master ─── channel_new ──→
سيتم حذف قناة channel_legacy بمجرد اكتمال الترحيل. أثناء عملية النقل، يقوم PmaControl بمراقبة كلتا القناتين ويسمح لك بالتحقق من التحاق القناة الجديدة قبل كتم صوت القناة القديمة.
التصفية حسب القاعدة
باستخدام REPLICATE_DO_DB أو REPLICATE_REWRITE_DB، يمكن تصفية كل قناة لتكرار قواعد معينة فقط:
CHANGE REPLICATION FILTER
REPLICATE_DO_DB = (clients, clients_archive)
FOR CHANNEL 'channel_clients';
CHANGE REPLICATION FILTER
REPLICATE_DO_DB = (orders, order_items)
FOR CHANNEL 'channel_orders';
يعرض PmaControl عوامل التصفية النشطة لكل قناة، مما يسهل التشخيص عندما لا يظهر الجدول المتوقع في النسخة المتماثلة.
خارطة الطريق
التحسينات المخطط لها للدعم متعدد المصادر في PmaControl:
لوحة تحكم موحدة متعددة المصادر
لوحة تحكم مخصصة للمصادر المتعددة مع:
- عرض المصفوفة: نسخة طبق الأصل في السطر، وقنواتها في الأعمدة
- مؤشر الصحة العامة (الأخضر إذا كانت جميع القنوات جيدة، والأحمر إذا كان هناك KO واحد على الأقل)
- التأخر المجمع (الحد الأقصى، المتوسط، عدد الأخطاء)
مصفوفة صحة القناة
تصور مدمج من نوع "الخريطة الحرارية":
Lun Mar Mer Jeu Ven Sam Dim
ch_clients 🟢 🟢 🟢 🟢 🟢 🟢 🟢
ch_orders 🟢 🟢 🟡 🟢 🟢 🟢 🟢
ch_logs 🟢 🟡 🔴 🟡 🟢 🟢 🟢
التنبيه عن طريق القناة
تنبيهات Telegram محددة لكل قناة:
⚠️ Replication Warning
Server: replica-analytics (10.0.3.1:3306)
Channel: channel_orders
Lag: 120s (threshold: 60s)
Status: IO=Yes, SQL=Yes
الكشف التلقائي عن التبعية
تحليل المفتاح الخارجي عبر القنوات لاكتشاف التبعيات المحتملة والتنبيه في حالة تخلف قناة تابعة.
أفضل الممارسات متعددة المصادر
1. قم بتسمية القنوات بشكل واضح
استخدم أسماء وصفية: channel_clients، channel_orders، وليس ch1، ch2. يعرض PmaControl الأسماء كما هي — الأسماء الواضحة تجعل التشخيص أسهل.
2. قناة واحدة = قاعدة واحدة (أو مجموعة منطقية)
تجنب خلط القواعد غير ذات الصلة في نفس القناة. إذا توقفت القناة على خطأ، يتم حظر كل شيء فيها.
3. مراقبة مساحة سجل التتابع
مع وجود قنوات متعددة، يمكن أن تنفجر مساحة قرص سجل الترحيل. كل قناة لها سجل الترحيل الخاص بها. قم بمراقبة Relay_Log_Space لكل قناة في PmaControl.
4. اختبار توقف القناة الفردية
تأكد من أن إيقاف قناة واحدة لا يؤثر على القنوات الأخرى. PmaControl يسمح لك بإيقاف/بدء كل قناة بشكل مستقل — استخدم هذه الإمكانية للتحقق من صحة العزل.
5. توثيق البنية
يضيف تعدد المصادر التعقيد. قم بتوثيق أي قناة تحمل أي قاعدة ومن أي رئيسي وأي مرشحات. يعرض PmaControl هذه المعلومات، لكن الوثائق الخارجية تظل مفيدة لعملية الإعداد.
الخلاصة
يعد النسخ المتماثل متعدد المصادر أداة قوية لتوحيد البيانات MariaDB / MySQL. PmaControl يكتشف تلقائيًا قنوات متعددة ويراقبها بشكل فردي باستخدام الرسوم البيانية المتأخرة والنطاقات الصحية والإجراءات التصحيحية لكل قناة.
تم تحديد القيود الحالية - عدم وجود رؤية موحدة، وعدم وجود تنبيهات عبر القناة، وعدم وجود تأخير مجمع - وتشكل جزءًا من خريطة الطريق. في غضون ذلك، يغطي الإشراف على كل قناة على حدة الاحتياجات الأساسية: معرفة القناة التي بها تأخر، والقناة التي بها خطأ، والقدرة على التصرف بناءً عليها بشكل فردي.
بالنسبة لمسؤولي قواعد البيانات الذين يديرون بنيات متعددة المصادر في الإنتاج، تظل PmaControl الأداة الأكثر ملاءمة - حتى غير الكاملة - لأنه لا يوجد منافس يقدم هذه الرؤية لكل قناة خارج الصندوق.
تعليقات (0)
لا توجد تعليقات حتى الآن.
اترك تعليقا