shell脚本实现Mysql慢日志切割

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

shell脚本实现Mysql慢日志切割_第1张图片
开始编写切割脚本:

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,执行一次切割脚本

亲测有效。

你可能感兴趣的:(shell脚本实现Mysql慢日志切割)