温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-09 23:08:02 来源:ITPUB博客 阅读:219 作者:czxin788 栏目:MySQL数据库
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

        最终得到如下邮件:

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI