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 العربية
← العودة إلى بلوق

نشر السيد/التابع ومراقبة النسخ المتماثل في PmaControl

تم النشر بتاريخ 13 أبريل 2026 بواسطة Aurélien LEQUOY
mariadb mysql replication master-slave monitoring pmacontrol
يشارك X LinkedIn Facebook Email PDF
نشر السيد/التابع ومراقبة النسخ المتماثل في PmaControl

التكرار في عام 2026: لا يزال هو الركيزة الأساسية

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

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

تكوين النسخ المتماثل

المتطلبات الأساسية على الجانب الرئيسي

يجب أن يكون binlog ممكّنًا للسيد وأن يكون server-id فريدًا:

[mysqld]
server-id = 1
log-bin = /var/log/mysql/mysql-bin
binlog-format = ROW
gtid_strict_mode = ON          # MariaDB
# enforce_gtid_consistency = ON  # MySQL
# gtid_mode = ON                 # MySQL

إنشاء مستخدم النسخ المتماثل:

CREATE USER 'repl'@'10.0.1.%' IDENTIFIED BY 'secret_replication_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1.%';

المتطلبات الأساسية على الجانب السلافي

يحتاج العبد إلى server-id وسجل الترحيل الخاص به:

[mysqld]
server-id = 2
relay-log = /var/log/mysql/relay-bin
read-only = ON
log-slave-updates = ON
`

log-slave-updates` ضروري إذا كنت تخطط لتقييد العبيد (عبد العبد) أو استخدام Galera.

بدء النسخ المتماثل

مع GTID (مستحسن)

على MariaDB:

CHANGE MASTER TO
  MASTER_HOST = '10.0.1.1',
  MASTER_USER = 'repl',
  MASTER_PASSWORD = 'secret_replication_password',
  MASTER_USE_GTID = slave_pos;

START SLAVE;

على MySQL 8.0+:

CHANGE REPLICATION SOURCE TO
  SOURCE_HOST = '10.0.1.1',
  SOURCE_USER = 'repl',
  SOURCE_PASSWORD = 'secret_replication_password',
  SOURCE_AUTO_POSITION = 1;

START REPLICA;

بدون GTID (الوضع الكلاسيكي)

إذا لم يتم تنشيط GTID، لاحظ موضع binlog الخاص بالسيد:

-- Sur le master
SHOW MASTER STATUS;
-- File: mysql-bin.000042, Position: 154

-- Sur le slave
CHANGE MASTER TO
  MASTER_HOST = '10.0.1.1',
  MASTER_USER = 'repl',
  MASTER_PASSWORD = 'secret_replication_password',
  MASTER_LOG_FILE = 'mysql-bin.000042',
  MASTER_LOG_POS = 154;

START SLAVE;

تأكد من أنه يعمل

SHOW SLAVE STATUS\G

المؤشران الرئيسيان:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

إذا كان Slave_IO_Running هو No، فلن يتمكن العبد من الاتصال بالرئيس (الشبكة، بيانات الاعتماد، جدار الحماية). إذا كان Slave_SQL_Running هو No، فلن يتمكن العبد من تطبيق الأحداث (خطأ SQL، تم انتهاك القيد).

إضافة خوادم إلى PmaControl

عبر واجهة الويب

  1. انتقل إلى الخوادم → إضافة خادم
  2. أدخل بيانات اعتماد IP والمنفذ (3306) وSSH وMySQL
  3. PmaControl يكتشف تلقائيًا الدور (السيد أو العبد) بعد دورة التجميع الأولى

عبر API REST

# Ajouter le master
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "10.0.1.1", "port": 3306, "name": "db-prod-master", "ssh_key_id": 1}' \
  https://pmacontrol.example.com/api/v1/servers

# Ajouter le slave
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ip": "10.0.1.2", "port": 3306, "name": "db-prod-slave-01", "ssh_key_id": 1}' \
  https://pmacontrol.example.com/api/v1/servers

PmaControl يبدأ دورة التجميع خلال دقيقة واحدة. يظهر العبد بعد ذلك بشارة "التابع" في لوحة القيادة.

الصفحة التابعة في PmaControl

يمكن الوصول إلى مراقبة النسخ المتماثل عبر المسار:

/{lang}/slave/show/{id}/{name}/

على سبيل المثال: /fr/slave/show/42/db-prod-slave-01/

تعرض وحدة التحكم Slave.php إجراءين رئيسيين:

  • show(): الصفحة الرئيسية التي تحتوي على الحالة الحالية والرسم البياني للتأخر
  • showGraphDay(): بيانات AJAX لتحميل يوم إضافي للرسم البياني

