MYSQL自動(dòng)發(fā)送慢SQL給開發(fā)人員的腳本
最近,我寫了個(gè)腳本,就是當(dāng)mysql數(shù)據(jù)庫cpu平均5分鐘負(fù)載高于18時(shí),自動(dòng)分析最近5分鐘內(nèi)的慢sql,并把慢sql發(fā)送給相應(yīng)開發(fā)人員進(jìn)行優(yōu)化。
同時(shí)用pt-kill命令運(yùn)行超過5分鐘的慢sql,以使mysql數(shù)據(jù)庫故障自愈
[root@MySQL02 ~]# cat /usr/local/script/send_slow_sql.sh
-
#!/bin/bash
-
top5=`uptime |awk '{print $12}' |awk -F',' '{print $1}' |awk -F'.' '{print $1}'`
-
if [ $top5 -gt 18 ];then
-
echo -e "大家好: \n 在最近5分鐘內(nèi),mysql數(shù)據(jù)庫(172.16.2.4)的cpu平均負(fù)載是:`uptime |awk -F'users,' '{print $2}'`\n 是由以下慢sql引起的,煩請(qǐng)大家找到各自負(fù)責(zé)的慢sql進(jìn)行優(yōu)化,謝謝。" > /log/slow/report.txt
-
#echo -e "\n 說明:以下內(nèi)容是由pt-query-digest分析慢日志得到的,如果你對(duì)以下內(nèi)容有疑問,可以訪問:http://blog.csdn.net/seteor/article/details/24017913進(jìn)行參考。" >> /log/slow/report.txt
-
echo -e "\n 說明:以下內(nèi)容是由pt-query-digest工具分析慢日志得到的,如果你對(duì)以下內(nèi)容有疑問,可以百度pt-query-digest進(jìn)行報(bào)告解讀。" >> /log/slow/report.txt
-
echo -e "\n 另外,此郵件是監(jiān)控腳本自動(dòng)觸發(fā)發(fā)送,請(qǐng)勿回復(fù)本郵件,謝謝!" >> /log/slow/report.txt
-
pt-query-digest --since=5m /log/slow/slow-query.log >> /log/slow/report.txt
-
cat /log/slow/report.txt | mail -s "最近5分鐘mysql數(shù)據(jù)庫發(fā)生了慢sql" chenzhixin@abc.com zhangqiang@abc.com
-
#用pt-kill命令殺運(yùn)行超過5分鐘的慢sql,pt-kill名字在后臺(tái)執(zhí)行3分鐘后自動(dòng)退出,這樣做的目的是為了讓mysql故障自愈
pt-kill --no-version-check --host=localhost --user=root --password='hy_QWSA_root' --port=3306 --daemonize --log=/log/killed_query.log --run-time=180s --busy-time=300s --idle-time=5s --match-command=Query --victims all --kill