mysql慢日志一般是不开启的,由于mysql慢日志是记录响应时间较长的SOL语句记录,一般小业务公司不建议开启,它会小范围的影响mysql性能。
开启Mysql慢日志,找到mysql的主配置文件: 我的配置文件路径为: /etc/my.cnf
执行此 vim /etc/my.cnf 命令
添加以下内容:
slow_query_log = ON #开启慢日志
slow_query_log_file = /usr/local/mysql/var/slow.log #慢日志存放位置
long_query_time = 1 #SQL语句相应时间超过一秒就记录
重启生效,到 /usr/local/mysql/var/路径查看,会发现多了slow.log文件
cd /user/local/mysql/var
ls
开始编写切割脚本:
vim slow.sh
#!/bin/bash
#date:2019-03-18
#此脚本用于mysql慢日志切割
slowlog=/usr/local/mysql/var/slow.log
u=root
p=123123
mv $slowlog /usr/local/mysql/log/slow.`date +%Y%m%d%H`.log # 将当前慢日志移动到指定路径下
mysqladmin -u$u -p$p --socket=/tmp/mysql.sock flush-logs # 把慢日志文件移动以后,不重启服务不会生成新的日志文件,通过此条命令来刷新日志,会重新生成日志文件。
# 由于本人用的是mysql5.6版本,版本不支持日志类型指定,5.6以上的版本可以 mysqladmin -u$u -p$p --socket=/tmp/mysql.sock flush-logs slow 指定日志类型。
执行脚本可以发现切割成功。本人是一天一切割,所以放到了周期性计划任务如下:
crontad -e
59 23 * * * sh slow.sh #每天的23.59,执行一次切割脚本
亲测有效。