hello cartx_child

Knowledgebase

قم بإنشاء استعلام MySQL لمراقبة باش للبرنامج النصي

  • الإعداد لتشغيل البرنامج النصي, إنشاء برنامج نصي لمراقبة الاستعلام MySQL, bash
  • 0

سنناقش في هذه المقالة كيف يمكنك تكوين برنامج نصي
bash بسيط للتحقق من نشاط استعلام MySQL الخاص بك لضمان عدم تعليق الاستعلامات طويلة على الخادم الخاص بك. سيكون هذا البرنامج النصي أيضًا قادرًا على إرسال إشعار إليك عبر البريد الإلكتروني عند مواجهة طلب بحث طويل.
في معظم الحالات ، يجب أن يكون استعلام قاعدة بيانات MySQL قابلاً للتنفيذ في غضون بضع ثوانٍ ، إذا استغرق الأمر لوقت ما أكثر من ذلك ، فقد يكون هناك احتمال لاستمرار تشغيل استعلام MySQL عن قاعدة بيانات قاعدة البيانات مما يؤدي إلى تباطؤ خادمك ، وربما تصبح غير مستقرة.
لمزيد من المعلومات حول أنواع مشكلات استخدام MySQL ، يمكنك قراءة المزيد عن نشاط MySQL المفرط.
يمكن إعداد هذا البرنامج النصي فقط على VPS أو خطة استضافة خادم مخصصة لديك وصولاً إلى الجذر فيها.
 
إنشاء برنامج نصي لمراقبة الاستعلام MySQL
اعتمادًا على مدى تعقيد قاعدة البيانات الخاصة بك ، وعدد مواقع الويب التي تقوم بتشغيلها ، ومقدار حركة المرور التي تحصل عليها ، قد يختلف الحد الأقصى من الوقت الذي ترغب في السماح بتشغيل الاستعلام فيه. أود أن أوصي ببدء شيء محافظ لمدة 120 ثانية أو دقيقتين ، وإذا كنت تقوم بتسجيل الدخول إلى الخادم الخاص بك بعد أن يتم تنبيهك ويبدو أنه لا يزال مستقرًا ، فمن المحتمل أن تزيد مستوى التشجيع إلى مستوى أعلى.
 
ابدأ في تحرير ملف جديد لبرنامج نصي الاستعلامات bash MySQL ، في هذه الحالة سأكون باستخدام محرر النص vim ونصنع ملف جديد يسمى MySQLMon في الدليل الرئيسي للمستخدم باستخدام الأمر التالي:
 
 
vim /home/userna1/MySQLMon
ثم سترغب في النقر على i للدخول إلى الوضع Insert بمجرد تحميل vim وإدخال التعليمة البرمجية التالية:
 
 

#!/bin/bash trigger=120 activeQcount=`mysql -e "show full processlist;" | egrep -v "leechprotect|root|Time" | awk -v T=$trigger '{ if ( $6 > T ) print $0}' | wc -l` if [ $activeQcount -gt 0 ] then echo "=====================================================================================" > /tmp/MySQLMon echo "= MySQLMon has found a new query running for longer than 120 seconds (2 mins)" >> /tmp/MySQLMon echo "=====================================================================================" >> /tmp/MySQLMon date >> /tmp/MySQLMon echo "" >> /tmp/MySQLMon mysql -e "show full processlist;" >> /tmp/MySQLMon echo "=====================================================================================">> /tmp/MySQLMon cat /tmp/MySQLMon | awk -v T=$trigger '{ if ( $6 > T ) print $0}' | \ mail -s"Caught query running longer than $trigger seconds" [email protected] -- -r "[email protected]" fi
 
يمكن أن يبدو هذا الرمز غامقًا بعض الشيء في البداية ، لكن هذا التكسير بسيط للغاية.أولاً ، نحن نعلن عن متغير زناد وتحديد 120 ثانية.ثم نقوم بإعداد متغير activeQcount لإجراء أي استعلامات أطول من قيمة المشغل الخاصة بنا.
 
 
ثم نستخدم bash if statement للتحقق مما إذا كانت قيمة activeQcount أعلى من الصفر ، مما يوضح أن هناك استعلامات تعمل لمدة أطول من قيمة المشغل المحددة لدينا.بعد ذلك ، نبدأ ببساطة في تحويل النص إلى ملف نائب يُسمى / tmp / MySQLMon ، ثم نلتقط في النهاية ملف النائب هذا الذي يقرأه فقط ثم نضعه في الأعلى |إلى وظيفة البريد متبوعة بموضوع نود استخدامه ، وعنوان المستلم ، ثم يمكنك إدخال - - r متبوعة بعنوان البريد الإلكتروني الذي تريد أن تأتي منه الرسالة.
 
عندما تتلقى تنبيهًا عبر البريد الإلكتروني ، سيبدو الأمر كهذا المثال:
 
 
===================================================================================== = MySQLMon has found a new query running for longer than 120 seconds (2 mins) ===================================================================================== Tue Dec 4 15:07:42 EST 2012 40901 userna1_phpb1 localhost userna1_phpb1 Query 342 Sending data INSERT INTO users (userID, name, base64_decode) =======================================================================
 
مهمة cron الإعداد لتشغيل البرنامج النصي MySQLMon
 
الآن يجب أن يكون لديك إعداد برنامج نصي bash الخاص بمراقبة الاستعلام MySQL ، وبعد ذلك ستحتاج إلى إنشاء مهمة cron لتشغيل هذه المهمة.إذا كنت غير مطلع على وظائف cron يمكنك أن تقرأ عن كيفية تشغيل وظيفة cron.
يمكنك استخدام القائمة المنسدلة cPanel لكل 5 دقائق ، مما يجعل المهمة الأخيرة في كرون تبدو كما يلي:
 
 
  1. */5 * * * * bash /home/userna1/MySQLMon

    يجب عليك الآن إعداد برنامج نصي bash بنجاح لمراقبة استعلامات MySQL الخاصة بك للقبض على أي منها طويل الأمد ، وتنبيهك عبر البريد الإلكتروني عندما يمسك أي منها. يجب عليك أيضًا معرفة كيفية إعداد مهمة cron لتشغيل هذا البرنامج النصي على فاصل زمني محدد بحيث يتم تشغيله باستمرار دون المزيد من التدخل اليدوي من نفسك.
     
     
 

 

 
 
 
 
 
 
 

Was this answer helpful?