mysql日志占满磁盘主因是未清理的binlog,需用purge命令安全删除而非直接rm;开发环境建议注释log-bin配置或设置expire_logs_days/binlog_expire_logs_seconds自动过期,并重启mysql生效。

MySQL日志占满磁盘,先确认是不是 binlog 在撑爆空间
XAMPP 默认开启 log-bin,日志文件会持续写入 /opt/lampp/var/mysql/mysql-bin.*(Linux)或 C:\xampp\mysql\data\mysql-bin.*(Windows)。这些文件不清理,几个月就能吃掉几十 GB。别急着删文件,先登录 MySQL 看一眼:
mysql -u root -p SHOW BINARY LOGS;
如果返回十几甚至上百个 mysql-bin.000xxx,基本就是它了。注意:直接 rm 或删除文件会导致 MySQL 启动失败或崩溃——MySQL 进程仍持有句柄,磁盘空间也不会释放。
安全清理 binlog:用 PURGE 命令,不是 rm
必须通过 MySQL 内部命令清理,让服务自己释放文件句柄。执行前确保没启用主从复制(XAMPP 单机环境通常没开,但要确认):
- 登录后运行:
PURGE BINARY LOGS BEFORE '2026-04-01 00:00:00';(删掉指定时间前所有 binlog) - 或按文件名删:
PURGE BINARY LOGS TO 'mysql-bin.000123';(保留从该文件开始的日志) - 执行完立刻验证:
SHOW BINARY LOGS;,列表应明显变短 - 再查磁盘:
df -h,空间应实时释放
错误操作示例:rm /opt/lampp/var/mysql/mysql-bin.* —— 表面删了,df 仍显示 100%,MySQL 可能拒绝启动。
一劳永逸:关掉 binlog 或设自动过期
开发/测试环境根本不需要 binlog。编辑 XAMPP 的 MySQL 配置文件:
- Linux 路径:
/opt/lampp/etc/my.cnf - Windows 路径:
C:\xampp\mysql\bin\my.ini - 找到这两行并注释掉:
log-bin=mysql-bin和binlog_format=mixed(前面加#) - 或者不关闭,改自动清理:
expire_logs_days = 3(MySQL 5.7)或binlog_expire_logs_seconds = 259200(MySQL 8.0+,即 3 天) - 保存后重启 MySQL:
/opt/lampp/lampp restartmysql(Linux)或点 XAMPP 控制面板的 Stop/Start
改完配置不重启,设置不会生效;重启后检查 SHOW VARIABLES LIKE 'log_bin'; 应返回 OFF(若已关闭)。
其他日志也要盯住:error log 和 slow log
虽然 binlog 是主力“空间杀手”,但 error.log 和 slow_query.log 长期不处理也会堆积。它们位置固定:
- Linux:
/opt/lampp/var/mysql/hostname.err(错误日志)、/opt/lampp/var/mysql/hostname-slow.log(慢日志) - Windows:
C:\xampp\mysql\data\YOURPCNAME.err等 - 清理方式简单:停 MySQL → 移走或清空文件 → 启动 MySQL(它会新建)
- 想长期省心,可配
logrotate(Linux)或 Windows 计划任务定期归档压缩
真正容易被忽略的是:XAMPP 自带的 Apache、Tomcat 日志也常混在同一个磁盘分区里,df -h 显示根目录满时,得用 du -sh /opt/lampp/* 逐层看,别只盯着 MySQL 目录。











