PmaControl logo PmaControl
  • مرحباً
  • PmaControl
    • وكلاء الذكاء الاصطناعي 13 وكلاء محليين
    • عروضنا المجتمع، السحابة، محليًا، المميز
    • التوثيق أدلة، API، الهندسة المعمارية
    • السوق المكونات الإضافية للمجتمع
    • عملاء أكثر من 28 شركة
    • الأسئلة الشائعة 25 سؤالا / 7 فئات
    قواعد البيانات
    • ماريا دي بي 31 مادة
    • ماي إس كيو إل 11 مادة
    • مجموعة جاليرا 6 عناصر
    • ماكس سكيل 3 عناصر
    • ProxySQL 2 عناصر
    • أمازون أورورا ماي إس كيو إل 0 العناصر
    • قاعدة بيانات أزور 0 العناصر
    • انقر البيت 0 العناصر
    • GCP CloudSQL 0 العناصر
    • بيركوناسيرفر 0 العناصر
    • متجر واحد 0 العناصر
    • تي دي بي 0 العناصر
    • سرعة 0 العناصر
    الحلول
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • Observabilité SQL المراقبة والتنبيهات والطوبولوجيا
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2
    • Migration & upgrade صفر توقف عن العمل، pt-osc، gh-ost
  • عروضنا
  • موارد
    • التوثيق الأدلة الفنية وواجهات برمجة التطبيقات
    • مركز تحسين MySQL مؤشر تخفيض السعر والمقاييس والإعدادات والحوادث
    • الأسئلة الشائعة 25 سؤالا متكررا
    • الشهادات ملاحظات العملاء وحالات الاستخدام
    • مدونة مقالات ورؤى
    • خريطة الطريق الميزات القادمة
    مجالات الخبرة
    • Observabilité SQL المراقبة والتنبيهات وطوبولوجيا Dot3
    • Haute disponibilité النسخ المتماثل، تجاوز الفشل، جاليرا
    • Sécurité & conformité التدقيق، اللائحة العامة لحماية البيانات، SOC2، ISO 27001
    • Disaster Recovery النسخ الاحتياطي والاستعادة، RPO/RTO
    • Performance & optimisation ملخصات، شرح، ضبط
    • Migration & upgrade صفر توقف عن العمل، pt-osc
    روابط سريعة
    • جيثب ويكي 26 صفحة - التثبيت والمحرك والمكونات الإضافية
    • كود المصدر مستودع جيثب الرسمي
    • دعم 24 × 7 حالات الطوارئ MariaDB وMySQL
    • احجز عرضًا توضيحيًا 30 دقيقة - هندسة معمارية حقيقية
  • دعم 24 × 7
  • احجز عرضًا توضيحيًا
احجز عرضًا توضيحيًا
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文 🇸🇦 AR العربية
← العودة إلى بلوق

MySQL 8.0 النسخ المتماثل: التوفيق بين المصدر/النسخة المتماثلة والرئيس/التابع

تم النشر بتاريخ 8 أبريل 2026 بواسطة Aurélien LEQUOY
mysql replication compatibility mysql-8.0 migration
يشارك X LinkedIn Facebook Email PDF
MySQL 8.0 النسخ المتماثل: التوفيق بين المصدر/النسخة المتماثلة والرئيس/التابع

إعادة التسمية

MySQL 8.0.22 قدم تغييرًا كبيرًا في المصطلحات: تم استبدال المصطلحين Master و Slave في أوامر وأعمدة إخراج النسخ المتماثل بـ Source و Replica.

إنه ليس مجرد تغيير تجميلي. بشكل ملموس:

  • SHOW SLAVE STATUS يصبح SHOW REPLICA STATUS
  • CHANGE MASTER TO يصبح CHANGE REPLICATION SOURCE TO
  • يصبح العمود Master_Host في الإخراج Source_Host
  • Slave_IO_Running يصبح Replica_IO_Running
  • Slave_SQL_Running يصبح Replica_SQL_Running
  • Seconds_Behind_Master يصبح Seconds_Behind_Source

وهكذا لنحو ثلاثين عمودًا.

MySQL 8.0 يحافظ على التوافق: الأوامر القديمة لا تزال تعمل (مع تحذير الإهمال). لكن MySQL 8.4 يبدأ في إزالة الأسماء المستعارة القديمة. وMariaDB، من جهته، يحتفظ بالمصطلحات التاريخية.

مشكلة أدوات المراقبة

أي أداة تقوم بتحليل مخرجات SHOW SLAVE STATUS / SHOW REPLICA STATUS يجب أن تتعامل الآن مع مجموعتين من أسماء الأعمدة اعتمادًا على إصدار الخادم:

