MySQL慢查询日志切割

众所周知,MySQL是属于磁盘IO密集型的服务,在生产环境中为了不让产生不必要的IO开销,慢查询日志一般都是将其关闭的。但在进行MySQL性能性能分析或SQL优化时需要将慢查询日志打开,如果每天查询请求比较多的情况下,慢查询日志很快就会写的很大,给我们分析日志带来很大不便,所以我们需要将日志进行切割,废话不多说,下面给多一个shell脚本例子对MySQL慢查询日志按天进行切割

1、提供日志切割脚本

[root@localhost ~]# vi cut_mysql_slow_query_log.sh
#!/bin/bash
#
# MySQL慢查询日志切割
#
# 使用说明:添加到定时任务,每天零点执行
#
# Author:沉醉寒风
# Email:liaoronghui@vip.qq.com

# 获取当前日期
T_date=$(date +%F)

# 定义日志存放目录
Log_d='/var/log/mysql'

# 日志切割步骤
if [ -d ${Log_d} ];then
    /usr/local/mysql/bin/mysql -e "set global slow_query_log_file='${Log_d}/slow_query_${T_date}.log';"
else
    mkdir ${Log_d}
    setfacl -m u:mysql:rwx ${Log_d}
    /usr/local/mysql/bin/mysql -e "set global slow_query_log_file='${Log_d}/slow_query_${T_date}.log';"
fi

2、设置定时任务

[root@localhost ~]#crontab -e
0 0 * * * bash /root/cut_mysql_slow_query_log.sh

 

脚本写的比较简单,只是给读者提供一个思路。如果按天切割日志还是比较大的话还可以缩短切割时间,比如说12个小时切割一次,这时就可以将日期格式改变一下,改成日志加时间的格式,然后再将定时任务设置为每12个小时执行一次脚本。