إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة كيفية إعداد النسخ المتماثل للبيانات في قاعدة بيانات Azure ل MySQL - خادم مرن في قاعدة بيانات Azure لخادم MySQL المرن عن طريق تكوين خوادم المصدر والنسخ المتماثلة. تفترض هذه المقالة أن لديك بعض الخبرة السابقة مع خوادم وقواعد بيانات MySQL.
إشعار
تحتوي هذه المقالة على مراجع لمصطلح slave، وهو مصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، بالتالي سنزيله من هذه المقالة.
لإنشاء نسخة متماثلة في قاعدة بيانات Azure لمثيل خادم MySQL المرن، قم بنسخ البيانات نسخا متماثلا إلى قاعدة بيانات Azure ل MySQL - يقوم الخادم المرن بمزامنة البيانات من خادم MySQL المصدر المحلي أو في الأجهزة الظاهرية (VMs) أو في خدمات قاعدة البيانات السحابية. يمكن تكوين النسخ المتماثل للبيانات باستخدام النسخ المتماثل المستند إلى موضع ملف السجل الثنائي (binlog) أو النسخ المتماثل المستند إلى GTID. لمعرفة المزيد حول النسخ المتماثل ل binlog، راجع النسخ المتماثل MySQL.
راجع قيود ومتطلبات النسخ المتماثل للبيانات قبل تنفيذ الخطوات الواردة في هذه المقالة.
إنشاء مثيل لخادم Azure Database for MySQL مرن لاستخدامه كنسخة متماثلة
أنشئ مثيلاً جديداً من خادم Azure Database for MySQL المرن (على سبيل المثال،
replica.mysql.database.azure.com). راجع التشغيل السريع: إنشاء مثيل لقاعدة بيانات Azure ل MySQL باستخدام مدخل Microsoft Azure لإنشاء الخادم. هذا الخادم هو خادم "النسخة المتماثلة" للنسخ المتماثل للبيانات.إنشاء نفس حسابات المستخدمين والامتيازات المقابلة.
لا يتم نسخ حسابات المستخدمين من الخادم المصدر إلى خادم النسخة المتماثلة. إذا كنت تخطط لتزويد المستخدمين بإمكانية الوصول إلى خادم النسخة المتماثلة، فأنت بحاجة إلى إنشاء جميع الحسابات والامتيازات المقابلة يدويا على مثيل Azure Database for MySQL Flexible Server الذي تم إنشاؤه حديثا.
تكوين خادم MySQL المصدر
تعمل الخطوات التالية بإعداد وتكوين خادم MySQL المستضاف محلياً أو في جهاز ظاهري أو خدمة قاعدة بيانات مستضافة من قبل موفري السحابة الآخرين للنسخ المتماثل للبيانات. هذا الخادم هو "المصدر" للنسخ المتماثل للبيانات.
راجع متطلبات الخادم المصدر قبل المتابعة.
متطلبات الشبكات
تأكد من أن الخادم المصدر يسمح بنسبة استخدام الشبكة الواردة والصادرة على المنفذ 3306، وأن لديه عنوان IP عامًا، أو أن DNS يمكن الوصول إليه بشكل عام، أو أن لديه اسم مجال مؤهل بالكامل (FQDN).
إذا كان الوصول الخاص (تكامل VNet) قيد الاستخدام، فتأكد من أن لديك اتصال بين الخادم المصدر والشبكة الظاهرية التي تتم استضافة خادم النسخة المتماثلة فيها.
تأكد من أننا نقدم اتصالاً من موقع إلى موقع من خلال خوادم المصدر المحلية الخاصة بك باستخدام إما ExpressRoute أو VPN. لمزيد من المعلومات حول إنشاء شبكة افتراضية، راجع Virtual Network Documentationوخاصة مقالات التشغيل السريع التي تحتوي على التفاصيل خطوة بخطوة.
إذا تم استخدام الوصول الخاص (تكامل VNet) في خادم النسخ المتماثلة وكان مصدرك هو Azure VM تأكد من إنشاء اتصال VNet إلى VNet. يتم دعم اقتران الاتصال من شبكة ظاهرية إلى شبكة ظاهرية. كما يمكنك استخدام أساليب اتصال أخرى للاتصال بين الشبكات الظاهرية عبر مناطق مختلفة مثل اتصال من شبكة ظاهرية إلى شبكة ظاهرية. لمزيد من المعلومات، اطلع على بوابة اتصال VPN من شبكة ظاهرية إلى شبكة ظاهرية
تأكد من أن قواعد مجموعة أمان الشبكة للشبكة الظاهرية لا تحظر المنفذ الصادر 3306 (والمنفذ الوارد أيضاً إذا كان MySQL يعمل على جهاز Azure الظاهري). لمزيد من التفاصيل عن تصفية نسبة استخدام الشبكة للشبكة الظاهرية الخاصة بمجموعة أمان الشبكة (NSG)، راجع مقالتصفية نسبة استخدام الشبكة باستخدام مجموعات أمان الشبكة.
قم بتكوين قواعد جدار الحماية للخادم المصدر للسماح بعنوان IP لخادم النسخة المتماثلة.
اتبع الخطوات المناسبة استنادا إلى ما إذا كنت تريد استخدام موضع سجل الحاوية أو النسخ المتماثل للبيانات المستندة إلى GTID.
تحقق لمعرفة ما إذا تم تمكين التسجيل الثنائي على المصدر عن طريق تشغيل الأمر التالي:
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 Database for MySQL المرن.SET GLOBAL lower_case_table_names = 1;إنشاء دور نسخ متماثل جديد وإعداد الإذن.
إنشاء حساب مستخدم على الخادم المصدر الذي تم تكوينه بامتيازات النسخ المتماثل. يمكن القيام بذلك من خلال أوامر SQL أو أداة مثل MySQL Workbench. ضع في اعتبارك ما إذا كنت تخطط للنسخ المتماثل باستخدام SSL، حيث ستحتاج إلى تحديد هذا عند إنشاء المستخدم. راجع وثائق MySQL لفهم كيفية إضافة حسابات المستخدمين على الخادم المصدر.
في الأوامر التالية، يمكن لدور النسخ المتماثل الجديد الذي تم إنشاؤه الوصول إلى المصدر من أي جهاز، وليس فقط الجهاز الذي يستضيف المصدر نفسه. يتم ذلك عن طريق تحديد "syncuser@'%'" في الأمر إنشاء مستخدم. راجع وثائق MySQL لمعرفة المزيد حول تحديد أسماء الحسابات.
النسخ المتماثل باستخدام SSL
لطلب SSL لكافة اتصالات المستخدم، استخدم الأمر التالي لإنشاء مستخدم:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword' REQUIRE SSL; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';النسخ المتماثل بدون SSL
إذا لم يكن SSL مطلوبًا لجميع الاتصالات، فاستخدم الأمر التالي لإنشاء مستخدم:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';تعيين الخادم المصدر إلى وضع القراءة فقط.
قبل البدء في تفريغ قاعدة البيانات، يجب وضع الخادم في وضع القراءة فقط. في أثناء وجوده في وضع القراءة فقط، لن يتمكن المصدر من معالجة أي معاملات كتابة. قم بتقييم التأثير على عملك وجدولة نافذة القراءة فقط في وقت خارج أوقات الذروة إذا لزم الأمر.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;الحصول على اسم ملف السجل الثنائي والإزاحة.
قم بتشغيل الأمر
show master statusلتحديد اسم ملف السجل الثنائي الحالي والإزاحة.show master status;ينبغي أن تبدو النتائج مشابهة للتالي. تأكد من ملاحظة اسم الملف الثنائي لاستخدامه في الخطوات اللاحقة.
تفريغ واستعادة الخادم المصدر
حدد قواعد البيانات والجداول التي تريد نسخها إلى خادم Azure Database for MySQL المرن وقم بإجراء التفريغ من الخادم المصدر.
يمكنك استخدام mysqldump لتفريغ قواعد البيانات من الخادم الأساسي. للحصول على التفاصيل، راجع التفريغ والاستعادة. من غير الضروري تفريغ مكتبة MySQL ومكتبة الاختبار.
تعيين الخادم المصدر إلى وضع القراءة/الكتابة.
بعد تفريغ قاعدة البيانات، قم بتغيير خادم MySQL المصدر مرة أخرى إلى وضع القراءة/الكتابة.
SET GLOBAL read_only = OFF; UNLOCK TABLES;إشعار
قبل تعيين الخادم مرة أخرى إلى وضع القراءة/الكتابة، يمكنك استرداد معلومات GTID باستخدام المتغير العمومي GTID_EXECUTED. سيتم استخدام هذا في المرحلة اللاحقة لتعيين GTID على خادم النسخة المتماثلة.
استعادة ملف تفريغ إلى خادم جديد.
استعادة ملف التفريغ إلى الخادم الذي تم إنشاؤه في قاعدة بيانات Azure لخادم MySQL المرن. راجع التفريغ والاستعادة لمعرفة كيفية استعادة ملف تفريغ إلى خادم MySQL. إذا كان ملف التفريغ كبيرًا، فقم بتحميله إلى جهاز ظاهري في Azure داخل نفس المنطقة مثل خادم النسخة المتماثلة. قم باستعادة إلى قاعدة بيانات Azure لمثيل خادم MySQL المرن من الجهاز الظاهري.
إشعار
إذا كنت ترغب في تجنب تعيين قاعدة البيانات للقراءة فقط عند التفريغ والاستعادة، يمكنك استخدام mydumper/myloader.
تعيين GTID في خادم النسخة المتماثلة
تخطي الخطوة إذا كنت تستخدم النسخ المتماثل المستند إلى موضع سجل الحاوية
مطلوب معلومات GTID من ملف التفريغ المأخوذ من المصدر لإعادة تعيين محفوظات GTID لخادم الهدف (النسخة المتماثلة).
استخدم معلومات GTID هذه من المصدر لتنفيذ إعادة تعيين GTID على خادم النسخة المتماثلة باستخدام أمر CLI التالي:
az mysql flexible-server gtid reset --resource-group <resource group> --server-name <replica server name> --gtid-set <gtid set from the source server> --subscription <subscription id>
لمزيد من التفاصيل، راجع إعادة تعيين GTID.
إشعار
لا يمكن إجراء إعادة تعيين GTID على خادم ممكن عليه النسخ الاحتياطي للتكرار الجغرافي. يرجى تعطيل التكرار الجغرافي لإجراء إعادة تعيين GTID على الخادم. يمكنك تمكين خيار التكرار الجغرافي مرة أخرى بعد إعادة تعيين GTID. يؤدي إجراء إعادة تعيين GTID إلى إبطال جميع النسخ الاحتياطية المتوفرة، وبالتالي، بمجرد تمكين التكرار الجغرافي مرة أخرى، قد يستغرق الأمر يوما قبل إجراء الاستعادة الجغرافية على الخادم
ربط خوادم المصدر والنسخ المتماثلة لبدء النسخ المتماثل للبيانات
تعيين الخادم المصدر.
تتم جميع وظائف النسخ المتماثل للبيانات بواسطة الإجراءات المخزنة. يمكنك العثور على جميع الإجراءات في إجراءات النسخ المتماثل للبيانات المخزنة. الإجراءات المخزنة في MySQL shell أو MySQL Workbench.
لربط خادمين وبدء النسخ المتماثل، قم بتسجيل الدخول إلى خادم النسخة المتماثلة الهدف في خدمة Azure Database for MySQL وتعيين المثيل الخارجي كخادم المصدر. يتم ذلك باستخدام
mysql.az_replication_change_masterالإجراء أوmysql.az_replication_change_master_with_gtidالمخزن على قاعدة بيانات Azure لخادم MySQL.CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', <master_port>,'<master_ssl_ca>');- master_host: اسم مضيف الخادم المصدر
- master_user: اسم المستخدم للخادم المصدر
- master_password: كلمة المرور للخادم المصدر
- master_port: رقم المنفذ الذي يستمع إليه الخادم المصدر للاتصالات. (3306 هو المنفذ الافتراضي الذي يستمع إليه MySQL)
- master_log_file: اسم ملف السجل الثنائي من
show master statusالجاري - master_log_pos: موضع السجل الثنائي من
show master statusالجاري - master_ssl_ca: سياق شهادة CA. إذا لم تكن تستخدم SSL، فضع سلسلة فارغة.
يوصى بتمرير هذه المعلمة كمتغير. لمزيد من المعلومات، تفضل بزيارة الأمثلة التالية.
إشعار
- إذا كان الخادم المصدر مستضافا في Azure VM، فقم بتعيين "السماح بالوصول إلى خدمات Azure" إلى "ON" للسماح لخوادم المصدر والنسخ المتماثلة بالاتصال ببعضها البعض. يمكن تغيير هذا الإعداد من خيارات أمان الاتصال. لمزيد من المعلومات، راجع إدارة قواعد جدار الحماية لقاعدة بيانات Azure ل MySQL - الخادم المرن باستخدام مدخل Microsoft 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 Database for MySQL المرن. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, @cert);النسخ المتماثل بدون SSL
يتم إعداد النسخ المتماثل بدون استخدام SSL بين خادم مصدر مستضاف في المجال "companya.com" وخادم نسخة متماثلة مستضاف في خادم Azure Database for MySQL المرن. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, '');بدء النسخ المتماثل.
استدعاء الإجراء
mysql.az_replication_startالمخزن لبدء النسخ المتماثل.CALL mysql.az_replication_start;تحقق من حالة النسخ المتماثل.
استدعاء الأمر
show slave statusعلى خادم النسخة المتماثلة لعرض حالة النسخ المتماثل.show slave status;لمعرفة الحالة الصحيحة للنسخ المتماثل، راجع مقاييس النسخ المتماثل - حالة النسخ المتماثل IO وحالة SQL النسخة المتماثلة ضمن صفحة المراقبة.
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]