كيفية تكوين قاعدة بيانات Azure ل MySQL - النسخ المتماثل لبيانات الخادم المرن

ينطبق على: قاعدة بيانات Azure ل MySQL - خادم مرن

توضح هذه المقالة كيفية إعداد النسخ المتماثل للبيانات في قاعدة بيانات Azure لخادم MySQL المرن عن طريق تكوين خوادم المصدر والنسخ المتماثلة. تفترض هذه المقالة أن لديك بعض الخبرة السابقة مع خوادم وقواعد بيانات MySQL.

إشعار

تحتوي هذه المقالة على مراجع لمصطلح slave، وهو مصطلح لم تعد Microsoft تستخدمه. عند إزالة المصطلح من البرنامج، بالتالي سنزيله من هذه المقالة.

لإنشاء نسخة متماثلة في قاعدة بيانات Azure لمثيل خادم MySQL المرن، يقوم النسخ المتماثل للبيانات بمزامنة البيانات من خادم MySQL المصدر المحلي، أو في الأجهزة الظاهرية (VMs)، أو في خدمات قاعدة البيانات السحابية. يمكن تكوين النسخ المتماثل للبيانات باستخدام النسخ المتماثل المستند إلى موضع ملف السجل الثنائي (binlog) أو النسخ المتماثل المستند إلى GTID. لمعرفة المزيد حول النسخ المتماثل ل binlog، راجع النسخ المتماثل MySQL.

راجع قيود ومتطلبات النسخ المتماثل للبيانات قبل تنفيذ الخطوات الواردة في هذه المقالة.

إنشاء مثيل خادم مرن ل Azure Database for MySQL لاستخدامه كنسخة متماثلة

  1. إنشاء مثيل جديد لقاعدة بيانات Azure لخادم MySQL المرن (على سبيل المثال، replica.mysql.database.azure.com). راجع إنشاء مثيل خادم مرن لقاعدة بيانات Azure ل MySQL باستخدام مدخل Microsoft Azure لإنشاء الخادم. هذا الخادم هو خادم "النسخة المتماثلة" للنسخ المتماثل للبيانات.

  2. إنشاء نفس حسابات المستخدمين والامتيازات المقابلة.

    لا يتم نسخ حسابات المستخدمين من الخادم المصدر إلى خادم النسخة المتماثلة. إذا كنت تخطط لتزويد المستخدمين بالوصول إلى خادم النسخة المتماثلة، فأنت بحاجة إلى إنشاء جميع الحسابات والامتيازات المقابلة يدويا على مثيل خادم Azure Database for MySQL المرن الذي تم إنشاؤه حديثا.

تكوين خادم MySQL المصدر

