【实用脚本】MySQL慢查询日志的切割与清理

Tanglu Shell 2020-02-08 4740 0

MySQL的慢查询日志默认是全部写在同一个文件中,随着日志量的增大,这个文件的体积也会越来越大,后期进行日志分析则会消耗很多不必要的时间。虽然通过logratate可以配置日志轮询,但是相对麻烦,这里推荐使用最简单的cp命令对慢日志进行备份实现按天切割的效果

DATE=`date +'%Y%m%d'`
cp -ar /data/dblog/mysql3310/mysql.slow  /data/dblog/mysql3310/mysql.slow.${DATE}
>/data/dblog/mysql3310/mysql.slow

这里有个问题需要注意,如果是单纯的想去清理慢日志,直接使用echo >这样是不行的,因为文件句柄还被占用,磁盘空间并不会得到释放,所以正确的做法是增加一个mysqladmin命令对慢日志进行刷新的步骤

#!/bin/bash
slowlog=/data/dblog/mysql3310/mysql.slow
mv $slowlog /data/dblog/mysql3310/mysql.slow.`date +%Y%m%d`
mysqladmin -uroot -p123456 -S /tmp/mysql3310.sock flush-logs slow 2>/dev/null


评论