عندما يبدأ خادم MySQL، فإنه يتحقق من سطر الأوامر الخاص به للعمليات لمعرفة ما إذا كان يجب عليه إجراء تسجيل دخول ويفتح ملف السجل المناسب (إذا كان الأمر كذلك). يمكنك جعل الخادم يقوم بإنشاء نوعين رئيسيين من ملفات السجل: ملفات السجل العادية. يقوم بالإبلاغ عن اتصالات العملاء والاستعلامات والأحداث الأخرى المختلفة. عندما يبدأ خادم MySQL، فإنه يتحقق من سطر الأوامر الخاص به للعمليات لمعرفة ما إذا كان يجب عليه إجراء تسجيل دخول ويفتح ملف السجل المناسب (إذا كان الأمر كذلك). يمكنك جعل الخادم يقوم بإنشاء نوعين رئيسيين من ملفات السجل: ملفات السجل العادية. يقوم بالإبلاغ عن اتصالات العملاء والاستعلامات والأحداث الأخرى المختلفة. إنه مفيد لتتبع نشاط الخادم: من يتصل ومن أين وماذا يفعلون.
تغيير السجل
يُبلغ عن الاستعلامات التي تعدل قاعدة البيانات. لا يشير المصطلح "تحديث" في هذا السياق إلى عبارات UPDATE فحسب، بل إلى كافة العبارات التي تقوم بتعديل قاعدة البيانات. ولهذا السبب، فهو يحتوي على سجلات استعلام لـ DELETE وINSERT وREPLACE وCREATE TABLE وDROP TABLE وGRANT وREVOKE. تتم كتابة محتوى سجل التحديث في شكل عبارات SQL، والتي يتم استخدامها كمدخل إلى الخلية. تعد سجلات التحديث والنسخ الاحتياطية مفيدة إذا كان من الضروري استعادة الجدول بعد حدوث عطل. يمكنك استعادة قاعدة البيانات من ملف النسخ الاحتياطي ثم إعادة تشغيل أي استعلامات عدلت قاعدة البيانات بعد ملف النسخ الاحتياطي هذا باستخدام سجل التحديث كمدخل إلى mysql. يؤدي هذا إلى استعادة الجدول إلى حالته في وقت العطل.
لجعل السجلات فعالة، استخدم خيار --log لتمكين التسجيل العادي وخيار --log-update لتمكين تسجيل التحديث. يمكن تحديد هذه الخيارات في سطر الأوامر في mysqld.safe_mysqld أو mysql.server، أو في مجموعة [mysqld] من أحد الخيارات. عند تمكين التسجيل، تتم كتابة ملفات السجل إلى دليل بيانات الخادم بشكل افتراضي.
يوصي المؤلف بأن يكون كلا النوعين من السجلات صالحين عند استخدام MySQL لأول مرة. بعد أن تكتسب بعض الخبرة في التعامل مع MySQL، قد تميل إلى استخدام سجل التحديث فقط لتقليل متطلبات مساحة القرص.
بعد تمكين التسجيل، تأكد من عدم ملء القرص بكمية كبيرة من معلومات السجل، خاصة إذا كان الخادم يتعامل مع عدد كبير من الاستعلامات. يمكن استخدام أوقات تدوير ملفات السجل وانتهاء الصلاحية لمنع ملفات السجل من النمو بشكل غير محدود مع الاحتفاظ بأحدث السجلات المتاحة عبر الإنترنت.
يعمل تدوير ملف السجل على النحو التالي. افترض أن ملف السجل يسمى السجل. في الحلقة الأولى، تتم إعادة تسمية السجل إلى السجل 0 ويبدأ الخادم في كتابة ملف سجل جديد. في الحلقة الثانية، تتم إعادة تسمية log.0 إلى log.1، وتتم إعادة تسمية السجل إلى log.0، ويبدأ الخادم في كتابة ملف سجل جديد آخر. بهذه الطريقة، يمر كل ملف عبر سجل الأسماء 0، وتسجيل 1، وما إلى ذلك. عندما يصل الملف إلى نقطة معينة في الحلقة، يمكن إنهاؤه.
تحديث السجلات وبيانات تحميل البيانات
عادةً، عندما ينفذ الخادم بيان تاريخ التحميل، فإنه يكتب البيان نفسه فقط، وليس محتويات الصف الذي تم تحميله، في سجل التحديث. وهذا يعني أن عمليات الاسترداد باستخدام سجل التحديث لن تكتمل ما لم تظل ملفات البيانات قابلة للوصول. للتأكد من أن هذا آمن، لا ينبغي حذف ملفات البيانات إلا إذا تم عمل نسخة احتياطية من قاعدة البيانات.
النسخ الاحتياطي للنظام
لا تعد سجلات التحديث مفيدة دائمًا لاستعادة قاعدة البيانات، وإذا تسبب تعطل القرص في فقدان سجلات التحديث، فتأكد من إجراء نسخ احتياطية منتظمة لنظام الملفات. من المفيد أيضًا كتابة سجل التحديث على قرص مختلف عن القرص الذي تم تخزين قاعدة البيانات فيه.
على سبيل المثال، إذا كنت تقوم بتدوير السجلات كل يوم وتريد الاحتفاظ بالسجلات لمدة أسبوع، فستحتفظ بالسجل 0 إلى السجل 6. في الحلقة التالية، سيتم إنهاء السجل 6 عن طريق السماح للسجل 5 بالكتابة فوق السجل 6 ليصبح السجل 6 الجديد. بهذه الطريقة، يمكنك الاحتفاظ بالعديد من السجلات دون تجاوز الحد الأقصى للقرص.
سيعتمد تكرار تدوير السجل وعدد السجلات القديمة المحفوظة على مدى انشغال الخادم (تنتج الخوادم النشطة المزيد من رسائل السجل) ومقدار مساحة القرص التي تريد تخصيصها للسجلات القديمة. عند تدوير السجلات العادية، يمكنك استخدام الأمر mysqla d - min Flush-logs لإخبار الخادم بإغلاق ملف السجل الحالي وفتح ملف سجل جديد.
سيبدو البرنامج النصي لإجراء تدوير السجل بشكل منتظم على النحو التالي (يمكن تعديل هذا ليعكس اسم قاعدة السجل الخاص بك وموقع دليل البيانات الخاص بك، وربما عدد السجلات القديمة التي ترغب في الاحتفاظ بها):
من الأفضل تشغيل هذا البرنامج النصي من حساب mysqladm للتأكد من أن ملفات السجل مملوكة لهذا المستخدم. إذا تركت معلمات الاتصال في ملف الخيارات .my.cnf، فلن تحتاج إلى تحديد أي معلمات في أمر mysqladmin الخاص بالبرنامج النصي. إذا لم تقم بذلك، يمكنك إنشاء مستخدم مقيد لا يفعل شيئًا سوى إصدار أوامر التحديث. يمكن بعد ذلك وضع كلمة مرور هذا المستخدم في البرنامج النصي بأقل قدر من المخاطر. إذا كنت تريد القيام بذلك، فيجب أن يكون لدى المستخدم أذونات إعادة التحميل فقط. على سبيل المثال، لاستدعاء تدفق المستخدم وتعيين كلمة مرور، استخدم عبارة GRANT التالية:
منح إعادة التحميل على *.* إلى Flush@localhost الذي تم تحديده بواسطة "flushpass"
عندما تحتاج إلى إجراء عملية تحديث في البرنامج النصي، يمكنك القيام بذلك:
mysqladmin -ufush -pflushpass Flush -logs
في Linux، من الأفضل استخدام logrotate لتثبيت البرنامج النصي mysql-log-rotate في حزمة توزيع MySQL بدلاً من كتابة البرنامج النصي بنفسك. إذا لم يتم تثبيت mysql-log-rotate تلقائيًا من خلال ملف RPM، فيجب عليك التحقق من دليل ملفات الدعم لحزمة توزيع MySQL.
نظرًا للاختلافات في طريقة تعامل الخوادم مع ملفات سجل التحديث، يختلف دوران ملفات السجل قليلاً بين سجلات التحديث والسجلات العادية. إذا طلبت من الخادم استخدام اسم ملف سجل التحديث بدون امتداد (مثل تاريخ التحديث)، فسيقوم الخادم تلقائيًا بإنشاء أسماء ملفات سجل التحديث باستخدام تاريخ التحديث التسلسلي، update.002، وما إلى ذلك. يتم إنشاء سجل تحديث جديد عند بدء تشغيل الخادم وعند تحديث السجل. إذا قمت بتمكين تسجيل التحديث دون تحديد اسم ملف، فسيقوم الخادم بإنشاء تسلسل من ملفات سجل التحديث باستخدام اسم المضيف كاسم أساسي.
عند إنهاء سلسلة من الملفات التي تم إنشاؤها بهذه الطريقة، قد ترغب في إنهائها بناءً على عمرها (وقت آخر تعديل لها) بدلاً من الاسم. والسبب في ذلك هو أنك لا تعرف متى سيتم إصدار أمر Flush-log، فلا يمكنك أن تتوقع إنشاء عدد ثابت من سجلات التحديث في أي فترة زمنية محددة. على سبيل المثال، إذا قمت بعمل نسخة احتياطية من جدول باستخدام mysqldump واستخدمت خيار --flush-logs، فسيتم إنشاء ملف جديد بهذا التسلسل لأسماء سجل التحديث مع كل نسخة احتياطية.
بالنسبة لسجلات التحديث بأسماء الملفات التسلسلية التي يتم إنشاؤها تلقائيًا بواسطة الخادم، يبدو البرنامج النصي لإنهاء السجل على أساس العمر كما يلي:
يقوم أمر البحث بتحديد موقع ملفات سجل التحديث التي تم تعديلها منذ أكثر من أسبوع وحذفها. من المهم استخدام المعلمة -name لاختبار امتداد الملف الرقمي لتجنب حذف الجداول المحددة بواسطة التحديث الخاطئ.
يمكنك أيضًا إخبار الخادم باستخدام اسم ملف سجل التحديث الثابت (إذا رغبت في ذلك)، وهو أمر مفيد إذا كنت تريد تدوير سجل التحديث بنفس طريقة السجل العادي. لاستخدام اسم سجل تحديث ثابت، حدد اسمًا يتضمن ملحقًا. على سبيل المثال، يمكنك بدء تشغيل الخادم باستخدام خيار --log-update=update.log لاستخدام الاسم up date .log. سيتم دائمًا إيقاف تشغيل الخادم وفتح السجل عند تلقي أمر Flush-logs، لكن الخادم لن يقوم بإنشاء ملفات جديدة في كل مرة. في هذه الحالة، يختلف البرنامج النصي لتدوير السجل لسجل التحديث والبرنامج النصي للسجل العادي فقط في الاسم الأساسي لملف التدوير.
إذا كنت تريد أتمتة عملية تدوير السجل وإنهائه، فاستخدم cron. من المفترض أن البرامج النصية لتدوير السجلات العادية وسجلات التحديث هي سجلات تدوير وسجلات تاريخ تحديث ويتم تثبيتها في الدليل /usr/user/mysql/bin. قم بالتسجيل كمستخدم mysqlladm، ثم استخدم الأمر التالي لتحرير ملف crontab الخاص بمستخدم mysqladm: % crontab -e
يسمح هذا الأمر بتحرير النسخة الاحتياطية لملف crontab الحالي (قد يكون فارغًا إذا لم يتم ذلك مسبقًا). أضف أسطرًا إلى الملف كما يلي:
يخبر هذا الإدخال cron بتشغيل هذا البرنامج النصي كل صباح في الساعة 4 صباحًا. يمكنك تغيير الوقت أو جدولته حسب الحاجة. راجع صفحة دليل crontab للحصول على التعليمات.
-