加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL自动发送慢SQL给开发人员的脚本

发布时间:2022-04-06 10:36:11 所属栏目:MySql教程 来源:互联网
导读:最近,我写了个脚本,就是当mysql数据库cpu平均5分钟负载高于18时,自动分析最近5分钟内的慢sql,并把慢sql发送给相应开发人员进行优化。 同时用pt-kill命令运行超过5分钟的慢sql,以使mysql数据库故障自愈 [root@MySQL02 ~]# cat /usr/local/script/send_
          最近,我写了个脚本,就是当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

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读