قديم (MariaDB، MySQL 5.7) جديد (MySQL 8.0+)
Master_Host Source_Host
Master_User المصدر_المستخدم
Master_Port Source_Port
ملف_السجل_الرئيسي Source_Log_File
قراءة_Master_Log_Pos قراءة_Source_Log_Pos
Slave_IO_Running Replica_IO_Running
Slave_SQL_Running Replica_SQL_Running
Slave_IO_State Replica_IO_State
ثواني_خلف_السيد ثواني_خلف_المصدر
Last_IO_Error Last_IO_Error
Last_SQL_Error Last_SQL_Error
Exec_Master_Log_Pos Exec_Source_Log_Pos

المشكلة ذات شقين:

  1. الكود الموجود يستخدم أسماء الأعمدة القديمة في كل مكان. مئات الإشارات إلى $row['Master_Host'] أو $row['Slave_IO_Running'].
  2. البنية التحتية مختلطة: MariaDB 10.6 و10.11، MySQL 5.7 في نهاية العمر الافتراضي، MySQL 8.0، MySQL 8.4 تم نشرها حديثًا. الكل في نفس PmaControl.

الحل الساذج (ولماذا لا ينجح)

الفكرة الأولى: الكشف عن الإصدار واستخدام اسم العمود الصحيح.

// Ne faites pas ça
if ($version >= '8.0.22') {
    $host = $row['Source_Host'];
    $io_running = $row['Replica_IO_Running'];
} else {
    $host = $row['Master_Host'];
    $io_running = $row['Slave_IO_Running'];
}

هذا النمط كارثي للحفاظ عليه. يجب تكرار كل مكان في الكود يقرأ حقل النسخ المتماثل. مع 30 عمودًا وعشرات الأماكن في الكود، نصل إلى مئات الشروط.

ومتى سيضيف MySQL 9.0 أسماء مستعارة جديدة؟ هل يجب علينا مضاعفة الكود ثلاث مرات؟

النهج الدبقي: الاسم المستعار ثنائي الاتجاه على مستوى السائق

الحل المطبق في إطار عمل Glial (الذي يوفر طبقة الوصول MySQL لـ PmaControl) أكثر أناقة: الاسم المستعار ثنائي الاتجاه على مستوى برنامج التشغيل.

عندما ينفذ برنامج التشغيل Glial SHOW REPLICA STATUS (أو SHOW SLAVE STATUS)، فإنه يثري النتيجة بإضافة الاسمين لكل عمود:

// Dans le driver MySQL de Glial
$replication_aliases = [
    'Master_Host'          => 'Source_Host',
    'Master_User'          => 'Source_User',
    'Master_Port'          => 'Source_Port',
    'Master_Log_File'      => 'Source_Log_File',
    'Read_Master_Log_Pos'  => 'Read_Source_Log_Pos',
    'Slave_IO_Running'     => 'Replica_IO_Running',
    'Slave_SQL_Running'    => 'Replica_SQL_Running',
    'Slave_IO_State'       => 'Replica_IO_State',
    'Seconds_Behind_Master'=> 'Seconds_Behind_Source',
    'Exec_Master_Log_Pos'  => 'Exec_Source_Log_Pos',
    // ... toutes les paires
];

// Après fetch du résultat
foreach ($replication_aliases as $old => $new) {
    if (isset($row[$old]) && !isset($row[$new])) {
        $row[$new] = $row[$old];
    }
    if (isset($row[$new]) && !isset($row[$old])) {
        $row[$old] = $row[$new];
    }
}

النتيجة: يمكن لرمز المستهلك استخدام الاسم القديم أو الجديد بالتساوي. سواء كان الخادم MariaDB 10.6، أو MySQL 5.7، أو MySQL 8.0، أو MySQL 8.4، فإن كلا الاسمين موجودان دائمًا في النتيجة.

ميزة هذا النهج

1. لا توجد تغييرات على التعليمات البرمجية الموجودة

تستمر مئات الإشارات إلى $row['Master_Host'] في PmaControl في العمل. لا يلزم ترحيل التعليمات البرمجية.

2. يمكن للكود الجديد استخدام مصطلحات جديدة

يمكن للمطورين الذين يكتبون تعليمات برمجية جديدة استخدام $row['Source_Host'] الآن. عندما تتم إعادة صياغة الكود القديم تدريجيًا، سيكون الانتقال سلسًا.

3. نقطة صيانة واحدة

يتم تعريف الاسم المستعار مرة واحدة فقط، في برنامج التشغيل. إذا أضاف MySQL 9.0 حقولًا جديدة أو أعاد تسمية أعمدة أخرى، فما عليك سوى توسيع جدول الاسم المستعار.

4. التوافق مع إظهار حالة العبد وإظهار حالة النسخة المتماثلة