المتغيرات المراقبة

PmaControl يجمع كل المتغيرات من SHOW SLAVE STATUS ويخزنها في جداول السلاسل الزمنية. الأكثر أهمية:

يختلف معنى
Slave_IO_Running هل مؤشر ترابط الإدخال والإخراج نشط (الاتصال بالرئيسي)
Slave_SQL_Running هل الموضوع SQL نشط (تطبيق الأحداث)
Seconds_Behind_Master تأخر في ثواني
Using_Gtid وضع GTID المستخدم (MariaDB)
Auto_Position الموضع التلقائي لمعرف GTID (MySQL)
Last_SQL_Error تمت مواجهة الخطأ الأخير SQL
Relay_Log_Space حجم سجل التتابع الحالي

بالنسبة إلى MySQL 8.0+، يدير PmaControl أيضًا المعادلات المُعاد تسميتها:

المتغير القديم متغير جديد (MySQL 8.0+)
Slave_IO_Running Replica_IO_Running
Slave_SQL_Running Replica_SQL_Running
Seconds_Behind_Master Seconds_Behind_Source

PmaControl يقوم تلقائيًا بتطبيع الاسمين داخليًا.

الرسم البياني للتأخر

الرسم البياني المتأخر هو قلب الصفحة التابعة. يعرض آخر 5 أيام من Seconds_Behind_Master كمنحنى Chart.js.

الميزات:

  • الدقة: نقطة واحدة في الدقيقة (1440 نقطة في اليوم)
  • التحميل التدريجي: يتم تحميل اليوم الحالي على الفور، والأيام السابقة عبر AJAX "تحميل اليوم السابق"
  • القياس التلقائي: يتكيف المحور Y مع الحد الأقصى للتأخر الملحوظ
  • المنطقة الخضراء: < 10 ثوانٍ، تشغيل عادي
  • المنطقة الكهرمانية: 10-60 ثانية، تأخر متوسط
  • المنطقة الحمراء: > 60 ثانية، تأخر حرج

القطاع الصحي

يوجد فوق الرسم البياني شريط أفقي يلخص حالة كل دقيقة على مدار 24 ساعة مع رمز اللون:

اللون الحالة
الأخضر تشغيل IO + SQL تشغيل + تأخر <60 ثانية
العنبر تشغيل IO + SQL تشغيل + تأخر > 60 ثانية
أحمر تم إيقاف الإدخال/الإخراج أو SQL، أو خطأ فادح

إنه مؤشر بصري فوري: نظرة واحدة تكفي لمعرفة ما إذا كان اليوم الأخير مستقرًا أم فوضويًا.

الإجراءات التصحيحية منذ PmaControl

الصفحة السلافية لا تقتصر على الملاحظة. PmaControl يسمح لك بالتصرف مباشرة عند النسخ المتماثل.

ابدأ / أوقف العبيد

زرين لبدء النسخ المتماثل أو إيقافه. STOP SLAVE مفيد لـ:

  • إجراء الصيانة على العبد (جدول ALTER الثقيل)
  • أخذ نسخة احتياطية متسقة (لقطة مع توقف النسخ المتماثل)
  • تشخيص مشكلة التأخر (توقف لفحص السجل)

خطأ في التخطي

عندما يتوقف النسخ المتماثل عند حدوث خطأ SQL (قيد مكرر، جدول مفقود)، يقترح PmaControl تخطي الحدث:

SET GLOBAL sql_slave_skip_counter = 1;
START SLAVE;

تنبيه: يتطلب هذا الإجراء تأكيدًا صريحًا. تخطي حدث يعني قبول التناقض بين السيد والعبد. PmaControl يسجل الإجراء مع المستخدم والتاريخ والخطأ الذي تم تخطيه لإمكانية التتبع.

العمال المتوازيين (النسخ المتوازي)

يقدم PmaControl شريط تمرير لضبط عدد عمال النسخ المتماثل المتوازي:

  • الحد الأدنى: 1 (النسخ المتسلسل الكلاسيكي)
  • الحد الأقصى: 50 أو وحدة المعالجة المركزية × 2 (أيهما أصغر)
STOP SLAVE;
SET GLOBAL slave_parallel_workers = 8;
START SLAVE;

تتيح لك زيادة عدد العمال اللحاق بالتأخير بسرعة أكبر، لأنه يتم تطبيق العديد من المعاملات بالتوازي. لكن كن حذرًا: هذا يعمل بشكل جيد فقط مع النسخ المتماثل المتوازي بواسطة LOGICAL_CLOCK (MariaDB) أو WRITESET (MySQL 8.0+).

