ترحيل Amazon RDS for MySQL إلى قاعدة بيانات Azure ل MySQL باستخدام النسخ المتماثل للبيانات

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

هام

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

إشعار

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

يمكنك استخدام أساليب مثل تفريغ MySQL واستعادته، أو MySQL Workbench Export and Import، أو Azure Database Migration Service لترحيل قواعد بيانات MySQL إلى قاعدة بيانات Azure لخادم MySQL المرن. يمكنك ترحيل أحمال العمل الخاصة بك بأقل وقت تعطل باستخدام مجموعة من الأدوات مفتوحة المصدر مثل mysqldump أو mydumper وmyloader مع Data-in Replication.

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

إعداد Data-in Replication لمزامنة البيانات من خادم MySQL المصدر إلى خادم MySQL الهدف. يمكنك إجراء قطع انتقائي للتطبيقات الخاصة بك من قاعدة البيانات الأساسية (أو قاعدة البيانات المصدر) إلى النسخة المتماثلة (أو قاعدة البيانات الهدف).

في هذا البرنامج التعليمي، ستتعلم كيفية إعداد النسخ المتماثل للبيانات بين خادم مصدر يقوم بتشغيل خدمة قاعدة بيانات Amazon العلائقية (RDS) ل MySQL وخادم مستهدف يقوم بتشغيل قاعدة بيانات Azure لخادم MySQL المرن.

الاعتبارات الخاصة بالأداء

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

موقع العميل

تنفيذ عمليات تفريغ أو استعادة من كمبيوتر عميل تم تشغيله في نفس موقع خادم قاعدة البيانات:

  • بالنسبة لمثيلات خادم Azure Database for MySQL المرن، يجب أن يكون جهاز العميل في نفس الشبكة الظاهرية ومنطقة التوفر مثل خادم قاعدة البيانات الهدف.
  • بالنسبة لمثيلات قاعدة بيانات Amazon RDS المصدر، يجب أن يكون مثيل العميل موجودا في نفس سحابة Amazon الظاهرية الخاصة ومنطقة التوفر مثل خادم قاعدة بيانات المصدر. في الحالة السابقة، يمكنك نقل ملفات التفريغ بين أجهزة العميل باستخدام بروتوكولات نقل الملفات مثل FTP أو SFTP أو تحميلها إلى Azure Blob Storage. لتقليل إجمالي وقت الترحيل، قم بضغط الملفات قبل نقلها.

سعة العميل

بغض النظر عن مكان وجود الكمبيوتر العميل، فإنه يتطلب حوسبة كافية، والإدائها/إخراج، وسعة الشبكة لتنفيذ العمليات المطلوبة. التوصيات العامة هي:

  • إذا كان التفريغ أو الاستعادة يتضمن معالجة البيانات في الوقت الحقيقي، على سبيل المثال، الضغط أو إلغاء الضغط، فاختر فئة مثيل مع ذاكرة أساسية واحدة على الأقل لوحدة المعالجة المركزية لكل تفريغ أو مؤشر ترابط استعادة.
  • تأكد من توفر نطاق ترددي كافي للشبكة لمثيل العميل. استخدم أنواع المثيلات التي تدعم ميزة الشبكات المتسارعة. لمزيد من المعلومات، راجع قسم "الشبكات المسرعة" في دليل Azure Virtual Machine Networking.
  • تأكد من أن طبقة تخزين جهاز العميل توفر سعة القراءة/الكتابة المتوقعة. نوصي باستخدام جهاز ظاهري Azure مع تخزين SSD Premium.

المتطلبات الأساسية