يحاول برنامج التشغيل أولاً SHOW REPLICA STATUS. إذا فشل الأمر (MySQL 5.7, MariaDB)، فسيعود إلى SHOW SLAVE STATUS. وفي كلتا الحالتين، تحتوي النتيجة على مجموعتي الأسماء.

try {
    $result = $db->query('SHOW REPLICA STATUS');
} catch (Exception $e) {
    $result = $db->query('SHOW SLAVE STATUS');
}
// Dans tous les cas, $result contient Master_Host ET Source_Host

حالة المصادر المتعددة

MySQL 8.0 يدعم النسخ المتماثل متعدد المصادر (قنوات متعددة). يقوم الأمر SHOW REPLICA STATUS بعد ذلك بإرجاع عدة أسطر، سطر واحد لكل قناة. ينطبق الاسم المستعار على كل سطر على حدة.

يدعم MariaDB أيضًا النسخ المتماثل متعدد المصادر ولكن بصيغة مختلفة (SHOW SLAVE 'channel_name' STATUS أو SHOW ALL SLAVES STATUS). يقوم برنامج التشغيل Glial بتسوية هذه الاختلافات بحيث يتلقى PmaControl تنسيقًا موحدًا.

التأثير على PmaControl

بفضل هذا الاسم المستعار في برنامج التشغيل Glial، يدير PmaControl بشفافية:

  • MariaDB 10.6 / 10.11: المصطلحات الرئيسية/التابعة، SHOW SLAVE STATUS
  • MySQL 5.7: مصطلحات السيد/التابع، SHOW SLAVE STATUS
  • MySQL 8.0: مصطلحات المصدر/النسخة المتماثلة، SHOW REPLICA STATUS (مع الرجوع القديم)
  • MySQL 8.4: مصطلحات المصدر/النسخة المتماثلة فقط، SHOW REPLICA STATUS

تعرض واجهة PmaControl معلومات النسخ المتماثل بشكل موحد، بغض النظر عن إصدار الخادم. تعرض لوحة معلومات النسخ المتماثل Source_Host في الأعمدة، لكن الاستعلامات الداخلية تعمل مع كلا الاسمين.

أوامر أيضا

لا تقتصر إعادة التسمية على أعمدة الإخراج فقط. تمت إعادة تسمية أوامر SQL نفسها:

قديم جديد
CHANGE MASTER TO CHANGE REPLICATION SOURCE TO
START SLAVE START REPLICA
STOP SLAVE STOP REPLICA
RESET SLAVE RESET REPLICA
SHOW SLAVE HOSTS SHOW REPLICAS

يستخدم PmaControl نفس الأسلوب: جرب الأمر الجديد، ثم قم بالرجوع إلى الأمر القديم.

توصيات لأدواتك الخاصة

إذا كنت تحتفظ بالبرامج النصية أو الأدوات التي تحلل مخرجات النسخ المتماثل:

  1. لا تستخدم شروط الإصدار — فهي هشة وغير قابلة للقياس
  2. تنفيذ الاسم المستعار ثنائي الاتجاه على أدنى مستوى ممكن (المحرك، طبقة التجريد)
  3. اكتب رمزًا جديدًا بالمصطلحات الجديدة — المصدر/النسخة المتماثلة
  4. اختبار على الإصدارات الأربعة الرئيسية: MariaDB 10.x، MySQL 5.7، MySQL 8.0، MySQL 8.4
  5. التحضير لـ MySQL 9.x — قد تختفي الأسماء المستعارة القديمة تمامًا

الخلاصة

تعد إعادة تسمية Master/Slave إلى Source/Replica في MySQL 8.0 تغييرًا بسيطًا على ما يبدو ولكنه من المحتمل أن يكسر أي أداة مراقبة أو نسخ احتياطي أو تنسيق تقوم بتوزيع مخرجات النسخ المتماثل.

الحل النظيف هو الاسم المستعار ثنائي الاتجاه على مستوى برنامج التشغيل: تنفيذ واحد، عدم إجراء أي تغييرات في كود المستهلك، التوافق الكامل من MariaDB 10.x إلى MySQL 8.4.

هذا ما يفعله إطار عمل Glial، وهذا ما يسمح لـ PmaControl بالإشراف على البنى التحتية المختلطة MariaDB / MySQL بدون تكوين خاص لكل إصدار.

يشارك X LinkedIn Facebook Email PDF
← العودة إلى بلوق

تعليقات (0)

لا توجد تعليقات حتى الآن.

اترك تعليقا

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
إشعارات قانونية GitHub اتصال
لا تنتظر وقوع الحادث حتى تفهم هندستك المعمارية. © 2014-2026 PmaControl — 68Koncept