تكوين النسخ المتماثل للبيانات في قاعدة بيانات 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 لاستخدامه كنسخة متماثلة
إنشاء قاعدة بيانات Azure جديدة لخادم MariaDB (على سبيل المثال، replica.mariadb.database.azure.com). الخادم هو خادم النسخة المتماثلة في النسخ المتماثل للبيانات.
للتعرف على إنشاء الخادم، راجع إنشاء قاعدة بيانات Azure لخادم MariaDB باستخدام مدخل Microsoft Azure.
هام
يجب إنشاء قاعدة بيانات Azure لخادم MariaDB في مستويات التسعير للأغراض العامة أو الذاكرة المحسنة.
إنشاء حسابات مستخدمين متطابقة وامتيازات مقابلة.
لا يتم نسخ حسابات المستخدمين من الخادم المصدر إلى خادم النسخة المتماثلة. لتوفير وصول المستخدم إلى خادم النسخة المتماثلة، يجب إنشاء جميع الحسابات والامتيازات المقابلة يدويا على قاعدة بيانات Azure التي تم إنشاؤها حديثا لخادم MariaDB.
أضف عنوان IP الخاص بالخادم المصدر إلى قواعد جدار الحماية للنسخة المتماثلة.
تحديث قواعد جدار الحماية باستخدام مدخل Microsoft Azure أو Azure CLI.
تكوين الخادم المصدر
تقوم الخطوات التالية بإعداد وتكوين خادم MariaDB المستضاف محليا أو في جهاز ظاهري أو في خدمة قاعدة بيانات سحابية للنسخ المتماثل للبيانات. خادم MariaDB هو المصدر في النسخ المتماثل للبيانات.
راجع متطلبات الخادم الأساسي قبل المتابعة.
تأكد من أن الخادم المصدر يسمح بنسبة استخدام الشبكة الواردة والصادرة على المنفذ 3306 وأن الخادم المصدر لديه عنوان IP عام، أو أن DNS يمكن الوصول إليه بشكل عام، أو لديه اسم مجال مؤهل بالكامل (FQDN).
اختبر الاتصال بالخادم المصدر عن طريق محاولة الاتصال من أداة مثل سطر أوامر MySQL المستضاف على جهاز آخر أو من Azure Cloud Shell المتوفر في مدخل Microsoft Azure.
إذا كانت مؤسستك لديها نهج أمان صارمة ولن تسمح لجميع عناوين IP على الخادم المصدر بتمكين الاتصال من Azure إلى الخادم المصدر، فمن المحتمل أن تستخدم الأمر أدناه لتحديد عنوان IP لقاعدة بيانات Azure لخادم MariaDB.
سجل الدخول إلى قاعدة بيانات Azure ل MariaDB باستخدام أداة مثل سطر أوامر MySQL.
تنفيذ الاستعلام أدناه.
SELECT @@global.redirect_server_host;
وفيما يلي بعض إخراج العينة:
+-----------------------------------------------------------+ | @@global.redirect_server_host | +-----------------------------------------------------------+ | e299ae56f000.tr1830.westus1-a.worker.database.windows.net | +-----------------------------------------------------------+
الخروج من سطر أوامر MySQL.
قم بتنفيذ ما يلي في الأداة المساعدة 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.
قم بتكوين قواعد جدار الحماية للخادم المصدر لتضمين عنوان IP الناتج للخطوة السابقة على المنفذ 3306.
إشعار
قد يتغير عنوان IP هذا بسبب عمليات الصيانة/النشر. هذا الأسلوب من الاتصال هو فقط للعملاء الذين لا يستطيعون تحمل للسماح لجميع عنوان IP على منفذ 3306.
تشغيل تسجيل ثنائي.
لمعرفة ما إذا كان التسجيل الثنائي ممكنا على الأساسي، أدخل الأمر التالي:
SHOW VARIABLES LIKE 'log_bin';
إذا أرجع المتغير
log_bin
القيمةON
، يتم تمكين التسجيل الثنائي على الخادم الخاص بك.إذا أرجعت
log_bin
القيمةOFF
، قم بتحرير الملف my.cnf بحيثlog_bin=ON
يقوم بتشغيل التسجيل الثنائي. أعد تشغيل الخادم لجعل التغيير نافذ المفعول.تكوين إعدادات الخادم المصدر.
يتطلب النسخ المتماثل للبيانات أن تكون المعلمة
lower_case_table_names
متسقة بين خوادم المصدر والنسخ المتماثلة.lower_case_table_names
يتم تعيين المعلمة إلى1
افتراضيا في قاعدة بيانات Azure ل MariaDB.SET GLOBAL lower_case_table_names = 1;
إنشاء دور نسخ متماثل جديد وإعداد الأذونات.
إنشاء حساب مستخدم على الخادم المصدر الذي تم تكوينه بامتيازات النسخ المتماثل. يمكنك إنشاء حساب باستخدام أوامر 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. ثم حدد إضافة حساب.
أدخل اسم مستخدم في حقل اسم تسجيل الدخول.
حدد لوحة مسؤول istrative Roles، ثم في قائمة Global Privileges، حدد Replication Slave. حدد Apply لإنشاء دور النسخ المتماثل.
تعيين الخادم المصدر إلى وضع القراءة فقط.
قبل تفريغ قاعدة بيانات، يجب وضع الخادم في وضع القراءة فقط. أثناء العمل في وضع القراءة فقط، لا يمكن للمصدر معالجة أي معاملات كتابة. للمساعدة في تجنب تأثير الأعمال، قم بجدولة نافذة القراءة فقط أثناء وقت خارج أوقات الذروة.
FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON;
احصل على اسم ملف السجل الثنائي الحالي وإزاحته.
لتحديد اسم ملف السجل الثنائي الحالي والإزاحة، قم بتشغيل الأمر
show master status
.show master status;
يجب أن تكون النتائج مشابهة للجدول التالي:
لاحظ اسم الملف الثنائي، لأنه سيتم استخدامه في الخطوات اللاحقة.
احصل على موضع GTID (اختياري، مطلوب للنسخ المتماثل باستخدام GTID).
قم بتشغيل الدالة
BINLOG_GTID_POS
للحصول على موضع GTID لاسم ملف binlog المقابل والإزاحة.select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
تفريغ واستعادة الخادم المصدر
تفريغ جميع قواعد البيانات من الخادم المصدر.
استخدم mysqldump لتفريغ جميع قواعد البيانات من الخادم المصدر. ليس من الضروري تفريغ مكتبة MySQL ومكتبة الاختبار.
لمزيد من المعلومات، راجع التفريغ والاستعادة.
تعيين الخادم المصدر إلى وضع القراءة/الكتابة.
بعد تفريغ قاعدة البيانات، قم بتغيير خادم MariaDB المصدر مرة أخرى إلى وضع القراءة/الكتابة.
SET GLOBAL read_only = OFF; UNLOCK TABLES;
استعادة ملف التفريغ إلى الخادم الجديد.
استعادة ملف التفريغ إلى الخادم الذي تم إنشاؤه في قاعدة بيانات Azure لخدمة MariaDB. راجع التفريغ والاستعادة لمعرفة كيفية استعادة ملف تفريغ إلى خادم MariaDB.
إذا كان ملف التفريغ كبيرا، فقم بتحميله إلى جهاز ظاهري في Azure داخل نفس المنطقة مثل خادم النسخة المتماثلة. قم باستعادة إلى قاعدة بيانات Azure لخادم MariaDB من الجهاز الظاهري.
ربط خوادم المصدر والنسخ المتماثلة لبدء النسخ المتماثل للبيانات
تعيين الخادم المصدر.
تتم جميع وظائف النسخ المتماثل للبيانات بواسطة الإجراءات المخزنة. يمكنك العثور على جميع الإجراءات في إجراءات النسخ المتماثل للبيانات المخزنة. يمكن تشغيل الإجراءات المخزنة في 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, '');
بدء النسخ المتماثل.
استدعاء الإجراء
mysql.az_replication_start
المخزن لبدء النسخ المتماثل.CALL mysql.az_replication_start;
تحقق من حالة النسخ المتماثل.
استدعاء الأمر
show slave status
على خادم النسخة المتماثلة لعرض حالة النسخ المتماثل.show slave status;
إذا كانت
Slave_IO_Running
و في الحالةyes
، وقيمةSeconds_Behind_Master
هي0
، فإن النسخSlave_SQL_Running
المتماثل يعمل. يشيرSeconds_Behind_Master
إلى مدى تأخر النسخة المتماثلة. إذا لم تكن0
القيمة ، فإن النسخة المتماثلة تعالج التحديثات.قم بتحديث متغيرات الخادم المقابلة لجعل النسخ المتماثل للبيانات أكثر أمانا (مطلوب فقط للنسخ المتماثل دون 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.