لإكمال هذا البرنامج التعليمي، تحتاج إلى:

  • تثبيت mysqlclient على كمبيوتر العميل الخاص بك لإنشاء تفريغ، وتنفيذ عملية استعادة على قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL.

  • بالنسبة لقواعد البيانات الأكبر حجما، قم بتثبيت mydumper وmyloader للتخلص المتوازي من قواعد البيانات واستعادتها.

    إشعار

    يمكن تشغيل Mydumper فقط على توزيعات Linux. لمزيد من المعلومات، راجع كيفية تثبيتmydumper.

  • إنشاء مثيل لقاعدة بيانات Azure لخادم MySQL المرن الذي يقوم بتشغيل الإصدار 5.7 أو 8.0.

    هام

    إذا كان هدفك هو خادم Azure Database for MySQL المرن مع توفر عال متكرر للمنطقة (HA)، فلاحظ أن Data-in Replication غير مدعوم لهذا التكوين. كحل بديل، أثناء إنشاء الخادم، قم بإعداد قابلية الوصول العالية المكررة في المنطقة:

    1. إنشاء الخادم مع تمكين قابلية الوصول العالية المكررة في المنطقة.
    2. تعطيل قابلية الوصول العالية.
    3. اتبع المقالة لإعداد النسخ المتماثل للبيانات.
    4. بعد الانتقال، قم بإزالة تكوين النسخ المتماثل للبيانات.
    5. تمكين قابلية الوصول العالية.

تأكد من تكوين العديد من المعلمات والميزات وإعدادها بشكل صحيح، كما هو موضح:

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

وأخيرًا، للتحضير النسخ المتماثل للبيانات:

  • تحقق من أن مثيل خادم Azure Database for MySQL المرن المستهدف يمكنه الاتصال بمصدر Amazon RDS لخادم MySQL عبر المنفذ 3306.
  • تأكد من أن خادم Amazon RDS لـ MySQL المصدر يسمح لكل من حركة المرور الواردة والصادرة على المنفذ 3306.
  • تأكد من توفير اتصال من موقع إلى موقع إلى خادم المصدر باستخدام إما Azure ExpressRoute أو بوابة Azure VPN. لمزيد من المعلومات حول إنشاء شبكة اتصال ظاهرية، راجع توثيق Azure VPN. راجع أيضا مقالات التشغيل السريع مع تفاصيل خطوة بخطوة.
  • تكوين مجموعات أمان الشبكة لخادم قاعدة البيانات المصدر للسماح لقاعدة بيانات Azure الهدف لعنوان IP للخادم المرن MySQL.

هام

إذا GTID_mode تعيين مثيل Amazon RDS for MySQL المصدر إلى ON، يجب أن يحتوي المثيل الهدف لقاعدة بيانات Azure لخادم MySQL المرن أيضا على GTID_mode تعيين إلى ON.

تكوين المثيل الهدف من قاعدة بيانات Azure لـ MySQL

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

  1. قم بتعيين قيمة المعلمة max_allowed_packet إلى الحد الأقصى 1073741824، والذي هو 1 غيغابايت. تمنع هذه القيمة أي مشكلات تجاوز متعلقة بالسجلات الطويلة.

  2. قم بتعيين المعلمات slow_query_log و general_log و audit_log_enabled و query_store_capture_modeإلى OFF أثناء الترحيل للمساعدة في إزالة أي حمل متعلق بتسجيل الاستعلام.

  3. قم بزيادة حجم الحساب لمثيل خادم Azure Database for MySQL المرن الهدف إلى الحد الأقصى 64 vCores. يوفر هذا الحجم المزيد من موارد الحوسبة عند استعادة تفريغ قاعدة بيانات الخادم المصدر.

    يمكنك دائما تقليص الحوسبة لتلبية طلبات التطبيق الخاص بك بعد اكتمال الترحيل.

  4. قم بزيادة حجم التخزين للحصول على المزيد من عمليات إدخال وإخراج في الثانية أثناء ترحيل أقصى عمليات إدخال وإخراج في الثانية للترحيل.

    إشعار

    يتم تحديد الحد الأقصى المتاح لعمليات الإدخال والإخراج في الثانية حسب حجم الحساب. لمزيد من المعلومات، راجع قسم IOPS في خيارات الحوسبة والتخزين في قاعدة بيانات Azure لخادم MySQL المرن.

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

