MySQL: التكرار بين الخادم الرئيسي والخادم التابع في MySQL…
آخر تحديث: 2026-08-26
يُعد النسخ المتماثل بنظام «الماستر-السلايف» أساس التوافر العالي في MySQL — حيث يعتمد عليه كل من الفصل بين القراءة والكتابة والتحويل التلقائي في حالة الفشل.
يشرح هذا الدرس مبادئ النسخ المتماثل بين الخادم الرئيسي والخادم التابع وكيفية تهيئتهما.
1. ما ستتعلمه
- مبادئ النسخ المتماثل بين الخادم الرئيسي والخادم التابع
- تهيئة النسخ المتماثل بين الخادم الرئيسي والخادم التابع
- الفصل بين القراءة والكتابة
- النسخ شبه المتزامن
- النسخ المتزامن للمجموعات في MySQL
2. قصة حقيقية
(1) المشكلة: لا يستطيع الخادم الواحد تحمل عبء عمليات القراءة والكتابة
تحتوي منصة التجارة الإلكترونية على خادم قاعدة بيانات واحد فقط، لذا خلال فعاليات التخفيضات الكبرى، تتركز جميع طلبات القراءة والكتابة على جهاز واحد. فتتباطأ استعلامات الطلبات، وتُوضع عمليات الكتابة في قائمة الانتظار، وتصل وحدة المعالجة المركزية (CPU) إلى طاقتها القصوى — لتصبح قاعدة البيانات عنق الزجاجة للنظام بأكمله. والأمر الأكثر خطورة هو أنه في حالة تعطل هذا الجهاز، يتوقف العمل بالكامل.
(2) حل يعتمد على النسخ المتماثل بنظام «الرئيسي-التابع» وفصل عمليات القراءة عن عمليات الكتابة
تنفيذ النسخ المتماثل بين قاعدة البيانات الرئيسية وقاعدة البيانات التابعة: تُسجَّل عمليات الكتابة في قاعدة البيانات الرئيسية، بينما تُجرى عمليات القراءة في قاعدة البيانات التابعة. وفي حال تعطل قاعدة البيانات الرئيسية، يتم ترقية قاعدة البيانات التابعة إلى قاعدة بيانات رئيسية، مما يضمن استمرارية الأعمال.
| البعد | خادم واحد | النسخ المتماثل بين الخادم الرئيسي والخادم التابع + الفصل بين القراءة والكتابة |
|---|---|---|
| أداء القراءة | الحد الأقصى لعدد الخوادم الفردية | التوسع الأفقي (إضافة قواعد بيانات تابعة) |
| أداء الكتابة | التنافس بين عمليات القراءة والكتابة | قاعدة البيانات الأساسية المخصصة للكتابة حصريًّا |
| التوافر | 99% | 99.9% |
| التعافي من الكوارث | التعافي اليدوي (كل ساعة) | التحويل التلقائي في حالة الفشل (كل دقيقة) |
3. مبدأ التكرار
graph LR
A[Master<br/>Primary Database] -->|binlog| B[Slave IO Thread]
B -->|relay log| C[Slave SQL Thread]
C -->|Replay| D[Slave Data<br/>Data from the database]
| الخطوة | الوصف |
|---|---|
| 1 | يقوم الخادم الرئيسي بتسجيل البيانات في سجل الأحداث |
| 2 | مؤشر ترابط الإدخال/الإخراج التابع يستخرج سجل العمليات الثنائية |
| 3 | الكتابة إلى سجل الترحيل المحلي |
| 4 | مؤشر ترابط SQL التابع يعيد تشغيل سجل الترحيل |
4. تكوين النسخ المتماثل بين الخادم الرئيسي والخادم التابع
▶ مثال: التكوين الرئيسي
# my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
-- Create a replication user
CREATE USER 'repl'@'%' IDENTIFIED BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
-- View master status
SHOW MASTER STATUS;
▶ مثال: تكوين العبد
# my.cnf
[mysqld]
server-id = 2
relay_log = relay-bin
-- Configure master-slave relationship
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='ReplPass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
-- Start the slave database
START SLAVE;
-- Check slave database status
SHOW SLAVE STATUS\G
5. الفصل بين عمليات القراءة والكتابة
graph TB
A[Applications] -->|Write| B[Master]
A -->|Read| C[Slave 1]
A -->|Read| D[Slave 2]
B -->|Replicate| C
B -->|Replicate| D
6. النسخ شبه المتزامن
-- Install the semi-synchronous plugin
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;
| طريقة النسخ | الوصف |
|---|---|
| النسخ المتزامن | لا ينتظر الخادم الرئيسي تأكيدًا من الخادم التابع (الافتراضي) |
| النسخ شبه المتزامن | لا يتم الإرجاع إلا بعد أن يؤكد تابع واحد على الأقل استلام البيانات |
| النسخ المتزامن الكامل | يجب أن تؤكد جميع الخوادم التابعة (أداء ضعيف) |
7. النسخ المتماثل الجماعي في MySQL
-- Install the Group Replication plugin
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
-- Start Group Replication
SET GLOBAL group_replication_bootstrap_group = ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group = OFF;
❓ أسئلة شائعة
📖 ملخص
- النسخ المتماثل بين الماستر والسلفي يحقق مزامنة البيانات عبر سجل العمليات الثنائية (binlog) → سجل الترحيل (relay log)
- النسخ المتزامن هو الطريقة الافتراضية؛ أما النسخ شبه المتزامن فهو أكثر أمانًا.
- الفصل بين القراءة والكتابة يوزع الحمل، حيث يتولى الخادم الأساسي عمليات الكتابة بينما يتولى الخادم الثانوي عمليات القراءة
- التكرار الجماعي يُنفذ مجموعة تتمتع بتوافر عالٍ
📝 تمارين
-
سؤال أساسي (مستوى الصعوبة: ⭐): قم بإعداد بيئة النسخ المتماثل من النوع «الرئيسي-التابع».
-
مشكلة متقدمة (درجة الصعوبة ⭐⭐): التحقق من مزامنة البيانات بين الخادم الرئيسي والخادم التابع.
-
التحدي (مستوى الصعوبة: ⭐⭐⭐): قم بمحاكاة عطل في قاعدة البيانات الرئيسية وقم بإجراء عملية التحويل التلقائي يدويًّا.