كيفية تكوين قاعدة بيانات Azure للنسخ المتماثل لبيانات الخادم المرن MySQL
[ينطبق على:
قاعدة بيانات Azure ل MySQL - خادم مرن
توضح هذه المقالة كيفية إعداد النسخ المتماثل للبيانات في قاعدة بيانات Azure ل MySQL Flexible Server عن طريق تكوين ملقمات المصدر والنسخ المتماثلة. تفترض هذه المقالة أن لديك بعض الخبرة السابقة مع خوادم MySQL وقواعد البيانات.
ملاحظة
تحتوي هذه المقالة على مراجع لمصطلح slave، هو مصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، سنزيله من هذه المقالة.
لإنشاء نسخة متماثلة في قاعدة بيانات Azure لخدمة MySQL المرنة، يقوم النسخ المتماثل للبيانات في مزامنة البيانات من خادم MySQL مصدر محليا أو في الأجهزة الظاهرية (VMs) أو في خدمات قاعدة البيانات السحابية. يعتمد النسخ المتماثل للبيانات على التقنية المستند إلى موضع الملف ثنائي السجل (binlog). لمعرفة المزيد حول النسخ المتماثل ل binlog، راجع نظرة عامة على النسخ المتماثل ل MySQL binlog.
راجع قيود ومتطلبات النسخ المتماثل للبيانات قبل تنفيذ الخطوات الواردة في هذه المقالة.
إنشاء قاعدة بيانات Azure لمثيل MySQL Flexible Server لاستخدامه كنسخة متماثلة
إنشاء مثيل جديد من قاعدة بيانات Azure لخادم MySQL المرن (على سبيل المثال،
replica.mysql.database.azure.com). راجع إنشاء قاعدة بيانات Azure لخادم MySQL Flexible Server باستخدام مدخل Azure لإنشاء الخادم . هذا الخادم هو خادم "النسخ المتماثلة" للنسخ المتماثل للبيانات في البيانات.إنشاء نفس حسابات المستخدمين والامتيازات المقابلة.
لا يتم نسخ حسابات المستخدمين من الخادم المصدر إلى خادم النسخ المتماثلة. إذا كنت تخطط لتزويد المستخدمين بإمكانية الوصول إلى خادم النسخ المتماثلة، فستحتاج إلى إنشاء كافة الحسابات والامتيازات المقابلة يدويا على قاعدة بيانات Azure التي تم إنشاؤها حديثا ل MySQL Flexible Server.
تكوين خادم MySQL المصدر
تقوم الخطوات التالية بإعداد وتكوين خادم MySQL المستضاف محليا أو في جهاز ظاهري أو خدمة قاعدة بيانات يستضيفها موفرو مجموعة النظراء الآخرون للنسخ المتماثل للبيانات في البيانات. هذا الخادم هو "المصدر" للنسخ المتماثل للبيانات في البيانات.
راجع متطلبات الخادم المصدر قبل المتابعة.
متطلبات الشبكات
تأكد من أن الخادم المصدر يسمح بحركة المرور الواردة والصادرة على المنفذ 3306، وأن لديه عنوان IP عام، أو أن DNS يمكن الوصول إليه بشكل عام، أو أن لديه اسم مجال مؤهل بالكامل (FQDN).
إذا كان الوصول الخاص قيد الاستخدام، فتأكد من أن لديك اتصال بين خادم المصدر و Vnet الذي يتم فيه استضافة خادم النسخ المتماثلة.
تأكد من أننا نوفر اتصالا من موقع إلى موقع بخوادم المصدر المحلية الخاصة بك باستخدام ExpressRoute أو VPN. لمزيد من المعلومات حول إنشاء شبكة اتصال ظاهرية، راجع «Virtual Network Documentation»وخاصة مقالات quickstart التي تحتوي على التفاصيل خطوة بخطوة.
إذا تم استخدام الوصول الخاص في خادم النسخ المتماثلة وكان مصدرك Azure VM تأكد من إنشاء اتصال VNet ب VNet. يتم دعم VNet-Vnet النظراء. يمكنك أيضا استخدام طرق اتصال أخرى للتواصل بين VNets عبر مناطق مختلفة مثل VNet إلى VNet Connection. لمزيد من المعلومات التي يمكنك الحصول عليها، راجع بوابة VPN من VNet إلى VNet
تأكد من أن قواعد مجموعة أمان الشبكة الظاهرية لا تحظر المنفذ الصادر 3306 (أيضا الوارد إذا كان MySQL قيد التشغيل على Azure VM). لمزيد من التفاصيل حول تصفية حركة مرور NSG للشبكة الظاهرية، راجع مقالة تصفية حركة مرور الشبكة مع مجموعات أمان الشبكة.
قم بتكوين قواعد جدار الحماية الخاصة بالخادم المصدر للسماح بعنوان IP للخادم المتماثل.
قم بتشغيل التسجيل الثنائي.
تحقق لمعرفة ما إذا كان قد تم تمكين التسجيل الثنائي على المصدر عن طريق تشغيل الأمر التالي:
SHOW VARIABLES LIKE 'log_bin';إذا تم إرجاع المتغير
log_binبالقيمة ON ، تمكين التسجيل الثنائي على الخادم الخاص بك.إذا
log_binتم إرجاعه بقيمة "OFF" وكان الخادم المصدر يعمل محليا أو على أجهزة ظاهرية حيث يمكنك الوصول إلى ملف التكوين (my.cnf)، فيمكنك اتباع الخطوات التالية:حدد موقع ملف تكوين MySQL (my.cnf) في الخادم المصدر. على سبيل المثال: /etc/my.cnf
افتح ملف التكوين لتحريره وتحديد موقع قسم mysqld في الملف.
في المقطع mysqld، أضف السطر التالي:
log-bin=mysql-bin.logأعد تشغيل خدمة MySQL على الخادم المصدر (أو إعادة التشغيل) لتصبح التغييرات سارية المفعول.
بعد إعادة تشغيل الخادم، تحقق من تمكين التسجيل الثنائي عن طريق تشغيل نفس الاستعلام كما كان من قبل:
SHOW VARIABLES LIKE 'log_bin';
تكوين إعدادات الخادم المصدر.
يتطلب النسخ المتماثل للبيانات أن تكون المعلمة
lower_case_table_namesمتسقة بين خوادم المصدر والنسخ المتماثلة. هذه المعلمة هي 1 بشكل افتراضي في قاعدة بيانات Azure ل MySQL Flexible Server.SET GLOBAL lower_case_table_names = 1;إنشاء دور نسخ متماثل جديد وإعداد إذن.
إنشاء حساب مستخدم على الخادم المصدر الذي تم تكوينه مع امتيازات النسخ المتماثل. يمكن القيام بذلك من خلال أوامر SQL أو أداة مثل MySQL Workbench. ضع في اعتبارك ما إذا كنت تخطط للتكرار باستخدام طبقة المقابس الآمنة (SSL) ، حيث ستحتاج إلى تحديد ذلك عند إنشاء المستخدم. ارجع إلى وثائق MySQL لفهم كيفية إضافة حسابات المستخدمين على الخادم المصدر.
في الأوامر التالية، يمكن لدور النسخ المتماثل الجديد الذي تم إنشاؤه الوصول إلى المصدر من أي جهاز، وليس فقط الجهاز الذي يستضيف المصدر نفسه. يتم ذلك عن طريق تحديد "syncuser@'٪'" في الأمر إنشاء مستخدم. راجع وثائق MySQL لمعرفة المزيد حول تحديد أسماء الحسابات.
أمر SQL
النسخ المتماثل باستخدام طبقة المقابس الآمنة (SSL)
لطلب طبقة المقابس الآمنة لكافة اتصالات المستخدم، استخدم الأمر التالي لإنشاء مستخدم:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;النسخ المتماثل بدون طبقة المقابس الآمنة (SSL)
إذا لم تكن طبقة المقابس الآمنة مطلوبة لجميع الاتصالات، فاستخدم الأمر التالي لإنشاء مستخدم:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';MySQL Workbench
لإنشاء دور النسخ المتماثل في MySQL Workbench، افتح لوحة المستخدمون والامتيازات من لوحة الإدارة ، ثم حدد إضافة حساب.
اكتب اسم المستخدم في حقل اسم تسجيل الدخول .
حدد لوحة الأدوار الإدارية ثم حدد النسخ المتماثل التابع من قائمة الامتيازات العمومية. ثم حدد تطبيق لإنشاء دور النسخ المتماثل.
اضبط الخادم المصدر على وضع القراءة فقط.
قبل البدء في تفريغ قاعدة البيانات ، يجب وضع الخادم في وضع القراءة فقط. أثناء وجودك في وضع القراءة فقط، لن يتمكن المصدر من معالجة أي معاملات كتابة. قم بتقييم التأثير على عملك وجدولة نافذة القراءة فقط في وقت خارج أوقات الذروة إذا لزم الأمر.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;الحصول على اسم ملف السجل الثنائي والإزاحة.
show master statusقم بتشغيل الأمر لتحديد اسم ملف السجل الثنائي الحالي والإزاحة.show master status;يجب أن تظهر النتائج مشابهة لما يلي. تأكد من ملاحظة اسم الملف الثنائي للاستخدام في الخطوات اللاحقة.
تفريغ الخادم المصدر واستعادته
حدد قواعد البيانات والجداول التي تريد نسخها إلى قاعدة بيانات Azure ل MySQL Flexible Server وقم بإجراء التفريغ من الخادم المصدر.
يمكنك استخدام mysqldump لتفريغ قواعد البيانات من الخادم الأساسي الخاص بك. للحصول على التفاصيل، راجع استعادة التفريغ&. من غير الضروري تفريغ مكتبة MySQL ومكتبة الاختبار.
اضبط الخادم المصدر على وضع القراءة/الكتابة.
بعد تفريغ قاعدة البيانات، قم بتغيير خادم MySQL المصدر مرة أخرى إلى وضع القراءة/الكتابة.
SET GLOBAL read_only = OFF; UNLOCK TABLES;استعادة ملف التفريغ إلى خادم جديد.
استعادة ملف التفريغ إلى الخادم الذي تم إنشاؤه في قاعدة بيانات Azure لخدمة MySQL Flexible Server. راجع "استعادة تفريغ" & لمعرفة كيفية استعادة ملف تفريغ إلى خادم MySQL. إذا كان ملف التفريغ كبيرا، فقم بتحميله إلى جهاز ظاهري في Azure داخل نفس المنطقة مثل خادم النسخ المتماثلة. استعادته إلى قاعدة بيانات Azure لخادم MySQL المرن من الجهاز الظاهري.
ملاحظة
- إذا كنت ترغب في تجنب إعداد قاعدة البيانات للقراءة فقط عند التفريغ والاستعادة، يمكنك استخدام mydumper/myloader.
ربط خوادم المصدر والنسخ المتماثلة لبدء النسخ المتماثل للبيانات
قم بتعيين الخادم المصدر.
تتم جميع وظائف النسخ المتماثل للبيانات عن طريق الإجراءات المخزنة. يمكنك العثور على جميع الإجراءات في الإجراءات المخزنة للنسخ المتماثل للبيانات. يمكن تشغيل الإجراءات المخزنة في غلاف MySQL أو MySQL Workbench.
لربط خادمين وبدء النسخ المتماثل، قم بتسجيل الدخول إلى خادم النسخ المتماثل الهدف في خدمة Azure DB for MySQL وقم بتعيين المثيل الخارجي كخادم مصدر. يتم ذلك باستخدام الإجراء المخزن
mysql.az_replication_change_masterعلى Azure DB لخادم MySQL.CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');master_host: اسم مضيف الخادم المصدر
master_user: اسم المستخدم للخادم المصدر
master_password: كلمة المرور للخادم المصدر
master_port: رقم المنفذ الذي يستمع إليه الخادم المصدر للاتصالات. (3306 هو المنفذ الافتراضي الذي يستمع إليه MySQL)
master_log_file: اسم ملف السجل الثنائي من التشغيل
show master statusmaster_log_pos: موقف سجل ثنائي من تشغيل
show master statusmaster_ssl_ca: سياق شهادة CA. إذا لم تكن تستخدم SSL ، فقم بتمريرها في سلسلة فارغة.
يوصى بتمرير هذه المعلمة كمتغير. لمزيد من المعلومات، يرجى مراجعة الأمثلة التالية.
ملاحظة
- إذا تمت استضافة الخادم المصدر في جهاز ظاهري Azure، فقم بتعيين "السماح بالوصول إلى خدمات Azure" إلى "تشغيل" للسماح للخوادم المصدر والنسخ المتماثلة بالاتصال ببعضها البعض. يمكن تغيير هذا الإعداد من خيارات أمان الاتصال . لمزيد من المعلومات، راجع إدارة قواعد جدار الحماية باستخدام البوابة الإلكترونية.
- إذا كنت تستخدم mydumper / myloader لتفريغ قاعدة البيانات ، فيمكنك الحصول على master_log_file master_log_pos من ملف / backup / metadata .
أمثلة
النسخ المتماثل باستخدام طبقة المقابس الآمنة (SSL)
يتم إنشاء المتغير
@certعن طريق تشغيل أوامر MySQL التالية:SET @cert = '-----BEGIN CERTIFICATE----- PLACE YOUR PUBLIC KEY CERTIFICATE'`S CONTEXT HERE -----END CERTIFICATE-----'يتم إعداد النسخ المتماثل باستخدام طبقة المقابس الآمنة (SSL) بين خادم مصدر مستضاف في المجال "companya.com" وخادم نسخة متماثلة مستضاف في قاعدة بيانات Azure ل MySQL Flexible Server. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);النسخ المتماثل بدون طبقة المقابس الآمنة (SSL)
يتم إعداد النسخ المتماثل بدون طبقة المقابس الآمنة (SSL) بين خادم مصدر مستضاف في المجال "companya.com" وخادم نسخة متماثلة مستضاف في قاعدة بيانات Azure ل MySQL Flexible Server. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');بدء النسخ المتماثل.
استدعاء الإجراء المخزن لبدء النسخ المتماثل
mysql.az_replication_start.CALL mysql.az_replication_start;تحقق من حالة النسخ المتماثل.
استدعاء الأمر على
show slave statusخادم النسخ المتماثلة لعرض حالة النسخ المتماثل.show slave status;إذا كانت حالة
Slave_IO_RunningوSlave_SQL_Running"نعم" وقيمةSeconds_Behind_Masterهي "0" ، فإن النسخ المتماثل يعمل بشكل جيد.Seconds_Behind_Masterيشير إلى مدى تأخر النسخة المتماثلة. إذا لم تكن القيمة "0"، فهذا يعني أن النسخة المتماثلة تقوم بمعالجة التحديثات.
إجراءات مخزنة مفيدة أخرى لعمليات النسخ المتماثل للبيانات
إيقاف النسخ المتماثل
لإيقاف النسخ المتماثل بين المصدر وخادم النسخ المتماثلة، استخدم الإجراء المخزن التالي:
CALL mysql.az_replication_stop;
إزالة علاقة النسخ المتماثل
لإزالة العلاقة بين المصدر وخادم النسخ المتماثلة، استخدم الإجراء المخزن التالي:
CALL mysql.az_replication_remove_master;
تخطي خطأ النسخ المتماثل
لتخطي خطأ النسخ المتماثل والسماح باستمرار النسخ المتماثل، استخدم الإجراء المخزن التالي:
CALL mysql.az_replication_skip_counter;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]
الخطوات التالية
- تعرف على المزيد حول النسخ المتماثل للبيانات في قاعدة بيانات Azure ل MySQL Flexible Server.