答案是检查系统logrotate配置文件,如/etc/logrotate.d/mysql,确认日志路径与MySQL实际路径一致,并通过logrotate -d测试配置,确保flush-logs命令可执行,实现日志自动轮转。

在 MySQL 中,日志轮转(log rotation)通常不是由 MySQL 自身直接管理的,而是依赖操作系统层面的日志管理工具,比如 linux 下的 logrotate。因此,查看日志轮转配置需要检查系统配置文件,而不是 MySQL 内部命令。
1. 检查 logrotate 配置文件
大多数 Linux 发行版使用 /etc/logrotate.d/ 目录存放服务特定的轮转配置。MySQL 的日志轮转通常在此目录下有一个独立的配置文件。
查看是否存在 MySQL 的 logrotate 配置:
cat /etc/logrotate.d/mysql # 或 cat /etc/logrotate.d/mysqld
如果文件存在,内容可能类似:
/var/log/mysqld.log { daily rotate 7 compress missingok create 640 mysql mysql postrotate /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs > /dev/null 2>&1 || true endscript }
说明:
- daily:每天轮转一次
- rotate 7:保留 7 个旧日志文件
- compress:压缩旧日志
- postrotate:轮转后执行 flush-logs,让 MySQL 切换到新日志文件
2. 确认 MySQL 日志路径
logrotate 需要知道 MySQL 日志的实际路径。可以通过 MySQL 命令查看当前错误日志、慢查询日志等位置:
mysql -u root -p -e "SHOW VARIABLES LIKE 'log_error';" mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query_log_file';" mysql -u root -p -e "SHOW VARIABLES LIKE 'general_log_file';"
确保这些路径与 /etc/logrotate.d/mysql 中定义的一致。
3. 手动测试 logrotate
可以模拟运行 logrotate 来验证配置是否生效:
logrotate -d /etc/logrotate.d/mysql
-d 表示 debug 模式,不会真正执行,仅显示过程。
若要强制执行一次轮转(谨慎操作):
logrotate -f /etc/logrotate.d/mysql
4. 检查 MySQL 是否支持 flush-logs
logrotate 中常通过 mysqladmin flush-logs 触发日志切换。需确认该命令可正常执行:
mysqladmin -u root -p flush-logs
成功执行后,MySQL 会关闭并重新打开日志文件,配合轮转避免写入旧文件。
基本上就这些。MySQL 本身不提供“查看日志轮转配置”的命令,关键在于系统级的 logrotate 配置和日志路径一致性。只要配置正确,日志就能自动归档和清理。