لإعداد وتكوين خادم MySQL المستضاف في Amazon RDS، وهو مصدر النسخ المتماثل للبيانات:

  1. تأكد من تمكين التسجيل الثنائي على Amazon RDS المصدر لـ خادم MySQL. تحقق من تمكين النسخ الاحتياطية التلقائية، أو تأكد من وجود نسخة متماثلة للقراءة لخادم Amazon RDS for MySQL المصدر.

  2. تأكد من الاحتفاظ بملفات السجل الثنائية على الخادم المصدر حتى بعد تطبيق التغييرات على المثيل الهدف لقاعدة بيانات Azure لخادم MySQL المرن.

    باستخدام النسخ المتماثل للبيانات، لا يدير خادم Azure Database for MySQL المرن عملية النسخ المتماثل.

  3. للتحقق من الاحتفاظ بالسجل الثنائي على خادم Amazon RDS المصدر لتحديد عدد الساعات التي يتم فيها الاحتفاظ بالسجلات الثنائية، قم باستدعاء mysql.rds_show_configuration الإجراء المخزن:

    mysql> call mysql.rds_show_configuration;
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | name | value | description |
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | binlog retention hours | 24 | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. |
    | source delay | 0 | source delay specifies replication delay in seconds between current instance and its master. |
    | target delay | 0 | target delay specifies replication delay in seconds between current instance and its future read-replica. |
    +------------------------+-------            +-----------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
  4. لتكوين فترة الاحتفاظ بالسجل الثنائي، قم بتشغيل rds_set_configuration الإجراء المخزن للتأكد من الاحتفاظ بالسجلات الثنائية على الخادم المصدر للوقت المطلوب. على سبيل المثال:

    Mysql> Call mysql.rds_set_configuration(‘binlog retention hours', 96);
    

    إذا كنت تقوم بإنشاء تفريغ واستعادة، يساعدك الأمر السابق على اللحاق بتغييرات دلتا بسرعة.

    إشعار

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

هناك طريقتان لتسجيل نسخة احتياطية للبيانات من خادم Amazon RDS المصدر لـ MySQL. يتضمن أحد النهج التقاط تفريغ البيانات مباشرة من الخادم المصدر. يتضمن النهج الآخر التقاط تفريغ من نسخة متماثلة للقراءة في Amazon RDS لـ MySQL.

  • لتسجيل نسخة احتياطية للبيانات مباشرة من الخادم المصدر:

    1. تأكد من إيقاف عمليات الكتابة من التطبيق لبضع دقائق للحصول على نسخ احتياطي متسق للمعاملات للبيانات.

      يمكنك أيضا تعيين المعلمة read_only مؤقتا إلى قيمة 1 بحيث لا تتم معالجة عمليات الكتابة عند تسجيل نسخ احتياطي البيانات.

    2. بعد إيقاف عمليات الكتابة على الخادم المصدر، اجمع اسم ملف السجل الثنائي وإزاحته عن طريق تشغيل الأمر Mysql> Show master status;.

    3. احفظ هذه القيم لبدء النسخ المتماثل من مثيل خادم Azure Database for MySQL المرن.

    4. لإنشاء نسخة احتياطية للبيانات، نفذ mysqldump عن طريق تشغيل الأمر التالي:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • إذا لم يكن إيقاف عمليات الكتابة على الخادم المصدر خيارا أو كان أداء تفريغ البيانات غير مقبول على الخادم المصدر، فقم بتسجيل نسخة احتياطية على خادم النسخة المتماثلة:

    1. إنشاء نسخة متماثلة للقراءة في Amazon MySQL بنفس التكوين مثل الخادم المصدر. ثم قم بإنشاء نسخة احتياطية هناك.

    2. دع Amazon RDS لـ MySQL يقرأ النسخة المتماثلة للحاق بمصدر Amazon RDS لخادم MySQL.

    3. عندما يصل تأخر النسخة المتماثلة إلى 0 على النسخة المتماثلة للقراءة، أوقف النسخ المتماثل عن طريق استدعاء mysql.rds_stop_replication الإجراء المخزن.

      Mysql> call mysql.rds_stop_replication;
      
    4. مع إيقاف النسخ المتماثل، اتصل بالنسخة المتماثلة. ثم قم بتشغيل SHOW SLAVE STATUS الأمر لاسترداد اسم ملف السجل الثنائي الحالي من حقل Relay_Master_Log_File وموضع ملف السجل من حقل Exec_Master_Log_Pos.

    5. احفظ هذه القيم لبدء النسخ المتماثل من مثيل خادم Azure Database for MySQL المرن.

    6. لإنشاء نسخ احتياطي للبيانات من النسخة المتماثلة للقراءة Amazon RDS for MySQL، نفذ mysqldump عن طريق تشغيل الأمر التالي:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      

    إشعار

    يمكنك أيضا استخدام mydumper لتسجيل تفريغ متوازي لبياناتك من مصدر Amazon RDS لقاعدة بيانات MySQL. لمزيد من المعلومات، راجع ترحيل قواعد البيانات الكبيرة إلى خادم Azure Database for MySQL المرن باستخدام mydumper/myloader.

  1. لاستعادة قاعدة البيانات باستخدام استعادة mysql الأصلية، قم بتشغيل الأمر التالي:

    $ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
    
  2. سجل الدخول إلى خادم Amazon RDS المصدر لـ MySQL، وقم بإعداد مستخدم النسخ المتماثل. ثم امنح الامتيازات الضرورية لهذا المستخدم.

    • إذا كنت تستخدم SSL، قم بتشغيل الأوامر التالية:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL;
      Mysql> SHOW GRANTS FOR syncuser@'%';
      
    • إذا كنت لا تستخدم SSL، قم بتشغيل الأوامر التالية:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%';
      Mysql> SHOW GRANTS FOR syncuser@'%';
      

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

  3. لربط خادم مصدر Amazon RDS for MySQL وقاعدة بيانات Azure لخادم MySQL المرن، قم بتسجيل الدخول إلى مثيل الخادم المرن ل Azure Database for MySQL الهدف. قم بتعيين خادم Amazon RDS لـ MySQL كخادم مصدر عن طريق تشغيل الأمر التالي:

    CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');
    
  4. لبدء النسخ المتماثل بين مصدر Amazon RDS لخادم MySQL ومثيل الخادم المرن ل Azure Database for MySQL، قم بتشغيل الأمر التالي:

    Mysql> CALL mysql.az_replication_start;
    
  5. للتحقق من حالة النسخ المتماثل على خادم النسخة المتماثلة، قم بتشغيل الأمر التالي:

    Mysql> show slave status\G
    

    إذا كانت حالة المعلمتين Slave_IO_Runningو Slave_SQL_Runningهي نعم، فقد بدأ النسخ المتماثل وهو في حالة تشغيل.

  6. تحقق من قيمة المعلمة Seconds_Behind_Master لتحديد مدى تأخر الخادم الهدف.

    إذا كانت القيمة 0، فقد قام الهدف بمعالجة جميع التحديثات من الخادم المصدر. إذا كانت القيمة أي شيء آخر غير 0، فلا يزال الخادم الهدف يعالج التحديثات.

ضمان نجاح التشغيل

لضمان نجاح التشغيل:

  1. تكوين عمليات تسجيل الدخول المناسبة والأذونات على مستوى قاعدة البيانات في قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL.
  2. إيقاف الكتابة إلى خادم Amazon RDS المصدر لـ MySQL.
  3. تأكد من أن مثيل خادم Azure Database for MySQL المرن الهدف قد اشتعل مع الخادم المصدر وأن Seconds_Behind_Master القيمة هي 0 من show slave status.
  4. استدعاء الإجراء mysql.az_replication_stop المخزن لإيقاف النسخ المتماثل لأنه تم نسخ جميع التغييرات نسخا متماثلا إلى قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL.
  5. استدعاء mysql.az_replication_remove_master لإزالة تكوين النسخ المتماثل للبيانات.
  6. إعادة توجيه العملاء وتطبيقات العميل إلى قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL.

عند هذه النقطة، يكتمل الترحيل. تطبيقاتك متصلة بالخادم الذي يقوم بتشغيل قاعدة بيانات Azure لخادم MySQL المرن.

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