定时发送MySQL的TOP 10慢查询SQL

来源:互联网 发布:中央营业税收入数据 编辑:程序博客网 时间:2024/05/17 02:57

帮一个开发朋友实现一个功能:他希望 每天能定时发送前一天的TOP 10 的慢查询SQL 给研发的负责人。

因为不太懂数据库,所以最好不要安装第三方的工具。

因此用shell 写了一个脚本,把这个脚本加入到crontab里,即可实现每天发送前一天的TOP 10 慢查询。

#!/bin/bashMYSQL=`which mysql`MYSLOW=`which mysqldumpslow`BACKUPUSER=rootBACKUPPASS=123456BACKUPPORT=3306BACKUPIP=127.0.0.1#需要将/opt/data/3306/logs 替换为实际的慢查询日志的存放路径LOG_FILE_NAME=/opt/data/3306/logs/`date +%Y%m%d`.log#前一天的慢查询文件名LAST_LOG_FILE_NAME=/opt/data/3306/logs/`date +%Y%m%d -d"-1 day"`.log#存放TOP 10 慢查询的临时文件MAIL_CONTENT_FILE=/opt/data/3306/logs/mail.log#定义邮件的主题SUBJECT="Daily  Mysql Top10 Slow SQL `date +%F' '%T`"#定义收件人的邮箱EMAIL="Xxxxx@XXX.com"mycmd="$MYSQL -u$BACKUPUSER -p$BACKUPPASS -h$BACKUPIP -P$BACKUPPORT "# 因为默认mysql的慢查询日志会不断的增长,因此我们根据日期来设置每天的慢查询文件名。这样即可实现每天一个慢查询文件。$mycmd  -e "set global slow_query_log_file='$LOG_FILE_NAME'"$MYSLOW  -s t -t 10 $LAST_LOG_FILE_NAME>>$MAIL_CONTENT_FILE/usr/bin/dos2unix $MAIL_CONTENT_FILE/bin/mail -s "$SUBJECT" "$EMAIL"<$MAIL_CONTENT_FILErm -rf $MAIL_CONTENT_FILE# 删除7天前的慢查询日志rm -rf  /opt/data/3306/logs/`date +%Y%m%d -d"-7 day"`.log


                                             
0 0
原创粉丝点击