MySQL错误日志和慢查询日志默认不按天轮转,XAMPP自带MySQL/MariaDB无原生日志轮转机制,需借助logrotate(Linux/macOS)或Windows任务计划+批处理脚本配合FLUSH LOGS手动实现归档与清理。

MySQL的错误日志和慢查询日志默认不按天轮转
XAMPP自带的MySQL(通常是MariaDB或旧版MySQL)默认不启用日志自动清理机制,slow_query_log_file 和 error_log 会一直追加写入,文件越滚越大。它没有类似 expire_logs_days 那样的原生配置控制错误日志或慢日志的保留天数——那个参数只对 binary log 生效。
手动配置 slow_query_log_file 轮转需配合脚本 + logrotate(Linux/macOS)或 Windows 任务计划(Windows)
MySQL 本身不支持慢日志按天切割,必须靠外部工具触发 FLUSH SLOW LOGS(MySQL 8.0.14+)或 FLUSH LOGS(对慢日志生效的前提是启用了 log_output = FILE 且文件名含日期变量,但XAMPP默认不这么配)。实际可行路径是:
- 关闭 MySQL 自动写慢日志到固定文件(如
mysql-slow.log),改用log_output = TABLE写入mysql.slow_log表,再定期清表(但表结构无时间索引,查删低效) - 更推荐:保持
log_output = FILE,用外部脚本每天重命名日志 +FLUSH LOGS,再用find或forfiles删除 N 天前的归档文件 - XAMPP 控制面板里点“Shell”打开终端,编辑
/opt/lampp/etc/my.cnf(Linux/macOS)或C:\xampp\mysql\bin\my.ini(Windows),确认已启用慢日志:[mysqld]<br>slow_query_log = 1<br>slow_query_log_file = "/opt/lampp/mysql/data/mysql-slow.log"<br>long_query_time = 2
Windows 下用批处理 + 任务计划实现 7 天日志清理
在 XAMPP 安装目录下新建 rotate-mysql-logs.bat:
@echo off<br>set LOGDIR=C:\xampp\mysql\data<br>set TODAY=%date:~-4,4%%date:~-10,2%%date:~-7,2%<br>move "%LOGDIR%\mysql-slow.log" "%LOGDIR%\mysql-slow-%TODAY%.log" 2>nul<br>"C:\xampp\mysql\bin\mysql.exe" -uroot -e "FLUSH LOGS;"<br>forfiles /p "%LOGDIR%" /s /d -7 /m "mysql-slow-*.log" /c "cmd /c del @path"
然后用 Windows 任务计划程序每天凌晨执行该脚本。注意:forfiles 的日期格式依赖系统区域设置,若失败可改用 PowerShell 脚本替代。
Linux/macOS 下用 logrotate 管理更可靠
创建 /etc/logrotate.d/xampp-mysql:
/opt/lampp/mysql/data/mysql-slow.log {<br> daily<br> missingok<br> rotate 7<br> compress<br> delaycompress<br> notifempty<br> create 644 daemon daemon<br> sharedscripts<br> postrotate<br> /opt/lampp/bin/mysql -uroot -e 'FLUSH LOGS;' > /dev/null 2>&1 || true<br> endscript<br>}
关键点:
-
postrotate中必须调用 XAMPP 自带的mysql客户端(路径是/opt/lampp/bin/mysql,不是系统自带的) - 确保
mysql命令能免密登录(即 root 密码为空,或配置了~/.my.cnf) - 首次运行前先手动执行一次
logrotate -f /etc/logrotate.d/xampp-mysql测试是否报错
MySQL 错误日志(ErrorLog)同理处理,但要注意:XAMPP 的 Apache 和 MySQL 共享同一个 error.log 路径配置,修改前先确认你改的是 MySQL 的 my.cnf 段落,不是 Apache 的 httpd.conf。


