تعمل الخطوات التالية بإعداد وتكوين خادم MySQL المستضاف محلياً أو في جهاز ظاهري أو خدمة قاعدة بيانات مستضافة من قبل موفري السحابة الآخرين للنسخ المتماثل للبيانات. هذا الخادم هو "المصدر" للنسخ المتماثل للبيانات.

  1. راجع متطلبات الخادم المصدر قبل المتابعة.

  2. متطلبات الشبكات

    • تأكد من أن الخادم المصدر يسمح بنسبة استخدام الشبكة الواردة والصادرة على المنفذ 3306، وأن لديه عنوان IP عامًا، أو أن DNS يمكن الوصول إليه بشكل عام، أو أن لديه اسم مجال مؤهل بالكامل (FQDN).

    • إذا كان الوصول الخاص (تكامل VNet) قيد الاستخدام، فتأكد من أن لديك اتصال بين الخادم المصدر والشبكة الظاهرية التي تتم استضافة خادم النسخة المتماثلة فيها.

    • تأكد من أننا نقدم اتصالاً من موقع إلى موقع من خلال خوادم المصدر المحلية الخاصة بك باستخدام إما ExpressRoute أو VPN. لمزيد من المعلومات حول إنشاء شبكة افتراضية، راجع Virtual Network Documentationوخاصة مقالات التشغيل السريع التي تحتوي على التفاصيل خطوة بخطوة.

    • إذا تم استخدام الوصول الخاص (تكامل VNet) في خادم النسخ المتماثلة وكان مصدرك هو Azure VM تأكد من إنشاء اتصال VNet إلى VNet. يتم دعم اقتران الاتصال من شبكة ظاهرية إلى شبكة ظاهرية. كما يمكنك استخدام أساليب اتصال أخرى للاتصال بين الشبكات الظاهرية عبر مناطق مختلفة مثل اتصال من شبكة ظاهرية إلى شبكة ظاهرية. لمزيد من المعلومات، اطلع على بوابة اتصال VPN من شبكة ظاهرية إلى شبكة ظاهرية

    • تأكد من أن قواعد مجموعة أمان الشبكة للشبكة الظاهرية لا تحظر المنفذ الصادر 3306 (والمنفذ الوارد أيضاً إذا كان MySQL يعمل على جهاز Azure الظاهري). لمزيد من التفاصيل عن تصفية نسبة استخدام الشبكة للشبكة الظاهرية الخاصة بمجموعة أمان الشبكة (NSG)، راجع مقالتصفية نسبة استخدام الشبكة باستخدام مجموعات أمان الشبكة.

    • قم بتكوين قواعد جدار الحماية للخادم المصدر للسماح بعنوان IP لخادم النسخة المتماثلة.

  3. اتبع الخطوات المناسبة استنادا إلى ما إذا كنت تريد استخدام موضع سجل الحاوية أو النسخ المتماثل للبيانات المستندة إلى GTID.

    تحقق لمعرفة ما إذا تم تمكين التسجيل الثنائي على المصدر عن طريق تشغيل الأمر التالي:

    SHOW VARIABLES LIKE 'log_bin';
    

    إذا تم إرجاع المتغير log_bin بالقيمة "ON"، يتم تمكين التسجيل الثنائي على الخادم الخاص بك.

    إذا log_bin تم إرجاع القيمة "OFF" وكان الخادم المصدر الخاص بك يعمل محليا أو على الأجهزة الظاهرية حيث يمكنك الوصول إلى ملف التكوين (my.cnf)، يمكنك اتباع الخطوات التالية:

    1. حدد موقع ملف تكوين MySQL (my.cnf) في الخادم المصدر. على سبيل المثال: /etc/my.cnf

    2. افتح ملف التكوين لتحريره وحدد موقع قسم mysqld في الملف.

    3. في قسم mysqld، أضف السطر التالي:

      log-bin=mysql-bin.log
      
    4. أعد تشغيل خدمة MySQL على الخادم المصدر (أو إعادة التشغيل) لتصبح التغييرات سارية المفعول.

    5. بعد إعادة تشغيل الخادم، تحقق من تمكين التسجيل الثنائي عن طريق تشغيل نفس الاستعلام كما كان من قبل:

      SHOW VARIABLES LIKE 'log_bin';
      
  4. تكوين إعدادات الخادم المصدر.

    يتطلب النسخ المتماثل للبيانات أن تكون المعلمة lower_case_table_names متسقة بين خوادم المصدر والنسخ المتماثلة. هذه المعلمة هي 1 بشكل افتراضي في قاعدة بيانات Azure لخادم MySQL المرن.

    SET GLOBAL lower_case_table_names = 1;
    
  5. إنشاء دور نسخ متماثل جديد وإعداد الإذن.

    إنشاء حساب مستخدم على الخادم المصدر الذي تم تكوينه بامتيازات النسخ المتماثل. يمكن القيام بذلك من خلال أوامر SQL أو أداة مثل MySQL Workbench. ضع في اعتبارك ما إذا كنت تخطط للنسخ المتماثل باستخدام SSL، حيث ستحتاج إلى تحديد هذا عند إنشاء المستخدم. راجع وثائق MySQL لفهم كيفية إضافة حسابات المستخدمين على الخادم المصدر.

    في الأوامر التالية، يمكن لدور النسخ المتماثل الجديد الذي تم إنشاؤه الوصول إلى المصدر من أي جهاز، وليس فقط الجهاز الذي يستضيف المصدر نفسه. يتم ذلك عن طريق تحديد "syncuser@'%'" في الأمر إنشاء مستخدم. راجع وثائق MySQL لمعرفة المزيد حول تحديد أسماء الحسابات.

    النسخ المتماثل باستخدام SSL

    لطلب SSL لكافة اتصالات المستخدم، استخدم الأمر التالي لإنشاء مستخدم:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
    

    النسخ المتماثل بدون SSL

    إذا لم يكن SSL مطلوبًا لجميع الاتصالات، فاستخدم الأمر التالي لإنشاء مستخدم:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    
  6. تعيين الخادم المصدر إلى وضع القراءة فقط.

    قبل البدء في تفريغ قاعدة البيانات، يجب وضع الخادم في وضع القراءة فقط. في أثناء وجوده في وضع القراءة فقط، لن يتمكن المصدر من معالجة أي معاملات كتابة. قم بتقييم التأثير على عملك وجدولة نافذة القراءة فقط في وقت خارج أوقات الذروة إذا لزم الأمر.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. الحصول على اسم ملف السجل الثنائي والإزاحة.

    قم بتشغيل الأمر show master status لتحديد اسم ملف السجل الثنائي الحالي والإزاحة.

    show master status;
    

    ينبغي أن تبدو النتائج مشابهة للتالي. تأكد من ملاحظة اسم الملف الثنائي لاستخدامه في الخطوات اللاحقة.

    نتائج الحالة الرئيسية


