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

هام

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

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

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

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

إشعار

إذا كان الخادم المصدر هو الإصدار 10.2 أو أحدث، نوصي بإعداد النسخ المتماثل للبيانات باستخدام معرف المعاملة العمومية.

إشعار

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

إنشاء خادم MariaDB لاستخدامه كنسخة متماثلة

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

    للتعرف على إنشاء الخادم، راجع إنشاء قاعدة بيانات Azure لخادم MariaDB باستخدام مدخل Microsoft Azure.

    هام

    يجب إنشاء قاعدة بيانات Azure لخادم MariaDB في مستويات التسعير للأغراض العامة أو الذاكرة المحسنة.

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

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

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

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

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

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

  1. راجع متطلبات الخادم الأساسي قبل المتابعة.

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

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

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

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

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

      SELECT @@global.redirect_server_host;
      

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

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

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

      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 بحيث log_bin=ON يقوم بتشغيل التسجيل الثنائي. أعد تشغيل الخادم لجعل التغيير نافذ المفعول.

  4. تكوين إعدادات الخادم المصدر.

    يتطلب النسخ المتماثل للبيانات أن تكون المعلمة lower_case_table_names متسقة بين خوادم المصدر والنسخ المتماثلة. lower_case_table_names يتم تعيين المعلمة إلى 1 افتراضيا في قاعدة بيانات Azure ل MariaDB.

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

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

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

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

    لمعرفة المزيد حول وثائق MariaDB، راجع تحديد أسماء الحسابات.

    أمر 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، في جزء Management ، حدد Users and Privileges. ثم حدد إضافة حساب.

    Users and Privileges

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

    Sync user

    حدد لوحة مسؤول istrative Roles، ثم في قائمة Global Privileges، حدد Replication Slave. حدد Apply لإنشاء دور النسخ المتماثل.

    Replication Slave

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

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

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

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

    show master status;
    

    يجب أن تكون النتائج مشابهة للجدول التالي:

    Master Status Results

    لاحظ اسم الملف الثنائي، لأنه سيتم استخدامه في الخطوات اللاحقة.

  8. احصل على موضع GTID (اختياري، مطلوب للنسخ المتماثل باستخدام GTID).

    قم بتشغيل الدالة BINLOG_GTID_POS للحصول على موضع GTID لاسم ملف binlog المقابل والإزاحة.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

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

  1. تفريغ جميع قواعد البيانات من الخادم المصدر.

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

    لمزيد من المعلومات، راجع التفريغ والاستعادة.

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

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

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

    استعادة ملف التفريغ إلى الخادم الذي تم إنشاؤه في قاعدة بيانات Azure لخدمة MariaDB. راجع التفريغ والاستعادة لمعرفة كيفية استعادة ملف تفريغ إلى خادم MariaDB.

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

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

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

    لربط خادمين وبدء النسخ المتماثل، سجل الدخول إلى خادم النسخة المتماثلة الهدف في Azure DB لخدمة MariaDB. بعد ذلك، قم بتعيين المثيل الخارجي كخادم المصدر باستخدام mysql.az_replication_change_master الإجراء أو mysql.az_replication_change_master_with_gtid المخزن على Azure DB لخادم MariaDB.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    أو

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: اسم مضيف الخادم المصدر
    • master_user: اسم المستخدم للخادم المصدر
    • master_password: كلمة المرور للخادم المصدر
    • master_log_file: اسم ملف السجل الثنائي من show master status الجاري
    • master_log_pos: موضع السجل الثنائي من show master status الجاري
    • master_gtid_pos: موضع GTID من التشغيل select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: سياق شهادة CA. إذا كنت لا تستخدم SSL، فمرر سلسلة فارغة.*

    *نوصي بتمرير المعلمة master_ssl_ca كمتغير. لمزيد من المعلومات، يرجى مراجعة الأمثلة التالية.

    الأمثلة

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

      إنشاء المتغير @cert عن طريق تشغيل الأوامر التالية:

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE\'S CONTEXT HERE
      -----END CERTIFICATE-----'
      

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

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • النسخ المتماثل بدون SSL

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

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. بدء النسخ المتماثل.

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

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

    استدعاء الأمر show slave status على خادم النسخة المتماثلة لعرض حالة النسخ المتماثل.

    show slave status;
    

    إذا كانت Slave_IO_Running و في الحالة yes، وقيمة Seconds_Behind_Master هي 0، فإن النسخ Slave_SQL_Running المتماثل يعمل. يشير Seconds_Behind_Master إلى مدى تأخر النسخة المتماثلة. إذا لم تكن 0القيمة ، فإن النسخة المتماثلة تعالج التحديثات.

  4. قم بتحديث متغيرات الخادم المقابلة لجعل النسخ المتماثل للبيانات أكثر أمانا (مطلوب فقط للنسخ المتماثل دون GTID).

    بسبب قيود النسخ المتماثل الأصلي في MariaDB، يجب تعيين sync_master_info المتغيرات و sync_relay_log_info على النسخ المتماثل دون سيناريو GTID.

    تحقق من خادم sync_master_info النسخة المتماثلة والمتغيرات sync_relay_log_info للتأكد من استقرار النسخ المتماثل للبيانات، وتعيين المتغيرات إلى 1.

إجراءات مُخزنة أخرى

إيقاف النسخ المتماثل

لإيقاف النسخ المتماثل بين خادم المصدر والنسخة المتماثلة، استخدم الإجراء المخزن التالي:

CALL mysql.az_replication_stop;

إزالة علاقة النسخ المتماثل

لإزالة العلاقة بين خادم المصدر والنسخة المتماثلة، استخدم الإجراء المخزن التالي:

CALL mysql.az_replication_remove_master;

تخطي خطأ النسخ المتماثل

لتخطي خطأ النسخ المتماثل والسماح بالنسخ المتماثل، استخدم الإجراء المخزن التالي:

CALL mysql.az_replication_skip_counter;

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

تعرف على المزيد حول النسخ المتماثل للبيانات لقاعدة بيانات Azure ل MariaDB.