mysql 日志分割大致有三种方案
- 定时把日志重命名为历史文件,然后通过 mysqladmin 执行 flush-logs 将日志文件描述符定位到新的文件;
- 通过命令定时的更换日志文件的路径 set global slow_query_log_file=;
- 使用 logrotate.
两种都要通过 mysql 的账号密码去登录 mysql, 第二种不用 mv 文件, 所以我认为第二种方式更优雅一些.
以下是我通过第二种方式进行日志分割的脚本:
#!/bin/bash
time=`date "+%Y-%m-%d"`
host="127.0.0.1"
user="root"
passwd="******"
mysql -h$host -u$user -p$passwd -e "set global slow_query_log_file='/data/mysql_data/logs/slow-$time.log';"