ترحيل قاعدة بيانات MySQL إلى قاعدة بيانات Azure ل MySQL - خادم مرن باستخدام التفريغ والاستعادة

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

هام

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

توضح هذه المقالة طريقتين شائعتين لنسخ قواعد البيانات احتياطيا واستعادتها في قاعدة بيانات Azure لخادم MySQL المرن.

  • تفريغ واستعادة من سطر الأوامر (باستخدام mysqldump).
  • تفريغ واستعادة باستخدام PHPMy مسؤول.

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

قبل البدء

للتقدم في هذا الدليل الإرشادي، تحتاج إلى ما يلي:

تلميح

إذا كنت تبحث عن طريقة لترحيل قواعد بيانات كبيرة بأحجام قاعدة بيانات تزيد عن 1 تيرابايت، فقد تحتاج إلى التفكير في استخدام أدوات المجتمع مثل mydumper/myloader الذي يدعم التصدير والاستيراد المتوازيين. تعلم كيفية ترحيل قواعد بيانات MySQL الكبيرة.

حالات الاستخدام الشائعة للتفريغ والاستعادة

تتمثل حالات الاستخدام الشائعة فيما يلي:

  • الانتقال من موفر خدمة مدارة آخر - قد لا يوفر معظم موفري الخدمة المدارة الوصول إلى ملف التخزين الفعلي لأسباب أمنية، لذا فإن النسخ الاحتياطي المنطقي والاستعادة هي الخيار الوحيد للترحيل.

  • الترحيل من البيئة المحلية أو الجهاز الظاهري - لا يدعم خادم Azure Database for MySQL المرن استعادة النسخ الاحتياطية الفعلية، ما يجعل النسخ الاحتياطي المنطقي والاستعادة كنهج فقط.

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

  • الترحيل من محركات التخزين البديلة إلى InnoDB - قاعدة بيانات Azure لخادم MySQL المرن يدعم محرك تخزين InnoDB فقط، وبالتالي لا يدعم محركات التخزين البديلة. إذا تم تكوين الجداول الخاصة بك مع محركات تخزين أخرى، فقم بتحويلها إلى تنسيق محرك InnoDB قبل الترحيل إلى قاعدة بيانات Azure لخادم MySQL المرن.

    على سبيل المثال، إذا كان لديك WordPress أو WebApp باستخدام جداول MyISAM، فقم أولا بتحويل هذه الجداول عن طريق الترحيل إلى تنسيق InnoDB قبل الاستعادة إلى قاعدة بيانات Azure لخادم MySQL المرن. استخدم عبارة ENGINE=InnoDB لتعيين المحرك المستخدم عند إنشاء جدول جديد، ثم انقل البيانات إلى الجدول المتوافق قبل الاستعادة.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

هام

  • لتجنب أي مشكلات توافق، تأكد من استخدام نفس الإصدار من MySQL على أنظمة المصدر والوجهة عند تفريغ قواعد البيانات. على سبيل المثال، إذا كان خادم MySQL الحالي هو الإصدار 5.7، فيجب عليك الترحيل إلى مثيل خادم مرن ل Azure Database for MySQL تم تكوينه لتشغيل الإصدار 5.7. mysql_upgrade لا يعمل الأمر في قاعدة بيانات Azure لمثيل خادم MySQL المرن، وهو غير مدعوم.
  • إذا كنت بحاجة إلى الترقية عبر إصدارات MySQL، قم أولاً بتفريغ قاعدة بيانات الإصدار الأدنى أو تصديرها إلى إصدار أعلى من MySQL في بيئتك الخاصة. ثم قم بتشغيل mysql_upgrade قبل محاولة الترحيل إلى مثيل خادم مرن لقاعدة بيانات Azure ل MySQL.

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