تفريغ واستعادة الخادم المصدر

  1. حدد قواعد البيانات والجداول التي تريد نسخها نسخا متماثلا إلى خادم Azure Database for MySQL المرن وقم بإجراء تفريغ من الخادم المصدر.

    يمكنك استخدام mysqldump لتفريغ قواعد البيانات من الخادم الأساسي. للحصول على التفاصيل، راجع التفريغ والاستعادة. من غير الضروري تفريغ مكتبة MySQL ومكتبة الاختبار.

  2. تعيين الخادم المصدر إلى وضع القراءة/الكتابة.

    بعد تفريغ قاعدة البيانات، قم بتغيير خادم MySQL المصدر مرة أخرى إلى وضع القراءة/الكتابة.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    

    إشعار

    قبل تعيين الخادم مرة أخرى إلى وضع القراءة/الكتابة، يمكنك استرداد معلومات GTID باستخدام المتغير العمومي GTID_EXECUTED. سيتم استخدام هذا في المرحلة اللاحقة لتعيين GTID على خادم النسخة المتماثلة.

  3. استعادة ملف تفريغ إلى خادم جديد.

    استعادة ملف التفريغ إلى الخادم الذي تم إنشاؤه في قاعدة بيانات Azure لخادم MySQL المرن. راجع التفريغ والاستعادة لمعرفة كيفية استعادة ملف تفريغ إلى خادم MySQL. إذا كان ملف التفريغ كبيرًا، فقم بتحميله إلى جهاز ظاهري في Azure داخل نفس المنطقة مثل خادم النسخة المتماثلة. قم باستعادة إلى مثيل خادم Azure Database for MySQL المرن من الجهاز الظاهري.

إشعار

إذا كنت ترغب في تجنب تعيين قاعدة البيانات للقراءة فقط عند التفريغ والاستعادة، يمكنك استخدام mydumper/myloader.

تعيين GTID في خادم النسخة المتماثلة

  1. تخطي الخطوة إذا كنت تستخدم النسخ المتماثل المستند إلى موضع سجل الحاوية

  2. مطلوب معلومات GTID من ملف التفريغ المأخوذ من المصدر لإعادة تعيين محفوظات GTID لخادم الهدف (النسخة المتماثلة).

  3. استخدم معلومات 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 إلى إبطال جميع النسخ الاحتياطية المتوفرة، وبالتالي، بمجرد تمكين التكرار الجغرافي مرة أخرى، قد يستغرق الأمر يوما قبل إجراء الاستعادة الجغرافية على الخادم

  1. تعيين الخادم المصدر.

    تتم جميع وظائف النسخ المتماثل للبيانات بواسطة الإجراءات المخزنة. يمكنك العثور على جميع الإجراءات في إجراءات النسخ المتماثل للبيانات المخزنة. الإجراءات المخزنة في 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" للسماح لخوادم المصدر والنسخ المتماثلة بالاتصال ببعضها البعض. يمكن تغيير هذا الإعداد من خيارات أمان الاتصال. لمزيد من المعلومات، اطلع على إدارة قواعد جدار الحماية باستخدام المدخل.
    • إذا استخدمت 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 المرن. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.

    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 لخادم 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, '');
    
  2. بدء النسخ المتماثل.

    استدعاء الإجراء mysql.az_replication_start المخزن لبدء النسخ المتماثل.

    CALL mysql.az_replication_start;
    
  3. تحقق من حالة النسخ المتماثل.

    استدعاء الأمر 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]

عرض نتائج السجل الثنائي

الخطوات التالية