خوارزمية اللحاق بـ ETA

عندما يتأخر العبد، يكون السؤال المباشر هو: كم من الوقت يجب اللحاق به؟

PmaControl يحسب التقدير (ETA) بناءً على:

  1. التأخر الحالي بالثواني
  2. سرعة اللحاق الملحوظة (التباين في التأخر خلال الدقائق العشر الأخيرة)
  3. الاستقراء الخطي
Si le lag passe de 3600s à 3000s en 10 minutes :
  Vitesse = 600s rattrapées / 10min = 60s/min
  ETA = 3000s / 60s/min = 50 minutes

يتم عرض ETA في أعلى الصفحة التابعة مع شريط التقدم. إذا كانت سرعة اللحاق صفرًا أو سالبة (يزداد التأخر)، يعرض PmaControl "ETA: Divergent" باللون الأحمر - إشارة إلى ضرورة التدخل.

دعم GTID

يكتشف PmaControl وضع GTID تلقائيًا:

  • MariaDB: قراءة Using_Gtid في SHOW SLAVE STATUS. القيم المحتملة: No، Slave_Pos، Current_Pos
  • MySQL: قراءة Auto_Position في SHOW SLAVE STATUS. القيم المحتملة: 0، 1

عندما يكون GTID نشطًا، يعرض PmaControl معلومات إضافية:

  • مجموعة GTID للنسخة الرئيسية (Gtid_Slave_Pos أو Executed_Gtid_Set)
  • مجموعة GTID للعبد
  • الدلتا بين الاثنين (عدد المعاملات المتأخرة)

غالبًا ما تكون دلتا GTID أكثر أهمية من Seconds_Behind_Master: فهي توفر العدد الدقيق للمعاملات المطلوب اللحاق بها، بغض النظر عن مدة كل معاملة.

أفضل الممارسات

1. استخدم دائمًا GTID

وضع موضع Binlog (ملف + موضع) هش: تتم إزالة الملف مبكرًا جدًا، وتجاوز الفشل، وتعطل النسخ المتماثل. GTID غير فعال وينجو من حالات الفشل.

2. تفعيل read_only على العبيد

SET GLOBAL read_only = ON;
SET GLOBAL super_read_only = ON;  -- MySQL 5.7.8+ / MariaDB 10.3.16+

بدون read_only، تؤدي الكتابة غير المقصودة إلى العبد إلى حدوث انحراف صامت.

3. مراقبة التأخر، وليس الحالة فقط

Slave_IO_Running: Yes وSlave_SQL_Running: Yes ليسا كافيين. يمكن أن يكون العبد "قيد التشغيل" ولكن بفارق ساعتين. PmaControl يراقب كلا من: الحالة والتأخر.

4. تكوين التنبيهات

في PmaControl، قم بتكوين حدود التنبيه:

  • تحذير: تأخر > 60 ثانية لمدة 5 دقائق
  • حرج: تأخر > 300 ثانية أو توقف الإدخال/الإخراج/SQL

يتم إرسال التنبيهات عبر Telegram مع اسم الخادم والتأخير الحالي والرابط المباشر للصفحة التابعة.

5. خطط للعلاجات الرئيسية

يؤدي ALTER TABLE على الطاولات الكبيرة إلى حدوث ارتفاع مؤقت في التأخر. استخدم pt-online-schema-change أو gh-ost لـ DDLs في الإنتاج، وقم بإخطار PmaControl بوضع التابع في الصيانة لتجنب الإيجابيات الكاذبة.

الخلاصة

من السهل تكوين النسخ المتماثل MariaDB / MySQL ولكن من الصعب صيانته بمرور الوقت. PmaControl يسد الفجوة بين "النسخ المتماثل قيد التشغيل" و"النسخ المتماثل سليم" من خلال توفير:

  • عرض في الوقت الحقيقي للتأخر مع تاريخ 5 أيام
  • الإجراءات التصحيحية المتكاملة (البدء/الإيقاف، التخطي، العمال الموازيين)
  • تقدير اللحاق بالركب (ETA) للتوقع
  • الكشف التلقائي عن GTID
  • تنبيهات استباقية عبر تيليجرام

الهدف ليس استبدال مسؤول قواعد البيانات، بل منحهم الأدوات اللازمة للاستجابة في دقائق بدلاً من ساعات.

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

تعليقات (0)

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

اترك تعليقا

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