معلمات الخادم في قاعدة البيانات الخاصة بـ Azure لـ MySQL
تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL
هام
قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟
توفر هذه المقالة اعتبارات وإرشادات لتكوين معلمات الخادم في قاعدة البيانات الخاصة بـ Azure لـ MySQL.
ما هي المعلمات المتعلقة بالخادم؟
يوفر محرك MySQL العديد من متغيرات الخادم المختلفة والمعلمات التي تستخدمها لتكوين وضبط سلوك المحرك . يمكن تعيين بعض المعلمات ديناميكيًا أثناء وقت التشغيل، في حين أن البعض الآخر ثابت، ويتطلب إعادة تشغيل الخادم من أجل التطبيق.
تكشف قاعدة البيانات الخاصة بـ Azure لـ MySQL القدرة على تغيير قيمة معلمات خادم MySQL المتنوعة باستخدام مدخل Azure وAzure CLI و PowerShell لمطابقة احتياجات حمل العمل الخاصة بك.
معلمات الخادم القابلة للتكوين
قائمة معلمات الخادم المدعومة تتزايد باستمرار. في بوابة Azure، استخدم علامة تبويب معلمات الخادم لعرض القائمة الكاملة وتكوين قيم معلمات الخادم.
راجع الأقسام التالية لمعرفة المزيد حول حدود العديد من معلمات الخادم التي تُحدث بشكل شائع. يتم تحديد الحدود حسب فئة التسعير و vCores للخادم.
التجمعات المتعلقة بمؤشرات الترابط
تقوم MySQL تقليديًا بتعيين مؤشر ترابط لكل اتصال عميل. مع زيادة عدد المستخدمين المتزامنين، هناك انخفاض مطابق في الأداء. يمكن أن تؤثر العديد من مؤشرات الترابط النشطة على الأداء بشكل كبير، وذلك بسبب زيادة تبديل السياق منافسة على الاتصال فيما يتعلق بمؤشر الترابط والمواقع غير الصحيحة لذاكرة التخزين المؤقت لـ CPU.
تعمل تجمعات مؤشرات الترابط، وهي ميزة من جانب الخادم ومتميزة عن تجميع الاتصال، على زيادة الأداء إلى الحد الأقصى من خلال تقديم مجموعة ديناميكية من مؤشرات ترابط العاملين. يمكنك استخدام هذه الميزة للحد من عدد مؤشرات الترابط النشطة التي يتم تشغيلها على الخادم وتقليل فقدان مؤشرات الترابط. يساعد هذا في التأكد من أن اندفاع الاتصالات لا يتسبب في نفاد الموارد أو الذاكرة للخادم. تعد تجمعات مؤشرات الترابط أكثر فاعلية للاستعلامات القصيرة وأحمال العمل المكثفة لـ CPU، مثل أحمال عمل OLTP.
لمزيد من المعلومات، راجع تقديم تجمعات مؤشرات الترابط في قاعدة البيانات الخاصة بـ Azure لـ MySQL.
إشعار
لا يتم دعم مجمعات مؤشرات الترابط لـ MySQL 5.6.
التكوين الخاص بتجمع مؤشر الترابط
لتمكين تجمع مؤشرات الترابط، قم بتحديث thread_handling
معلمة الخادم إلى.pool-of-threads
بشكل افتراضي، يتم ضبط هذه المعلمة إلى one-thread-per-connection
، مما يعني أن MySQL ينشئ مؤشر ترابط جديد لكل اتصال جديد. هذه معلمة ثابتة، وتتطلب إعادة تشغيل الخادم للتطبيق.
يمكنك أيضًا تكوين الحد الأقصى والحد الأدنى لعدد مؤشرات التراب طفي التجمع من خلال تعيين معلمات الخادم التالية:
thread_pool_max_threads
: تحد هذه القيمة من عدد مؤشرات الترابط في التجمع.thread_pool_min_threads
: تحدد هذه القيمة عدد مؤشرات الترابط المحجوزة، حتى بعد إغلاق الاتصالات.
لتحسين مشاكل أداء الاستعلامات القصيرة في تجمع مؤشرات الترابط، يمكنك تمكين تنفيذ الدُفعات. بدلاً من العودة مرة أخرى إلى تجمع مؤشرات الترابط مباشرة بعد تشغيل الاستعلام، تبقى مؤشرات الترابط نشطة لفترة قصيرة لانتظار الاستعلام التالي من خلال هذا الاتصال. ثم يقوم مؤشر الترابط بتشغيل الاستعلام بسرعة، وعند اكتمال ذلك ، ينتظر مؤشر الترابط الاستعلام التالي. تستمر هذه العملية حتى يتجاوز إجمالي الوقت المنقضي الحد الأدني.
ثم يصبح بإمكانك تحديد سلوك تنفيذ الدفعة باستخدام معلمات الخادم التالية:
thread_pool_batch_wait_timeout
: : تحدد هذه القيمة الوقت الذي ينتظره مؤشر الترابط حتى تتم معالجة استعلام آخر.thread_pool_batch_max_time
: تحدد هذه القيمة الحد الأقصى للوقت الذي يكرر فيه مؤشر الترابط دورة تنفيذ الاستعلام وانتظار الاستعلام التالي.
هام
لا تقم بتشغيل تجمع مؤشر الترابط في الإنتاج حتى تختبرها.
log_bin_trust_function_creators
في قاعدة البيانات الخاصة بـ Azure لـ MySQL، يتم دائمًا تمكين السجلات الثنائية (يتمlog_bin
ضبط المعلمة إلى ON
). إذا كنت ترغب في استخدام المشغلات، فستتلقى خطأ مشابها للخطأ التالي: ليس لديك امتياز SUPER ويتم تمكين التسجيل الثنائي (قد ترغب في استخدام المتغير الأقل أمانا log_bin_trust_function_creators
).
دائمًا ما يكون تنسيق التسجيل الثنائي هو ROW ، وكافة الاتصالات بالخادم تستخدم دائمًا التسجيل الثنائي المستند إلى السجل. يساعد التسجيل الثنائي المستند إلى السجل في الحفاظ على الأمان، ولا يمكن قطع التسجيل الثنائي، لذلك يمكنك الضبط log_bin_trust_function_creators
بأمانTRUE
.
innodb_buffer_pool_size
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
خوادم التخزين للأغراض العامة v1 (تدعم حتى 4 تيرابايت)
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | 872415232 | 134217728 | 872415232 |
أساسي | 2 | 2684354560 | 134217728 | 2684354560 |
General Purpose | 2 | 3758096384 | 134217728 | 3758096384 |
General Purpose | 4 | 8053063680 | 134217728 | 8053063680 |
General Purpose | 8 | 16106127360 | 134217728 | 16106127360 |
General Purpose | 16 | 32749125632 | 134217728 | 32749125632 |
General Purpose | 32 | 66035122176 | 134217728 | 66035122176 |
General Purpose | 64 | 132070244352 | 134217728 | 132070244352 |
مُحسّن للذاكرة | 2 | 7516192768 | 134217728 | 7516192768 |
مُحسّن للذاكرة | 4 | 16106127360 | 134217728 | 16106127360 |
مُحسّن للذاكرة | 8 | 32212254720 | 134217728 | 32212254720 |
مُحسّن للذاكرة | 16 | 65498251264 | 134217728 | 65498251264 |
مُحسّن للذاكرة | 32 | 132070244352 | 134217728 | 132070244352 |
خوادم التخزين للأغراض العامة v2 (تدعم حتى 16 تيرابايت)
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | 872415232 | 134217728 | 872415232 |
أساسي | 2 | 2684354560 | 134217728 | 2684354560 |
General Purpose | 2 | 7516192768 | 134217728 | 7516192768 |
General Purpose | 4 | 16106127360 | 134217728 | 16106127360 |
General Purpose | 8 | 32212254720 | 134217728 | 32212254720 |
General Purpose | 16 | 65498251264 | 134217728 | 65498251264 |
General Purpose | 32 | 132070244352 | 134217728 | 132070244352 |
General Purpose | 64 | 264140488704 | 134217728 | 264140488704 |
مُحسّن للذاكرة | 2 | 15032385536 | 134217728 | 15032385536 |
مُحسّن للذاكرة | 4 | 32212254720 | 134217728 | 32212254720 |
مُحسّن للذاكرة | 8 | 64424509440 | 134217728 | 64424509440 |
مُحسّن للذاكرة | 16 | 130996502528 | 134217728 | 130996502528 |
مُحسّن للذاكرة | 32 | 264140488704 | 134217728 | 264140488704 |
innodb_file_per_table
يقوم MySQL بتخزينInnoDB
الجدول في مساحات جداول مختلفة ، بناءً على التكوين الذي توفره أثناء إنشاء الجدول. مساحة جدول النظام هي منطقة التخزينInnoDB
لقاموس البيانات. تحتوي مساحة جدول الملف لكل جدول على بيانات وفهارس لجدول واحدInnoDB
، ويتم تخزينها في نظام الملفات في ملف البيانات الخاص به.
ويصبح بإمكانك التحكم في هذا السلوك باستخدام innodb_file_per_table
معلمة الخادم. يؤدي innodb_file_per_table
الضبط إلىOFF
إنشاء جداولInnoDB
في مساحة جداول النظام. بخلاف ذلك ، InnoDB
يتم إنشاء جداول في مساحات جداول ملف لكل جدول.
إشعار
يمكنك فقط تحديثinnodb_file_per_table
مستويات التسعير للأغراض العامة والذاكرة المحسّنة على التخزين للأغراض العامة v2 والتخزين للأغراض العامة v1.
تدعم قاعدة البيانات الخاصة بـ Azure لـ MySQL 4 تيرابايت (كحد أقصى) في ملف بيانات واحد على مساحة تخزين للأغراض العامة الإصدار 2. إذا كان حجم قاعدة البيانات الخاصة بك أكبر من 4 تيرابايت، يجب عليك إنشاء الجدول في جداول innodb_file_per_tablespace. إذا كان لديك حجم جدول واحد أكبر من 4 تيرابايت، فيجب عليك استخدام جدول الأقسام.
join_buffer_size
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
أساسي | 2 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
General Purpose | 2 | 262144 | 128 | 268435455 |
General Purpose | 4 | 262144 | 128 | 536870912 |
General Purpose | 8 | 262144 | 128 | 1073741824 |
General Purpose | 16 | 262144 | 128 | 2147483648 |
General Purpose | 32 | 262144 | 128 | 4294967295 |
General Purpose | 64 | 262144 | 128 | 4294967295 |
مُحسّن للذاكرة | 2 | 262144 | 128 | 536870912 |
مُحسّن للذاكرة | 4 | 262144 | 128 | 1073741824 |
مُحسّن للذاكرة | 8 | 262144 | 128 | 2147483648 |
مُحسّن للذاكرة | 16 | 262144 | 128 | 4294967295 |
مُحسّن للذاكرة | 32 | 262144 | 128 | 4294967295 |
max_connections
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية | الحد الأدنى للقيمة | القيمة القصوى |
---|---|---|---|---|
أساسي | 1 | 50 | 10 | 50 |
أساسي | 2 | 100 | 10 | 100 |
General Purpose | 2 | 300 | 10 | 600 |
General Purpose | 4 | 625 | 10 | 1250 |
General Purpose | 8 | 1250 | 10 | 2500 |
General Purpose | 16 | 2500 | 10 | 5000 |
General Purpose | 32 | 5000 | 10 | 10000 |
General Purpose | 64 | 10000 | 10 | 20000 |
مُحسّن للذاكرة | 2 | 625 | 10 | 1250 |
مُحسّن للذاكرة | 4 | 1250 | 10 | 2500 |
مُحسّن للذاكرة | 8 | 2500 | 10 | 5000 |
مُحسّن للذاكرة | 16 | 5000 | 10 | 10000 |
مُحسّن للذاكرة | 32 | 10000 | 10 | 20000 |
عندما يتجاوز عدد الاتصالات الحد، تقوم بتلقى خطأ.
تلميح
لإدارة الاتصالات بكفاءة، من الأفضل استخدام مجمّع اتصالات مثل ProxySQL. للتعرف على إعداد ProxySQL، قم بمراجعة منشور مدونة قراءة موازنة التحميل باستخدام ProxySQL في قاعدة البيانات الخاصة بـ Azure لـ MySQL. ProxySQL هي أداة مجتمع ذات مصدر مفتوح. وهي مدعومة من Microsoft على أساس بذل أفضل الجهود.
max_heap_table_size
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
أساسي | 2 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
General Purpose | 2 | 16777216 | 16384 | 268435455 |
General Purpose | 4 | 16777216 | 16384 | 536870912 |
General Purpose | 8 | 16777216 | 16384 | 1073741824 |
General Purpose | 16 | 16777216 | 16384 | 2147483648 |
General Purpose | 32 | 16777216 | 16384 | 4294967295 |
General Purpose | 64 | 16777216 | 16384 | 4294967295 |
مُحسّن للذاكرة | 2 | 16777216 | 16384 | 536870912 |
مُحسّن للذاكرة | 4 | 16777216 | 16384 | 1073741824 |
مُحسّن للذاكرة | 8 | 16777216 | 16384 | 2147483648 |
مُحسّن للذاكرة | 16 | 16777216 | 16384 | 4294967295 |
مُحسّن للذاكرة | 32 | 16777216 | 16384 | 4294967295 |
query_cache_size
يتم إيقاف تشغيل ذاكرة التخزين المؤقت المخصصة للاستعلام افتراضيًا. لتمكين ذاكرة التخزين المؤقت للاستعلام، يجب تكوين المعلمة query_cache_type
.
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
إشعار
تم إهمال ذاكرة التخزين المؤقت المخصصة للاستعلام اعتبارًا من MySQL 5.7.20 وتمت إزالتها في MySQL 8.0.
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | القيمة القصوى |
---|---|---|---|---|
أساسي | 1 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
أساسي | 2 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
General Purpose | 2 | 1 | 1 | 16777216 |
General Purpose | 4 | 0 | 1 | 33554432 |
General Purpose | 8 | 1 | 1 | 67108864 |
General Purpose | 16 | 1 | 1 | 134217728 |
General Purpose | 32 | 1 | 1 | 134217728 |
General Purpose | 64 | 1 | 1 | 134217728 |
مُحسّن للذاكرة | 2 | 1 | 1 | 33554432 |
مُحسّن للذاكرة | 4 | 0 | 1 | 67108864 |
مُحسّن للذاكرة | 8 | 1 | 1 | 134217728 |
مُحسّن للذاكرة | 16 | 1 | 1 | 134217728 |
مُحسّن للذاكرة | 32 | 1 | 1 | 134217728 |
lower_case_table_names
يتم تعيينlower_case_table_name
المعلمة على 1 افتراضيًا، ويصبح بإمكانك تحديث هذه المعلمة في MySQL 5.6 وMySQL 5.7.
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
إشعار
في MySQL 8.0، lower_case_table_name
يتم ضبطه إلى 1 بشكل افتراضي، ولا يمكنك تغييره.
innodb_strict_mode
إذا تلقيت خطأً مشابهًا لـ Row size too large (> 8126)
، يجب التفكير في إيقاف تشغيل المعلمة innodb_strict_mode
. وتصبح إمكانية التعديل غير سارية المفعول innodb_strict_mode
بشكل عام على مستوى الخادم. إذا كان حجم بيانات الصف أكبر من 8 كيلو بايت، يتم اقتطاع البيانات، بدون إعلام بالخطأ، مما يؤدي إلى فقدان البيانات المحتمل. من الجيد تعديل المخطط ليلائم حد حجم الصفحة.
يمكنك تعيين هذه المعلمة على مستوى الجلسة، باستخدام init_connect
. لضبط innodb_strict_mode
على مستوى الجلسة قم بمراجعة معلمة الإعداد غير المدرجة.
إشعار
إذا كان لديك خادم نسخة متماثلة للقراءة، يؤدي الضبطinnodb_strict_mode
إلىOFF
مستوى الجلسة على خادم المصدر إلى قطع النسخ المتماثل. نقترح الاحتفاظ بالمعامل بشكل مضبوط على ON
إذا كنت قد قرأت النسخ المتماثلة.
sort_buffer_size
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
أساسي | 2 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
General Purpose | 2 | 524288 | 32768 | 4194304 |
General Purpose | 4 | 524288 | 32768 | 8388608 |
General Purpose | 8 | 524288 | 32768 | 16777216 |
General Purpose | 16 | 524288 | 32768 | 33554432 |
General Purpose | 32 | 524288 | 32768 | 33554432 |
General Purpose | 64 | 524288 | 32768 | 33554432 |
مُحسّن للذاكرة | 2 | 524288 | 32768 | 8388608 |
مُحسّن للذاكرة | 4 | 524288 | 32768 | 16777216 |
مُحسّن للذاكرة | 8 | 524288 | 32768 | 33554432 |
مُحسّن للذاكرة | 16 | 524288 | 32768 | 33554432 |
مُحسّن للذاكرة | 32 | 524288 | 32768 | 33554432 |
tmp_table_size
راجع وثائق MySQL لمعرفة المزيد حول هذه المعلمة.
مستوى الأسعار | الذاكرة (الذاكرات) الأساسية الظاهرية | القيمة الافتراضية (بايت) | قيمة الحد الأدنى (بايت) | أقصى قيمة (بايت) |
---|---|---|---|---|
أساسي | 1 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
أساسي | 2 | تُعتبر غير قابلة للتكوين في المستوى الأساسي | غير متوفر | غير متوفر |
General Purpose | 2 | 16777216 | 1024 | 67108864 |
General Purpose | 4 | 16777216 | 1024 | 134217728 |
General Purpose | 8 | 16777216 | 1024 | 268435456 |
General Purpose | 16 | 16777216 | 1024 | 536870912 |
General Purpose | 32 | 16777216 | 1024 | 1073741824 |
General Purpose | 64 | 16777216 | 1024 | 1073741824 |
مُحسّن للذاكرة | 2 | 16777216 | 1024 | 134217728 |
مُحسّن للذاكرة | 4 | 16777216 | 1024 | 268435456 |
مُحسّن للذاكرة | 8 | 16777216 | 1024 | 536870912 |
مُحسّن للذاكرة | 16 | 16777216 | 1024 | 1073741824 |
مُحسّن للذاكرة | 32 | 16777216 | 1024 | 1073741824 |
innodb_buffer_pool_size
بعد إعادة تشغيل قاعدة البيانات الخاصة بـ Azure لـ MySQL، يتم تحميل صفحات البيانات الموجودة على القرص، حيث يتم الاستعلام عن الجداول. يؤدي هذا إلى زيادة زمن الوصول وأداء أبطأ للتشغيل الأول الخاص بالاستعلامات. فيما بتعلق بأحمال العمل الحساسة لزمن الانتقال، قد تجد هذا الأداء البطيء غير مقبول.
يمكنك استخدام InnoDB
تجهيز مجموعة المخزن المؤقت لتقصير فترة التجهيز. تعيد هذه العملية تحميل صفحات القرص التي كانت موجودة في تجمع المخزن المؤقت قبل إعادة التشغيل، بدلاً من انتظار عمليات DML أو SELECT للوصول إلى الصفوف المقابلة. لمزيد من المعلومات، قم بمراجعة معلمات خادم تجمع المخزن المؤقت InnoDB.
ومع ذلك، يأتي الأداء المحسن على حساب وقت بدء تشغيل أطول للخادم. عند تمكين هذه المعلمة، من المتوقع أن تزيد أوقات بدء تشغيل الخادم وإعادة تشغيله، اعتمادا على IOPS المتوفر على الخادم. من الجيد اختبار ومراقبة وقت عملية إعادة التشغيل، للتأكد من أن أداء عملية بدء التشغيل أو إعادة التشغيل مقبول، لأن الخادم غير متاح خلال ذلك الوقت. لا تستخدم هذه المعلمة عندما يكون عدد IOPS المقدم أقل من 1000 IOPS (بمعنى آخر، عندما يكون التخزين المقدم أقل من 335 غيغابايت).
فيما يتعلق بحفظ حالة تجمع المخزن المؤقت عند إيقاف تشغيل الخادم، قم بضبط معلمة innodb_buffer_pool_dump_at_shutdown
الخادم إلى ON
. وبالمثل، قم بضبط معلمة innodb_buffer_pool_load_at_startup
الخادم لاستعادة ON
حالة تجمع المخزن المؤقت عند بدء تشغيل الخادم. يمكنك التحكم في التأثير على بدء التشغيل أو إعادة التشغيل عن طريق خفض وضبط قيمة معلمة innodb_buffer_pool_dump_pct
الخادم. بشكلٍ افتراضي، يتم ضبط هذه المعلمة على 25
.
إشعار
InnoDB
يتم دعم معلمات تجهيز مجموعة المخزن المؤقت فقط في خوادم التخزين للأغراض العامة مع تخزين يصل إلى 16 تيرابايت. لمزيد من المعلومات، راجع قاعدة البيانات الخاصة بـ Azure لـ MySQL.
time_zone
فيما يتعلق بعملية التوزيع الأولي ، يشتمل الخادم الذي يقوم بتشغيل قاعدة البيانات الخاصة بـ Azure لـ MySQL على جداول أنظمة لمعلومات المنطقة الزمنية، ولكن لا يتم ملء هذه الجداول. يمكنك ملء الجداول عن طريق استدعاء اmysql.az_load_timezone
لإجراء المخزن من أدوات مثل سطر أوامر MySQL أوMySQL Workbench. للحصول على معلومات حول كيفية استدعاء الإجراءات المخزنة وتعيين المناطق الزمنية العامة أو على مستوى الجلسة، قم بمراجعة العمل باستخدام معلمة المنطقة الزمنية (مدخل Azure) أو العمل باستخدام معلمة المنطقة الزمنية (Azure CLI).
binlog_expire_logs_seconds
فيما يتعلق بقاعدة البيانات الخاصة بـ Azure لـ MySQL، تحدد هذه المعلمة عدد الثواني التي تنتظرها الخدمة قبل مسح ملف السجل الثنائي.
يحتوي السجل الثنائي على أحداث تصف تغييرات قاعدة البيانات، مثل عمليات إنشاء الجدول أو التغييرات التي تطرأ على بيانات الجدول. يحتوي أيضًا على أحداث للعبارات التي يمكن أن تُحدث تغييرات. يستخدم السجل الثنائي بشكل رئيسي لغرضين، عمليات النسخ المتماثل واسترداد البيانات.
عادةً ما يتم مسح السجلات الثنائية بمجرد أن يكون المقبض خالي من الخدمة أو النسخ الاحتياطي أو مجموعة النسخ المتماثلة. إذا كانت هناك نسخ متماثلة متعددة، تنتظر السجلات الثنائية أبطأ نسخة متماثلة لقراءة التغييرات قبل إزالتها. إذا كنت تريد أن تستمر السجلات الثنائية لفترة أطول، يُصبح بإمكانك تكوين المعلمةbinlog_expire_logs_seconds
. إذا قمت binlog_expire_logs_seconds
بالضبط0
إلى، وهي القيمة الافتراضية، يتم حذفها مسحها بتحرير مؤشر السجل الثنائي. إذا قمت بالضبطbinlog_expire_logs_seconds
إلى أكبر من 0، يتم مسح السجل الثنائي فقط بعد تلك الفترة الزمنية.
بالنسبة إلى قاعدة البيانات الخاصة بـ Azure لـ MySQL، تتم معالجة الميزات المُدارة مثل النسخ الاحتياطي وقراءة النسخ المتماثلة للملفات الثنائية داخليًا. عند نسخ البيانات من قاعدة البيانات الخاصة بـ Azure لخدمة MySQL، يجب عليك ضبط هذه المعلمة في الأساسي لتجنب مسج السجلات الثنائية قبل أن تقرأ النسخة المتماثلة من التغييرات من الأساسي. إذا قمت بالضبطbinlog_expire_logs_seconds
إلى قيمة أعلى، فلن يتم مسح السجلات الثنائية قريبا بما فيه الكفاية. يمكن أن يؤدي هذا إلى زيادة فواتير التخزين.
event_scheduler
في قاعدة بيانات Azure ل MySQL، event_schedule
تدير معلمة الخادم إنشاء الأحداث وجدولتها وتشغيلها، أي المهام التي يتم تشغيلها وفقا لجدول زمني، ويتم تشغيلها بواسطة مؤشر ترابط مجدول أحداث خاص. عند تعيين المعلمة event_scheduler
إلى ON، يتم سرد مؤشر ترابط جدولة الأحداث كعملية خفي في إخراج SHOW PROCESSLIST. يمكنك إنشاء الأحداث وجدولتها باستخدام بناء جملة SQL التالي:
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;
إشعار
لمزيد من المعلومات حول إنشاء حدث، راجع وثائق MySQL Event Scheduler هنا:
تكوين معلمة خادم event_scheduler
يوضح السيناريو التالي إحدى الطرق لاستخدام المعلمة event_scheduler
في قاعدة بيانات Azure ل MySQL. لتوضيح السيناريو، ضع في اعتبارك المثال التالي، جدول بسيط:
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)
لتكوين معلمة event_scheduler
الخادم في قاعدة بيانات Azure ل MySQL، قم بتنفيذ الخطوات التالية:
في مدخل Microsoft Azure، انتقل إلى الخادم الخاص بك، ثم ضمن الإعدادات، حدد معلمات الخادم.
في جزء Server parameters ، ابحث
event_scheduler
عن ، في القائمة المنسدلة VALUE ، وحدد ON، ثم حدد Save.إشعار
سيتم نشر تغيير تكوين معلمة الخادم الديناميكي دون إعادة تشغيل.
ثم لإنشاء حدث، اتصل بخادم MySQL، وقم بتشغيل أمر SQL التالي:
CREATE EVENT test_event_01 ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR COMMENT ‘Inserting record into the table tab1 with current timestamp’ DO INSERT INTO tab1(id,createdAt,createdBy) VALUES('',NOW(),CURRENT_USER());
لعرض تفاصيل جدولة الأحداث، قم بتشغيل عبارة SQL التالية:
SHOW EVENTS;
يظهر الإخراج التالي:
mysql> show events; +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ | db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci | +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ 1 row in set (0.23 sec)
بعد بضع دقائق، استعلم عن الصفوف من الجدول لبدء عرض الصفوف المدرجة كل دقيقة وفقا للمعلمة التي
event_scheduler
قمت بتكوينها:mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | +----+---------------------+-------------+ 4 rows in set (0.23 sec)
بعد ساعة، قم بتشغيل عبارة Select على الجدول لعرض النتيجة الكاملة للقيم المدرجة في الجدول كل دقيقة لمدة ساعة كما
event_scheduler
تم تكوينها في حالتنا.mysql> select * from tab1; +----+---------------------+-------------+ | id | CreatedAt | CreatedBy | +----+---------------------+-------------+ | 1 | 2023-04-05 14:47:04 | azureuser@% | | 2 | 2023-04-05 14:48:04 | azureuser@% | | 3 | 2023-04-05 14:49:04 | azureuser@% | | 4 | 2023-04-05 14:50:04 | azureuser@% | | 5 | 2023-04-05 14:51:04 | azureuser@% | | 6 | 2023-04-05 14:52:04 | azureuser@% | ..< 50 lines trimmed to compact output >.. | 56 | 2023-04-05 15:42:04 | azureuser@% | | 57 | 2023-04-05 15:43:04 | azureuser@% | | 58 | 2023-04-05 15:44:04 | azureuser@% | | 59 | 2023-04-05 15:45:04 | azureuser@% | | 60 | 2023-04-05 15:46:04 | azureuser@% | | 61 | 2023-04-05 15:47:04 | azureuser@% | +----+---------------------+-------------+ 61 rows in set (0.23 sec)
السيناريوهات الأخرى
يمكنك إعداد حدث استنادا إلى متطلبات السيناريو المحدد. تتبع بعض الأمثلة المماثلة لجدولة عبارات SQL للتشغيل على فترات زمنية مختلفة.
تشغيل عبارة SQL الآن وتكرارها مرة واحدة في اليوم دون نهاية
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
تشغيل عبارة SQL كل ساعة دون نهاية
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
تشغيل عبارة SQL كل يوم بدون نهاية
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
معلمات الخادم غير القابلة للتكوين
معلمات الخادم التالية غير قابلة للتكوين فيما يتعلق بالخدمة:
المعلمة | القيمة الثابتة |
---|---|
innodb_file_per_table في المستوى الأساسي |
إيقاف التشغيل |
innodb_flush_log_at_trx_commit |
1 |
sync_binlog |
1 |
innodb_log_file_size |
256 ميغابايت |
innodb_log_files_in_group |
2 |
يتم ضبط المتغيرات الأخرى غير المدرجة هنا على قيم MySQL الافتراضية. راجع مستندات MySQL فيما يتعلق بالإصدارات8.0و5.7و5.6.
الخطوات التالية
- تعرف على كيفية تكوين معلمات الخادم في مدخل Azure
- تعرف على كيفية تكوين معلمات الخادم في مدخل Azure
- تعرف على كيفية تكوين معلمات الخادم باستخدام PowerShell