نسخ MySQL المتماثل هي ميزة مثيرة للاهتمام تتيح للمستخدمين إدارة نسخ متعددة من قاعدة بيانات MySQL واحدة أو أكثر. يتم نسخ البيانات تلقائيًا من المصدر إلى النسخة المتماثلة من قواعد البيانات. يمكن أن يكون ذلك مفيدًا في العديد من الحالات، مثل العمل مع البيانات دون المساس بقاعدة البيانات الرئيسية، أو نسخ البيانات احتياطيًا، أو توسيع نطاق الوصول إلى قاعدة البيانات، إلخ.
في هذا الدليل، سنستعرض خطوات إعداد مثيل MySQL على خادم واحد كقاعدة بيانات مصدر، ثم تهيئة مثيل MySQL على خادم آخر ليعمل كنسخة متماثلة له.
المتطلبات الأساسية
سيوضح هذا الدليل مثالاً بسيطًا جدًا لنسخ MySQL المتماثل. وهو يتضمن قاعدة بيانات مصدر واحدة وقاعدة بيانات نسخة متماثلة واحدة. قاعدة بيانات المصدر هي النسخة الأساسية من قاعدة البيانات بينما قاعدة بيانات النسخة المتماثلة ستكون نسخة متماثلة لقاعدة بيانات المصدر. من أجل التوضيح، تم تكوين خادمين بعناوين IP التالية:
- خادم المصدر: 31.171.240.179
- خادم النسخة المتماثلة: 31.171.250.139
تم تكوين كل خادم بأحدث إعدادات خادم Ubuntu 20.04. أولاً، اتبع خطوات البرنامج التعليمي التي توضح كيفية إعداد خادم Ubuntu الخاص بك. لاحظ أن عدد قواعد بيانات النسخ المتماثلة يمكن أن يكون أكثر. يفترض هذا الدليل أنك قمت بالفعل بتثبيت MySQL وتكوينه. هل تحتاج إلى مساعدة في تثبيت MySQL؟ يوضح هذا الدليل بالتفصيل خطوات تثبيت MySQL والاستخدام الأساسي.
باختصار، إليك الحزم التي تحتاجها:
|
1 |
$ sudo apt install mysql-server mysql-client |
يجب تكوين جدران الحماية على كلا النظامين للسماح بمرور حركة المرور من كلا النظامين على المنفذ 3306. وهو المنفذ الافتراضي لـ MySQL. يمكنك معرفة المزيد حول أساسيات UFW مع عرض توضيحي من منشور المدونة الخاص بنا.
تكوين قاعدة بيانات المصدر
-
تعديل تكوين MySQL
يستخدم MySQL ملف my.cnf كملف تكوين أساسي. سنقوم بتحديث my.cnf لتعيين الخادم كـ مصدر. أولاً، افتح ملف التكوين باستخدام محرر نصوص:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
ثم، أضف السطور التالية تحت قسم mysqld:
|
1 2 3 4 |
bind-address = 31.171.240.179 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = newdatabase |
ماذا تعني هذه السطور؟
bind-address: هذا هو الإدخال الذي يحدد الارتباط بين الخدمة وعنوان IP. بشكل افتراضي، قد تكون القيمة127.0.0.1(localhost). ستكون القيمة الجديدة هي عنوان IP الخاص بالخادم.server-id: في نسخ MySQL المتماثل، يجب أن يكون لكل خادم معرف خادم فريد. يمكن أن يكون أي رقم. من أجل التبسيط، تم تعيينه على1.log_bin: يقوم بتخزين التفاصيل الفعلية لعملية النسخ المتماثل. ستقوم قاعدة بيانات النسخة المتماثلة بنسخ كل شيء مسجل في السجل.binlog_do_db: يحدد هذا الإدخال قاعدة البيانات التي ستكون موضوع النسخ المتماثل على خادم النسخة المتماثلة. يمكن أن يكون هناك أكثر من قاعدة بيانات واحدة. هنا، قاعدة البيانات التجريبية هيnewdatabase.
بعد إجراء التغييرات، احفظ ملف التكوين. يتطلب MySQL إعادة التشغيل لتحميل التغييرات على my.cnf:
|
1 |
$ sudo service mysql restart |
-
منح الإذن لمستخدم النسخة المتماثلة
الخطوة التالية هي إنشاء مستخدم للنسخة المتماثلة ومنحه الامتيازات المناسبة. يجب القيام بذلك من واجهة تفاعل MySQL. أولاً، قم بتشغيل واجهة تفاعل MySQL:
|
1 |
$ sudo mysql -u root -p |
بعد ذلك، قم بإنشاء مستخدم مخصص لقاعدة بيانات النسخة المتماثلة. قم بتغيير اسم المستخدم وكلمة المرور بشكل مناسب:
|
1 |
$ CREATE USER 'cloudsigma_s'@'31.171.240.179' IDENTIFIED BY 'password_123'; |
الآن، امنح الامتيازات المناسبة للمستخدم:
|
1 |
$ GRANT REPLICATION SLAVE ON *.* TO 'cloudsigma_s'@'31.171.240.179'; |
يمكنك معرفة المزيد حول مستخدم وصلاحيات MySQL من منشور المدونة الخاص بنا. بعد ذلك، أعد تحميل جدول الصلاحيات لتفعيل التغييرات:
|
1 |
$ FLUSH PRIVILEGES; |
-
تعديل قاعدة البيانات
نحن بحاجة إلى نسخة من قاعدة البيانات المصدر على النسخة المتطابقة. من الممكن بناء الهيكل يدويًا. ومع ذلك، في معظم الحالات، يكون ذلك غير مريح للغاية. لهذا السبب يعد تصدير قاعدة البيانات مباشرة هو الحل الأمثل. في هذا المثال، قاعدة البيانات المصدر هي newdatabase. قم بتغيير قاعدة البيانات الحالية:
|
1 |
$ USE newdatabase; |
الأمر التالي سيقوم بقفل قاعدة البيانات، مما يمنع أي تغييرات جديدة:
|
1 |
$ FLUSH TABLES WITH READ LOCK; |
بعد ذلك، تحقق من حالة قاعدة البيانات:
|
1 |
$ SHOW MASTER STATUS; |
من هذا الموضع، ستبدأ قاعدة البيانات المتطابقة في النسخ المتماثل من المصدر. ستكون هذه الأرقام مفيدة لاحقًا، لذا احتفظ بسجل لها. إذا تم إجراء أي تغييرات من نفس النافذة، فسيقوم MySQL تلقائيًا بإلغاء قفل قاعدة البيانات. لذلك، يوصى بتنفيذ الخطوات التالية في علامة تبويب أو نافذة طرفية مختلفة. لا تزال قاعدة البيانات مقفلة. قم بتصديرها إلى ملف SQL محمول:
|
1 |
$ mysqldump -u root -p --opt newdatabase > newdatabase.sql |
لقد اكتملت المهمة الآن. بعد ذلك، قم بإلغاء قفل قاعدة البيانات:
|
1 |
$ UNLOCK TABLES; |
أخيرًا، اخرج من الشل:
|
1 |
$ QUIT; |
تكوين النسخة المتطابقة
حان الوقت الآن لتكوين قاعدة البيانات المتطابقة.
-
استيراد قاعدة البيانات المصدر
نحن بحاجة إلى نسخة من قاعدة البيانات المصدر على خادم النسخة المتطابقة. سنستخدم ملف SQL الذي قمنا بتصديره سابقًا للقيام بذلك. قم بتشغيل شل MySQL:
|
1 |
$ sudo mysql -u root -p |
بعد ذلك، قم بإنشاء قاعدة بيانات فارغة باستخدام نفس اسم قاعدة البيانات:
|
1 |
$ CREATE DATABASE newdatabase; |
بعد ذلك، اخرج من الشل:
|
1 |
$ EXIT; |
الآن، قم باستيراد ملف SQL إلى قاعدة البيانات:
|
1 |
$ sudo mysql -u root -p newdatabase < newdatabase.sql |
-
تعديل تكوين MySQL
هناك بعض الأشياء المطلوبة للإعلان عنها في ملف تكوين MySQL. افتح ملف التكوين في محرر نصوص:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
ستوضع الإدخالات التالية تحت قسم mysqld. وإلا فلن يعمل. الأول هو معرف الخادم. كما ذكرنا سابقًا، يجب أن يكون فريدًا لجميع الخوادم في تكوين النسخ المتماثل للمصدر والنسخة المتطابقة. للتوضيح، تم تعيينه على 2:
|
1 |
$ server-id = 2 |
بعد ذلك، أضف السطور التالية:
|
1 2 3 |
$ relay-log = /var/log/mysql/mysql-relay-bin.log $ log_bin = /var/log/mysql/mysql-bin.log $ binlog_do_db = newdatabase |
هنا، فقط relay-log هو إدخال جديد. إنه السجل الذي ينشئه خادم النسخة المتطابقة أثناء النسخ المتماثل. تنسيق السجل هو نفسه السجل الثنائي. احفظ ملف التكوين، وأعد تشغيل MySQL:
|
1 |
$ sudo service mysql restart |
-
تمكين النسخ المتماثل
أخيرًا، نحن جاهزون لتمكين النسخ المتماثل من داخل MySQL. قم بتشغيل شل MySQL:
|
1 |
$ sudo mysql -u root -p |
قم بتشغيل الأمر التالي. أولاً، قم بتغيير عنوان IP واسم المستخدم وكلمات المرور وفقًا لذلك:
|
1 |
$ CHANGE MASTER TO MASTER_HOST='31.171.240.179',MASTER_USER='cloudsigma_master', MASTER_PASSWORD='password_123', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 107; |
يقوم الأمر بما يلي:
- يتم وضع علامة على الخادم الحالي كنسخة متطابقة للخادم المصدر.
- يحتوي خادم النسخة المتطابقة على بيانات اعتماد تسجيل الدخول المناسبة.
- يعرف خادم النسخة المتطابقة من أين يبدأ النسخ المتماثل. هل تتذكر حالة قاعدة البيانات التي تحققنا منها على الخادم المصدر؟ يأتي ملف سجل المصدر وموضع السجل من هناك.
أخيرًا، قم بتنشيط خادم النسخة المتطابقة:
|
1 |
$ START REPLICA; |
-
متنوعات
هل تحتاج إلى التحقق من تفاصيل الحالة الحالية للنسخة المتطابقة؟ قم بتشغيل الأمر التالي في شل MySQL. الـ \G في النهاية مخصصة لإعادة ترتيب النصوص لجعلها أكثر سهولة في القراءة:
|
1 |
$ SHOW REPLICA STATUS\G |
إذا كانت هناك مشكلة في الاتصال، فحاول بدء تشغيل خادم النسخة المتطابقة لتجاوزها:
|
1 |
$ SET GLOBAL SQL_REPLICA_SKIP_COUNTER = 1; REPLICA START; |
الخاتمة
ينطوي نسخ MySQL المتماثل على الكثير من الآثار. هذا مجرد عرض موجز لشكله الأساسي. ومع ذلك، يمكن توسيعه بسهولة ليشمل تكوينات متعددة للمصدر والنسخة المتطابقة. ستنطبق الخطوات نفسها أيضًا على أي تكوينات معقدة ذات مستوى أعلى. من الجيد دائمًا اختبار أي تكوين بعد ذلك. جرب إجراء بعض عمليات insert, delete أو update على قاعدة بيانات المصدر. إذا كان الإعداد يعمل، فيجب أن تلتقط قاعدة بيانات النسخة المتطابقة كل شيء بشكل صحيح.
علاوة على ذلك، يمكنك إلقاء نظرة على المزيد من الموارد في مدونتنا والتي تغطي ما يمكنك القيام به باستخدام MySQL:
- SQLite مقابل MySQL مقابل PostgreSQL: مقارنة بين أنظمة إدارة قواعد البيانات العلائقية
- كيفية إعادة تعيين كلمة مرور root لـ MariaDB أو MySQL
- كيفية تثبيت حزمة LEMP (Linux و Nginx و MySQL و PHP) على Ubuntu 20.04
حوسبة سعيدة!







التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.