`
尤文武
  • 浏览: 9363 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Linux通过Mutt发送Mysql慢查询邮件

阅读更多
项目在上线之后,经常会有客户反馈某个页面查询很慢,解决方案是我们找到对应的SQL来分析索引问题,其实解决起来并不麻烦,但是给客户造成的体验就不好了,大部分执行效率比较差的语句应该是在开发或者测试阶段就优化完成的,mysql提供了慢查询日志,默认是关闭的,可以通过my.cnf(my.ini)来配置打开
log_slow_queries	= /var/log/mysql/mysql-slow.log
long_query_time = 1

参数一眼就能看明白了,完了以后需要重启mysql服务,根据配置,如果一条查询语句执行时间超过1秒,就会在日志文件中记录下来。

文件有了,但是要求开发人员每天登录到服务器上看那些语句执行慢肯定是不现实的,所以我通过邮件的形式把这个文件发出来

linux上发邮件的工具有很多,我这里用的是mutt,也是我跟sendmail比较之后觉得相对好用的,安装很简单
sudo apt-get install mutt


接下来就是发送邮件,我是通过shell脚本结合cron来定时发送的,关于shell脚本有个不错的教程http://c.biancheng.net/cpp/shell/,脚本如下
#!/bin/bash

file="/var/log/mysql/mysql-slow.log"
tmpFile="/home/b2b/logs/mysql-slow-result.log"

#create the $tmpFile
if [ ! -e $tmpFile ]
then echo "$tmpFile doesn't exist, will create it";touch $tmpFile
else > $tmpFile
fi

#copy content from $file to $tmpFile
if [ -s $file ]
then cat $file > $tmpFile; > $file
fi

#send email
if [ -s $tmpFile ]
then echo -e "Hello Administrator, \nthis is the slow query log from 192.168.0.169, please check it!" | mutt -s "Slow Query" -a $tmpFile -e "my_hdr From:Pracbiz<no_reply@pracbiz.com>" -- wwyou@pracbiz.com; echo "Slow Query Email send Successfully"
else echo "No slow query logs need to send"
fi

脚本会建立一个临时文件mysql-slow-result.log,每次把mysql-slow.log内容拷贝到临时文件,然后把mysql-slow.log清空,最后把这个临时文件作为附件发出去,这样做的好处时每次发送的内容都是新生成的,如果日志为空则不发送邮件。
脚本保存为slowQuery.sh,需要执行
sudo chmod +x slowQuery.sh
让脚本可执行。
最后把任务添加到cron中
0 0 * * * /home/b2b/script/slowQuery.sh



1
2
分享到:
评论

相关推荐

    shell脚本可配置备份mysql5.7.8以前数据库异常mail465发邮件.rar

    本资源涉及的是一个shell脚本,用于自动化备份MySQL 5.7.8及更早版本的数据库,并在发生异常时通过mail465服务发送邮件通知。下面将详细解释其中涉及的技术点。 首先,`shell脚本`是一种使用Bash或其他shell语言...

    mysql自动备份shell脚本

    这个脚本与上一个类似,但它将压缩后的备份文件通过电子邮件发送到指定地址,而不是上传到FTP。这里使用了`mutt`命令来发送邮件。同样,你需要替换MySQL的登录信息,以及要备份的数据库名,并提供邮件接收地址。 ...

    shell脚本定时执行logstash任务异常mail465发邮件.rar

    本案例中,我们关注的是一个与shell脚本、MySQL数据库、Elasticsearch(通常简称为ES)以及通过SMTP服务器(如mail465)发送邮件相关的任务。这个压缩包文件"shell脚本定时执行logstash任务异常mail465发邮件.rar...

    linux常用命令学习日志

    * echo “内容” | mutt –s “标题” –a lot.txt hw@dgzq.com.cn:发送邮件带附件 八、 定时执行 * crontab:设置定时执行 * */3 * * * * hw.sh:每间隔三分钟运行一次 九、 任务管理 * top:显示进程信息 * ...

    CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中

    这两个工具允许脚本将备份文件作为附件通过邮件发送,以便在需要时进行恢复。 2. **FTP客户端程序**:由于我们需要将备份文件上传到FTP服务器,所以需要安装FTP客户端。在CentOS中,可以使用`yum install ftp`来...

    cPanel Cron jobs定时备份和优化网站程序以及数据

    需要编写一个Linux bash shell脚本来导出数据库、压缩备份文件,然后通过电子邮件发送。 2. **编写备份脚本** 使用文本编辑器创建一个脚本,例如`dbbackup.sh`,包含以下命令: - `cd /home/cPanel用户名/backup`...

Global site tag (gtag.js) - Google Analytics