لتحسين الأداء، انتبه لهذه الاعتبارات عند تفريغ قواعد البيانات الكبيرة:

  • استخدم الخيار exclude-triggers في mysqldump عند تفريغ قواعد البيانات. استبعاد المشغلات من ملفات التفريغ لتجنب تشغيل أوامر المشغل أثناء استعادة البيانات.
  • استخدم الخيار single-transaction لتعيين وضع عزل المعاملة إلى READ القابل للتكرار وقم، بإرسال عبارة SQL START TRANSACTION إلى الخادم قبل تفريغ البيانات. يؤدي تفريغ العديد من الجداول داخل معاملة واحدة إلى استهلاك بعض التخزين الإضافي أثناء الاستعادة. يعد الخيار single-transaction والخيار lock-tables حصريان بشكل متبادل لأن LOCK TABLES يتسبب في الالتزام ضمنياً بأي معاملات معلقة. لتفريغ الجداول الكبيرة، ادمج الخيار single-transaction مع الخيار quick.
  • استخدم بناء الجملة extended-insert متعدد الصفوف الذي يتضمن عدة قوائم VALUE. ينتج عن ذلك ملف تفريغ أصغر ويسرع من عمليات الإدراج عند إعادة تحميل الملف.
  • استخدم الخيار order-by-primary في mysqldump عند تفريغ قواعد البيانات، بحيث يتم برمجة البيانات بترتيب المفتاح الأساسي.
  • استخدم الخيار disable-keys في mysqldump عند تفريغ البيانات، لتعطيل قيود المفتاح الخارجي قبل التحميل. يوفر تعطيل عمليات التحقق من المفتاح الخارجي مكاسب في الأداء. مكّن القيود وتحقق من البيانات بعد التحميل لضمان التكامل المرجعي.
  • استخدم الجداول المقسمة عندما يكون ذلك مناسباً.
  • تحميل البيانات بالتوازي. تجنب الكثير من التحميل بالتوازي والذي قد يتسبب في الوصول إلى حد الموارد، وراقب الموارد باستخدام المقاييس المتوفرة في مدخل Azure.
  • استخدم الخيار defer-table-indexes في mysqldump عند تفريغ قواعد البيانات، بحيث يتم إنشاء الفهرس بعد تحميل بيانات الجداول.
  • انسخ ملفات النسخ الاحتياطي إلى Azure blob/store وقم بإجراء الاستعادة من هناك، والتي يجب أن تكون أسرع بكثير من إجراء الاستعادة عبر الإنترنت.

إنشاء قاعدة بيانات على قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL

إنشاء قاعدة بيانات فارغة على مثيل الخادم المرن ل Azure Database for MySQL الهدف حيث تريد ترحيل البيانات. استخدم أداة مثل MySQL Workbench أو mysql.exe لإنشاء قاعدة البيانات. يمكن أن يكون لقاعدة البيانات نفس اسم قاعدة البيانات التي تحتوي على البيانات المفرغة أو يمكنك إنشاء قاعدة بيانات باسم مختلف.

للاتصال، حدد موقع معلومات الاتصال في نظرة عامة على مثيل خادم Azure Database for MySQL المرن.

Find the connection information in the Azure portal

أضف معلومات الاتصال إلى MySQL Workbench.

MySQL Workbench Connection String

إعداد قاعدة بيانات Azure الهدف لمثيل خادم MySQL المرن لعمليات تحميل البيانات السريعة

لإعداد قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL لتحميل البيانات بشكل أسرع، يجب تغيير معلمات الخادم والتكوين التاليين.

  • تم ضبطmax_allowed_packet - ليكون 1073741824 (والتي تساوي 1 غيغابايت) لمنع أي مشكلة لتجاوز السعة تنتج عن السجلات الطويلة.
  • slow_query_log - اضبط على "إيقاف" لإيقاف تشغيل سجل الاستعلام البطيء. هذا يلغي الحمل الناتج عن بطء تسجيل الاستعلام أثناء تحميل البيانات.
  • query_store_capture_mode - اضبط على NONE لإيقاف تشغيل "مخزن الاستعلام". هذا يلغي الحمل الناتج عن أنشطة أخذ العينات بواسطة Query Store.
  • innodb_buffer_pool_size - توسيع نطاق الخادم إلى 32 vCore SKU محسن للذاكرة من مستوى التسعير من المدخل أثناء الترحيل لزيادة innodb_buffer_pool_size. لا يمكن زيادة Innodb_buffer_pool_size إلا عن طريق توسيع نطاق الحوسبة لمثيل خادم Azure Database for MySQL المرن.
  • innodb_io_capacity & innodb_io_capacity_max - بادر بالتغيير إلى 9000 من معلمات الخادم في مدخل Azure لتحسين استخدام الإدخال/ الإخراج لتحسين سرعة الترحيل.
  • innodb_write_io_threads & innodb_write_io_threads - بادر بالتغيير إلى 4 من معلمات الخادم في مدخل Azure لتحسين سرعة الترحيل.
  • توسيع طبقة التخزين - تزداد عمليات الإدخال/الإخراج في الثانية لقاعدة بيانات Azure لخادم MySQL المرن تدريجيا مع زيادة طبقة التخزين. للحصول على أحمال أسرع، قد تحتاج إلى زيادة مستوى التخزين لزيادة عمليات الإدخال/الإخراج التي تم تزويدها. الرجاء تذكر أنه يمكن تغيير حجم التخزين وليس توقيفه عن التشغيل.

بمجرد اكتمال الترحيل، يمكنك إعادة تكوين مستوى الحوسبة ومعلمات الخادم إلى قيمها السابقة.

التفريغ والاستعادة باستخدام الأداة المساعدة mysqldump

إنشاء ملف نسخ احتياطي من سطر الأوامر باستخدام mysqldump

لإجراء نسخ احتياطي لقاعدة بيانات MySQL موجودة على الخادم المحلي أو في جهاز ظاهري، قم بتشغيل الأمر التالي:

mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

تتمثل المعلمات التي يجب توفيرها فيما يلي:

  • [uname] اسم مستخدم قاعدة البيانات
  • [pass] رمز الوصول لقاعدة البيانات الخاصة بك (لاحظ أنه لا توجد مسافة بين -p وكلمة المرور)
  • [dbname] اسم قاعدة البيانات
  • [backupfile.sql] اسم الملف للنسخ الاحتياطي لقاعدة البيانات
  • [--opt] خيار mysqldump

على سبيل المثال، لإجراء نسخ احتياطي لقاعدة بيانات باسم "testdb" على خادم MySQL باستخدام اسم المستخدم "testuser" وبدون كلمة مرور لملف testdb_backup.sql، استخدم الأمر التالي. يعمل الأمر على نسخ قاعدة البيانات testdb احتياطياً في ملف يسمى testdb_backup.sql، والذي يحتوي على كافة عبارات SQL المطلوبة لإعادة إنشاء قاعدة البيانات. تأكد من أن اسم المستخدم "testuser" لديه على الأقل امتياز SELECT للجداول المفرغة، وSHOW VIEW لطرق العرض المفرغة، وTRIGGER للمشغلات المفرغة، وLOCK TABLES إذا لم يتم استخدام خيار --single-transaction.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

الآن قم بتشغيل mysqldump لإنشاء نسخة احتياطية من testdb قاعدة البيانات

mysqldump -u root -p testdb > testdb_backup.sql

لتحديد جداول معينة في قاعدة البيانات الخاصة بك للنسخ الاحتياطي، قم بإدراج أسماء الجداول مفصولة بمسافات. على سبيل المثال، لإجراء نسخ احتياطي لجداول الجدول 1 والجدول 2 فقط من "testdb"، اتبع هذا المثال:

mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

للنسخ الاحتياطي لأكثر من قاعدة بيانات واحدة في وقت واحد، استخدم زر --database وأدرج أسماء قواعد البيانات مفصولة بمسافات.

mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

استعادة قاعدة بيانات MySQL باستخدام خط الأوامر

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

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

في هذا المثال، قم باستعادة البيانات إلى قاعدة البيانات التي تم إنشاؤها حديثا على قاعدة بيانات Azure الهدف لمثيل الخادم المرن MySQL.

فيما يلي مثال لكيفية استخدام "mysql" هذا لـ "Single Server":

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

فيما يلي مثال لكيفية استخدام "mysql" هذا لـ "Flexible Server":

mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

تفريغ واستعادة باستخدام PHPMyAdmin

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

إشعار

بالنسبة إلى Single Server، يجب أن يكون اسم المستخدم بهذا التنسيق، "username@servername" ولكن بالنسبة إلى Flexible Server، يمكنك فقط استخدام "اسم المستخدم" إذا كنت تستخدم "username@servername" لـ Flexible Server، فسيفشل الاتصال.

التصدير باستخدام PHPMyadmin

للتصدير، يمكنك استخدام الأداة الشائعة phpMyAdmin، والتي ربما قمت بتثبيتها محلياً في بيئتك. لتصدير قاعدة بيانات MySQL باستخدام PHPMyAdmin، عليك القيام بما يلي:

  1. افتح phpMyAdmin.
  2. حدد قاعدة البيانات. حدّد اسم قاعدة البيانات في القائمة على اليسار.
  3. حدّد الارتباط "Export". ستظهر صفحة جديدة لعرض تفريغ قاعدة البيانات.
  4. في منطقة التصدير، انقر قوق الارتباط "Select All" لاختيار الجداول في قاعدة البيانات الخاصة بك.
  5. في منطقة خيارات SQL، حدّد الخيارات المناسبة.
  6. انقر فوق الخيار حفظ كملف وخيار الضغط المقابل ثم انقر فوق الزر "Go". يجب أن يظهر مربع حوار يطالبك بحفظ الملف محلياً.

الاستيراد باستخدام PHPMyAdmin

تعد عملية استيراد قاعدة البيانات مشابهة لعملية التصدير. قم بالإجراءات التالية:

  1. افتح phpMyAdmin.
  2. في صفحة إعداد phpMy مسؤول، حدد Add لإضافة قاعدة بيانات Azure لمثيل خادم MySQL المرن. قم بتوفير تفاصيل الاتصال ومعلومات تسجيل الدخول.
  3. أنشئ قاعدة بيانات مسماة بشكل مناسب وحددها من على يمين الشاشة. لإعادة كتابة قاعدة البيانات الموجودة، انقر فوق اسم قاعدة البيانات، ثم حدّد جميع خانات الاختيار الموجودة بجانب أسماء الجداول، ثم انقر فوق "Drop" لحذف الجداول الموجودة.
  4. انقر فوق الارتباط "SQL" لإظهار الصفحة حيث يمكنك الكتابة في أوامر SQL، أو تحميل ملف SQL.
  5. استخدم زر الاستعراض للعثور على ملف قاعدة البيانات.
  6. انقر فوق الزر "Go" لتصدير النسخة الاحتياطية، وتنفيذ أوامر SQL، وإعادة إنشاء قاعدة البيانات.

المشكلات المعروفة

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

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

  • الاتصال التطبيقات إلى خادم Azure Database for MySQL المرن.
  • لمزيد من المعلومات حول ترحيل قواعد البيانات إلى خادم مرن لقاعدة بيانات Azure ل MySQL، راجع دليل ترحيل قاعدة البيانات.
  • إذا كنت تبحث عن ترحيل قواعد بيانات كبيرة بأحجام قاعدة بيانات تزيد عن 1 ТБ، فقد تحتاج إلى التفكير في استخدام أدوات المجتمع مثل mydumper/myloader الذي يدعم التصدير والاستيراد المتوازيين. تعلم كيفية ترحيل قواعد بيانات MySQL الكبيرة.