فهم تكرار MySQL: هل يسجل log_bin
كل شيء دون تحديد قواعد البيانات؟
عندما تقوم بإعداد تكرار MySQL للعديد من قواعد البيانات، غالبًا ما يحدث لبس بشأن تكوين سجل ثنائي. أحد الأسئلة الشائعة هو ما إذا كانت MySQL ستسجل كل تغيير تم إجراؤه على قاعدة بيانات إذا لم تقم بتحديد أي قواعد بيانات معينة في ملف التكوين. في هذا المنشور، سنوضح كيف يعمل تسجيل السجلات الثنائية في MySQL، وخاصة عندما يتعلق الأمر بتوجيهات binlog-do-db
و binlog-ignore-db
.
المشكلة: كيف تتعامل MySQL مع تسجيل قواعد البيانات؟
ما هي السجلات الثنائية؟
تستخدم السجلات الثنائية في MySQL لتسجيل التغييرات التي تطرأ على قواعد البيانات. تعتبر هذه السجلات أساسية لعملية التكرار، حيث تساعد الخوادم التابعة على الحفاظ على نسخ محدثة من بيانات الخادم الرئيسي. يعد فهم كيفية تكوين أي قواعد بيانات يتم تسجيلها أمرًا حيويًا، خاصة عندما تعمل مع قواعد بيانات متعددة لعملاء مختلفين.
معضلة التكوين
أثناء تكوين إعدادات MySQL الخاص بك، قد تتساءل:
- هل يمكنني تخطي إدراج كل قاعدة بيانات وتجاهل عدد قليل فقط؟
- إذا قمت بتحديد تجاهل قواعد بيانات معينة، فهل سيتم تسجيل كل شيء آخر بشكل صحيح؟
لتوضيح هذا السيناريو، دعنا نعتبر إعدادًا نموذجيًا لملف التكوين my.cnf
.
الحل: استخدام binlog-ignore-db
بفعالية
استخدام binlog-ignore-db
يمكنك اختيار تضمين أوامر التجاهل المحددة في تكوين MySQL الخاص بك. على سبيل المثال:
binlog-ignore-db = mysql
binlog-ignore-db = informationschema
يقترح هذا التكوين أنه عند تنفيذ أمر على قواعد بيانات mysql
أو informationschema
، فلن يتم تسجيل تلك الأوامر. ومع ذلك، تكمن الأهمية في كيفية تفاعل قاعدة البيانات الافتراضية مع هذه الأوامر.
قواعد لتسجيل السجلات الثنائية
وفقًا لوثائق MySQL:
- إذا كانت قاعدة البيانات الافتراضية تتطابق مع أي من قواعد
binlog-ignore-db
، لن يتم كتابة البيان في السجل. - إذا لم تتطابق قاعدة البيانات الافتراضية مع قواعد البيانات المتجاهلة، سيتم تسجيل الاستعلام.
هذا يعني أنه طالما كنت تنفذ أوامر على قواعد بيانات لا تتطابق مع قواعد التجاهل الخاصة بك، ستُسجل تلك التغييرات في السجلات الثنائية.
الآثار المترتبة على التكرار
عندما تزيل إدخالات binlog-do-db
، قد يبدو أنه يتم تسجيل كل شيء، حيث ستظهر التغييرات في ملف السجل الثنائي. ومع ذلك، لا يضمن تسجيل كل شيء أن هذه السجلات ستُكرر على الخادم التابع.
مشاكل محتملة
- إذا لم يتم تحديد أي مواصفات لـ
binlog-do-db
ولم تتطابق قواعد البيانات المتجاهلة، فقد تسجل MySQL كل شيء، لكن قد لا يستلم الخادم التابع هذه التغييرات. - لحل مشكلات التكرار، قد تحتاج إلى استخدام خيار
replicate-do-db
على الخادم التابع، مما قد يتعارض مع جهود تكوينك المبسطة.
الخاتمة
المغزى هنا هو أن تجاهل إدخالات binlog-do-db
أثناء استخدام binlog-ignore-db
يمكن أن يؤدي إلى سيناريو حيث تسجل MySQL كل شيء باستثناء قواعد البيانات المتجاهلة. ومع ذلك، من المهم التأكد من أنك تحافظ على التكوينات المناسبة على خادمك التابع لضمان عمل التكرار بشكل فعال.
من خلال فهم هذه الفروق الدقيقة في التكوين، يمكنك الحفاظ على إعداد موثوق لتكرار MySQL دون مواجهة تعقيدات غير ضرورية في تكويناتك.
إذا كانت لديك أي أسئلة إضافية حول تكرار MySQL أو التكوينات، فلا تتردد في التواصل!