MySQL自动发送慢SQL给开发人员的脚本
最近,我写了个脚本,就是当mysql数据库cpu平均5分钟负载高于18时,自动分析最近5分钟内的慢sql,并把慢sql发送给相应开发人员进行优化。
同时用pt-kill命令运行超过5分钟的慢sql,以使mysql数据库故障自愈
[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分钟内,mysql数据库(172.16.2.4)的cpu平均负载是:`uptime |awk -F'users,' '{print $2}'`\n 是由以下慢sql引起的,烦请大家找到各自负责的慢sql进行优化,谢谢。" > /log/slow/report.txt
-
#echo -e "\n 说明:以下内容是由pt-query-digest分析慢日志得到的,如果你对以下内容有疑问,可以访问:http://blog.csdn.net/seteor/article/details/24017913进行参考。" >> /log/slow/report.txt
-
echo -e "\n 说明:以下内容是由pt-query-digest工具分析慢日志得到的,如果你对以下内容有疑问,可以百度pt-query-digest进行报告解读。" >> /log/slow/report.txt
-
echo -e "\n 另外,此邮件是监控脚本自动触发发送,请勿回复本邮件,谢谢!" >> /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数据库发生了慢sql" chenzhixin@abc.com zhangqiang@abc.com
-
#用pt-kill命令杀运行超过5分钟的慢sql,pt-kill名字在后台执行3分钟后自动退出,这样做的目的是为了让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
然后把上面的send_slow_sql.sh放到crontab每分钟自动调用一次即可。
[root@MySQL02 ~]# crontab -l
#发送慢sql给相应人员
* * * * * /usr/local/script/send_slow_sql.sh
最终得到如下邮件:
网页名称:MYSQL自动发送慢SQL给开发人员的脚本
当前路径:
http://shouzuofang.com/article/jsddic.html