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

تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL

هام

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

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

إشعار

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

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

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

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

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

    هام

    يجب إنشاء قاعدة بيانات Azure لخادم MySQL في مستويات التسعير للأغراض العامة أو الذاكرة المحسنة لأن النسخ المتماثل للبيانات مدعوم فقط في هذه المستويات. دعم GTID على الإصدارين 5.7 و8.0 وعلى الخوادم التي تدعم التخزين حتى 16 تيرابايت (التخزين للأغراض العامة v2).

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

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

  3. أضف عنوان IP الخاص بالخادم المصدر إلى قواعد جدار الحماية للنسخة المتماثلة.

    تحديث قواعد جدار الحماية باستخدام مدخل Microsoft Azure أو Azure CLI.

  4. اختياري - إذا كنت ترغب في استخدام النسخ المتماثل المستند إلى GTID من الخادم المصدر إلى خادم النسخة المتماثلة لقاعدة بيانات Azure لـMySQL، فستحتاج إلى تمكين معلمات الخادم التالية على خادم Azure Database لـMySQL كما هو موضح في صورة المدخل أدناه:

    Enable GTID on Azure Database for MySQL server

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

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

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

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

    اختبر الاتصال بالخادم المصدر عن طريق محاولة الاتصال من أداة مثل سطر أوامر MySQL المستضاف على جهاز آخر أو من Azure Cloud Shell المتوفر في مدخل Microsoft Azure.

    إذا كانت مؤسستك لديها نهج أمان صارمة ولن تسمح لجميع عناوين IP على الخادم المصدر بتمكين الاتصال من Azure إلى الخادم المصدر، فمن المحتمل أن تستخدم الأمر أدناه لتحديد عنوان IP لخادم MySQL الخاص بك.

    1. سجل الدخول إلى قاعدة بيانات Azure لخادم MySQL باستخدام أداة مثل سطر أوامر MySQL.

    2. تنفيذ الاستعلام التالي.

      mysql> SELECT @@global.redirect_server_host;
      

      وفيما يلي بعض إخراج العينة:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. الخروج من سطر أوامر MySQL.

    4. للحصول على عنوان IP، نفذ الأمر التالي في الأداة المساعدة ping:

      ping <output of step 2b>
      

      على سبيل المثال:

      C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net
      Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data.
      
    5. قم بتكوين قواعد جدار الحماية للخادم المصدر لتضمين عنوان IP الناتج للخطوة السابقة على المنفذ 3306.

      إشعار

      قد يتغير عنوان IP هذا بسبب عمليات الصيانة/ النشر. هذا الأسلوب من الاتصال هو فقط للعملاء الذين لا يستطيعون تحمل للسماح لجميع عنوان IP على منفذ 3306.

  3. تشغيل تسجيل ثنائي.

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

    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;
    

    اختياري - إذا كنت ترغب في استخدام النسخ المتماثل المستند إلى GTID، فستحتاج إلى التحقق مما إذا تم تمكين GTID على الخادم المصدر. يمكنك تنفيذ الأمر التالي مقابل خادم MySQL المصدر لمعرفة ما إذا كان gtid_mode قيد التشغيل.

    show variables like 'gtid_mode';
    

    هام

    gtid_mode تعيين كافة الخوادم إلى القيمة الافتراضية OFF. لا تحتاج إلى تمكين GTID على خادم MySQL المصدر خصيصًا لإعداد النسخ المتماثل للبيانات. إذا تم تمكين GTID بالفعل على الخادم المصدر، يمكنك اختياريا استخدام النسخ المتماثل المستند إلى GTID لإعداد النسخ المتماثل للبيانات أيضا مع قاعدة بيانات Azure لخادم MySQL الفردي. يمكنك استخدام النسخ المتماثل المستند إلى الملف لإعداد النسخ المتماثل للبيانات لجميع الخوادم بغض النظر عن تكوين gitd_mode على الخادم المصدر.

  5. إنشاء دور نسخ متماثل جديد وإعداد الإذن.

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

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

    أمر SQL

    النسخ المتماثل باستخدام 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'@'%';
    

    MySQL Workbench

    لإنشاء دور النسخ المتماثل في MySQL Workbench، افتح لوحة Users and Privileges من لوحة Management، ثم حدد Add Account.

    Users and Privileges

    اكتب اسم المستخدم في حقل اسم تسجيل الدخول.

    Sync user

    حدد لوحة Administrative Roles ثم حدد Replication Slave من قائمة Global Privileges. ثم حدد تطبيق لإنشاء دور النسخ المتماثل.

    Replication Slave

  6. تعيين الخادم المصدر إلى وضع القراءة فقط.

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

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

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

     show master status;
    

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

    Master Status Results

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

  1. حدد قواعد البيانات والجداول التي تريد نسخها نسخًا متماثلًا إلى قاعدة بيانات Azure لـMySQL وتنفيذ تفريغ من الخادم المصدر.

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

  2. اختياري - إذا كنت ترغب في استخدام النسخ المتماثل المستند إلى gtid، فستحتاج إلى تحديد GTID لآخر معاملة تم تنفيذها في العملية الأساسية. يمكنك استخدام الأمر التالي لتدوين GTID الخاص بالمعاملة الأخيرة التي تم تنفيذها على الخادم الرئيسي.

    show global variables like 'gtid_executed';
    
  3. تعيين الخادم المصدر إلى وضع القراءة/الكتابة.

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

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  4. استعادة ملف تفريغ إلى خادم جديد.

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

  5. اختياري - لاحظ GTID للخادم المستعادة على قاعدة بيانات Azure لـMySQL للتأكد من أنه نفس الخادم الأساسي. يمكنك استخدام الأمر التالي لتدوين GTID للقيمة المطهرة GTID على خادم النسخة المتماثلة لقاعدة بيانات Azure لـMySQL. يجب أن تكون قيمة gtid_purged هي نفسها gtid_executed على الشكل الرئيسي المذكور في الخطوة 2 للنسخ المتماثل المستند إلى GTID للعمل.

    show global variables like 'gtid_purged';
    
  1. تعيين الخادم المصدر.

    تتم جميع وظائف النسخ المتماثل للبيانات بواسطة الإجراءات المخزنة. يمكنك العثور على جميع الإجراءات في إجراءات النسخ المتماثل للبيانات المخزنة. الإجراءات المخزنة في MySQL shell أو MySQL Workbench.

    لربط خادمين وبدء النسخ المتماثل، قم بتسجيل الدخول إلى خادم النسخة المتماثلة الهدف في خدمة Azure Database for MySQL وتعيين المثيل الخارجي كخادم المصدر. يتم ذلك باستخدام mysql.az_replication_change_master الإجراء المخزن على قاعدة بيانات 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>');
    

    اختياري - إذا كنت ترغب في استخدام النسخ المتماثل المستند إلى gtid، فستحتاج إلى استخدام الأمر التالي لربط الخادمين

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

    الأمثلة

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

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

    يتم إعداد النسخ المتماثل من دون SSL بين خادم مصدر مستضاف في المجال "companya.com" وخادم نسخة متماثلة مستضاف في قاعدة بيانات Azure لـMySQL. يتم تشغيل هذا الإجراء المخزن على النسخة المتماثلة.

    CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, '');
    
  2. إعداد التصفية.

    إذا كنت تريد تخطي النسخ المتماثل لبعض الجداول من الشكل الرئيسي، فقم بتحديث معلمة الخادم replicate_wild_ignore_table على خادم النسخة المتماثلة. يمكنك توفير أكثر من نمط جدول واحد باستخدام قائمة مفصولة بفواصل.

    راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.

    لتحديث المعلمة، يمكنك استخدام مدخل Microsoft Azure أو Azure CLI.

  3. بدء النسخ المتماثل.

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

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

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

اختياري - إذا كنت ترغب في استخدام النسخ المتماثل المستند إلى gtid، فاستخدم الإجراء المخزن التالي لتخطي معاملة

call mysql. az_replication_skip_gtid_transaction(‘<transaction_gtid>’)

يمكن للإجراء تخطي المعاملة لـGTID المحدد. إذا لم يكن تنسيق GTID صحيحًا أو تم تنفيذ معاملة GTID بالفعل، فسيفشل تنفيذ الإجراء. يمكن تحديد GTID معاملة عن طريق تحليل السجل الثنائي للتحقق من أحداث المعاملة. يوفر MySQL الأداة المساعدة mysqlbinlog لتحليل السجلات الثنائية وعرض محتوياتها بتنسيق نصي، والتي يمكن استخدامها لتحديد GTID للمعاملة.

هام

يمكن استخدام هذا الإجراء لتخطي معاملة واحدة فقط، ولا يمكن استخدامه لتخطي مجموعة gtid أو تعيين gtid_purged.

لتخطي المعاملة التالية بعد موضع النسخ المتماثل الحالي، استخدم الأمر التالي لتحديد GTID للمعاملة التالية كما هو موضح أدناه.

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]

Show binary log results

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