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

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

          最近,我写了个脚本,就是当mysql数据库cpu平均5分钟负载高于18时,自动分析最近5分钟内的慢sql,并把慢sql发送给相应开发人员进行优化。
         同时用pt-kill命令运行超过5分钟的慢sql,以使mysql数据库故障自愈

[root@MySQL02 ~]# cat /usr/local/script/send_slow_sql.sh 

点击(此处)折叠或打开

  1. #!/bin/bash
  2. top5=`uptime |awk '{print $12}' |awk -F',' '{print $1}' |awk -F'.' '{print $1}'`
  3. if [ $top5 -gt 18 ];then
  4. echo -e "大家好: \n 在最近5分钟内,mysql数据库(172.16.2.4)的cpu平均负载是:`uptime |awk -F'users,' '{print $2}'`\n 是由以下慢sql引起的,烦请大家找到各自负责的慢sql进行优化,谢谢。" > /log/slow/report.txt
  5. #echo -e "\n 说明:以下内容是由pt-query-digest分析慢日志得到的,如果你对以下内容有疑问,可以访问:http://blog.csdn.net/seteor/article/details/24017913进行参考。" >> /log/slow/report.txt
  6. echo -e "\n 说明:以下内容是由pt-query-digest工具分析慢日志得到的,如果你对以下内容有疑问,可以百度pt-query-digest进行报告解读。" >> /log/slow/report.txt
  7. echo -e "\n 另外,此邮件是监控脚本自动触发发送,请勿回复本邮件,谢谢!" >> /log/slow/report.txt
  8. pt-query-digest --since=5m /log/slow/slow-query.log >> /log/slow/report.txt
  9. cat /log/slow/report.txt | mail -s "最近5分钟mysql数据库发生了慢sql" chenzhixin@abc.com zhangqiang@abc.com
  10. #用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

        最终得到如下邮件:

        

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28916011/viewspace-2135707/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28916011/viewspace-2135707/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值