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个小时执行一次脚本。