يدعم MySQL النسخ المتماثل أحادي الاتجاه وغير المتزامن أثناء عملية النسخ المتماثل يعمل الخادم كخادم رئيسي. يعمل خادم آخر أو أكثر كخوادم تابعة. يكتب الخادم الرئيسي تحديثات لملفات السجل الثنائية ويحتفظ بفهرس لملفات السجل لتتبع دوران السجل. عندما يتصل العبد بالسيد، يقوم بإعلام السيد بموقع آخر تحديث ناجح قرأه العبد في السجل. يتلقى الخادم التابع أي تحديثات حدثت منذ ذلك الحين، ثم يحظر وينتظر حتى يقوم الخادم الرئيسي بإعلام التحديث التالي.
لماذا استخدام النسخ المتماثل السيد والعبد؟
1. يزيد إعداد الخادم الرئيسي/الخادم التابع من المتانة. عندما يحدث خطأ ما في الخادم الرئيسي، يمكنك التبديل إلى الخادم التابع كنسخة احتياطية.
2. من خلال تقسيم عبء معالجة استعلامات العملاء بين الخادم الرئيسي والخادم التابع، يمكنك الحصول على وقت استجابة أفضل للعملاء. لكن لا تقم بالتحديث على الخوادم الرئيسية والتابعة في نفس الوقت، لأن ذلك قد يسبب تعارضات.
3. هناك فائدة أخرى لاستخدام النسخ المتماثل وهي أنه يمكنك استخدام خادم تابع لإجراء عمليات النسخ الاحتياطي دون إزعاج الخادم الرئيسي. يمكن للخادم الرئيسي متابعة معالجة التحديثات أثناء عملية النسخ الاحتياطي.
يستخدم MySQL 3 سلاسل لتنفيذ وظائف النسخ المتماثل (1 على الخادم الرئيسي واثنتان على الخادم التابع. عندما يتم إصدار START SLAVE، يقوم الخادم التابع بإنشاء خيط إدخال/إخراج للاتصال بالخادم الرئيسي والسماح للخادم الرئيسي بإرسال ثنائي log.log يقوم الخادم الرئيسي بإنشاء مؤشر ترابط لإرسال محتويات السجل الثنائي إلى الخادم التابع. يقرأ مؤشر ترابط الإدخال / الإخراج للخادم التابع المحتوى الذي يرسله مؤشر ترابط Binlog Dump للخادم الرئيسي وينسخ البيانات إلى ملف محلي في الخادم التابع. دليل بيانات الخادم، أي سجل الترحيل، والخيط الثالث هو خيط SQL، ويستخدم الخادم التابع هذا الخيط لقراءة سجل الترحيل وتنفيذ التحديثات الموجودة في السجل للاستعلام عن النسخ المتماثل الذي حدث على الخادم الرئيسي. معلومات الخادم التابع.
يستخدم سجل الترحيل الافتراضي اسم ملف بالصيغة host_name-relay-bin.nnnnnn، حيث يكون host_name هو اسم مضيف الخادم التابع وnnnnnn هو الرقم التسلسلي. قم بإنشاء ملفات سجل ترحيل متتالية بأرقام تسلسلية متتالية، بدءًا من مع 000001. قم بتتبع ملف فهرس سجل الترحيل لتحديد سجل الترحيل المستخدم حاليًا. يُسمى ملف فهرس سجل الترحيل الافتراضي host_name-relay-bin.index بشكل افتراضي، يتم إنشاء هذه الملفات في دليل بيانات الخادم التابع له نفس تنسيق السجل الثنائي ويمكن قراءته باستخدام mysqlbinlog. عندما ينفذ مؤشر ترابط SQL جميع الأحداث في سجل الترحيل، سيتم حذف سجل الترحيل تلقائيًا
من الخادم وسيتم إنشاء ملفي حالة إضافيين في دليل البيانات. --master.info وrelay-log.info يتم حفظ ملفات الحالة على القرص الصلب ولا يتم فقدانها عند إيقاف تشغيل الخادم التابع، في المرة التالية التي يبدأ فيها الخادم التابع، تتم قراءة هذه الملفات لتحديد عدد الثنائيات تمت قراءته من سجلات الخادم الرئيسي، ومدى تعاملهم مع سجلات الترحيل الخاصة بهم
لإعداد النسخ المتماثل للسيد والعبد:
1. تأكد من أن إصدار MySQL المثبت على الخادم الرئيسي والخادم التابع هو نفسه. ويفضل أن يكون أحدث إصدار ثابت من MySQL
على الخادم الرئيسي. يقوم النسخ المتماثل بإعداد حساب اتصال. يجب منح هذا الحساب إذن REPLICATION SLAVE إذا تم استخدام الحساب للنسخ المتماثل فقط (مستحسن)، فلا يلزم منح أي أذونات
أخرى منح النسخ المتماثل على *.*
-> إلى "النسخ المتماثل". @'%.yourdomain.com' المعرف بواسطة 'slavepass'؛
3. قم بتنفيذ جداول التدفق مع عبارة قفل القراءة لمسح كافة الجداول وحظر بيانات الكتابة:
mysql> FLUSH الجداول مع قفل القراءة؛
تمنع برنامج عميل mysql من الخروج.
Shell> cd /usr/local/mysql/
Shell> tar -cvf /tmp/mysql-snapshot.tar ./data
إذا كان حساب المستخدم الخاص بالخادم التابع مختلفًا عن حساب الخادم الرئيسي، فقد لا ترغب في نسخ الملف قاعدة بيانات ماي اس كيو ال. في هذه الحالة، يجب استبعاد قاعدة البيانات من الأرشيف. لا تحتاج أيضًا إلى تضمين أي ملفات سجل أو ملفات master.info أو ملفات Relay-log.info في الأرشيف.
عندما يكون قفل القراءة الذي تم تعيينه بواسطة FLUSH TABLES with READ LOCK صالحًا (أي أن برنامج عميل mysql لا يخرج)، اقرأ اسم السجل الثنائي الحالي وقيمة الإزاحة على الخادم الرئيسي:
mysql > SHOW MASTER STATUS
+---؛ --- ---------+-----------------+---------------------------------- --- ----+
|. موقف الملف |. Binlog_Do_DB |
.
--- ------+--
+----------------
|.mysql-bin.003 |.
--- -------+------------------------------------------------------------ --- --+
يعرض عمود الملف اسم السجل، ويعرض الموضع الإزاحة. في هذا المثال، قيمة السجل الثنائي هي mysql-bin.003 عند الإزاحة 73. سجل هذه القيمة. ستكون هذه القيم مطلوبة لاحقًا عند إعداد الخادم التابع. إنها تمثل إحداثيات النسخ المتماثل التي يجب أن يبدأ العبد منها التحديثات الجديدة من السيد.
إذا لم يتم تمكين --logs-bin أثناء تشغيل الخادم الرئيسي، فإن اسم السجل وقيم الموقع المعروضة بواسطة SHOW MASTER STATUS فارغة. في هذه الحالة، القيم التي يجب استخدامها عند تحديد ملف السجل وموقع الخادم التابع في المستقبل هي سلاسل فارغة ('') و4.
بعد التقاط اللقطة وتسجيل اسم السجل والإزاحة، ارجع إلى النهاية الوسطى السابقة وأعد تشغيل تمكين نشاط الكتابة:
mysql> UNLOCK TABLES؛
4. تأكد من أن القسم [mysqld] من ملف my.cnf على مضيف الخادم الرئيسي يتضمن خيار صندوق السجل. يجب أن يحتوي هذا القسم أيضًا على خيار server-id=Master_id، حيث يجب أن تكون master_id قيمة عدد صحيح موجب بين 1 و232–1. على سبيل المثال:
[mysqld]
log-bin
server-id=1
إذا لم يتم توفير هذه الخيارات، فيجب عليك إضافتها وإعادة تشغيل الخادم.
5. أوقف خدمة mysqld على الخادم التابع وأضف السطر التالي إلى ملف my.cnf الخاص به:
[mysqld]
server-id=2
قيمةslave_id هي نفس قيمة Master_id ويجب أن تكون عددًا صحيحًا موجبًا بين 1 و232 –1. كما يجب أن يكون معرف الخادم التابع مختلفًا عن معرف الخادم الرئيسي.
6. احفظ البيانات في دليل النسخ الاحتياطي. تأكد من صحة الأذونات على هذه الملفات والأدلة. يجب أن يكون المستخدم الذي يعمل عليه خادم MySQL قادرًا على قراءة الملفات وكتابتها، تمامًا كما هو الحال على الخادم الرئيسي.
Shell> chown -R mysql:mysql /usr/local/mysql/data
7. ابدأ تشغيل الخادم التابع. قم بتنفيذ العبارة التالية على الخادم التابع، مع استبدال قيم الخيارات بالقيم الفعلية لنظامك:
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
- > MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
8. ابدأ مؤشر ترابط الخادم التابع:
mysql> START SLAVE؛
بعد تنفيذ هذه الإجراءات، يجب أن يتصل الخادم التابع بالخادم الرئيسي ويكمل أيًا منها التحديثات التي حدثت منذ اللقطة.
9. في حالة حدوث خطأ في النسخ المتماثل، ستظهر رسالة خطأ أيضًا في سجل الأخطاء (HOSTNAME.err) الخاص بالخادم التابع.
10. عند النسخ من الخادم، سيتم العثور على الملفات master.info وHOSTNAME-relay-log.info في دليل البيانات الخاص به. يستخدم العبد هذين الملفين لتتبع مقدار السجل الثنائي للسيد الذي تمت معالجته. لا تقم بإزالة هذه الملفات أو تحريرها إلا إذا كنت تعرف بالضبط ما تفعله وتفهم أهميته تمامًا. ومع ذلك، فمن الأفضل استخدام العبارة CHANGE MASTER TO.