mysql binlog占满磁盘时,必须用purge binary logs命令安全清理,不可直接rm删除;先执行show master status确认当前文件名,再purge to或before指定安全范围,并验证空间释放。

MySQL binlog 占满磁盘,别直接删文件
直接 rm /opt/lampp/var/mysql/mysql-bin.* 或 del C:
mppmysqldatamysql-bin.* 会导致 MySQL 启动失败、磁盘空间不释放——进程还锁着文件句柄。XAMPP 默认开启 log-bin,几个月就能攒几十 GB。
- 先登录 MySQL 确认:运行
mysql -u root -p后执行SHOW BINARY LOGS;,如果返回几十上百个mysql-bin.000xxx,就是它了 - 查当前正在用哪个:执行
SHOW MASTER STATUS;,结果里的File值(如mysql-bin.000123)不能删 - 安全清理:用
PURGE BINARY LOGS TO 'mysql-bin.000123';(保留该文件及之后的),或PURGE BINARY LOGS BEFORE '2026-05-01 00:00:00'; - 执行完立刻验证:
SHOW BINARY LOGS;列表应变短,df -h或资源管理器里空间实时释放
Apache error_log 和 access_log 膨胀太快
单个 error.log 超过 2GB 很常见,尤其开了调试日志或遇到反复报错。直接清空 > error.log 在 Linux 下无效,Apache 进程仍在写入原文件。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 必须先停服务:XAMPP 控制面板点 Stop Apache(不是 Restart)
- 再删文件:
rm /opt/lampp/apache/logs/error.log(Linux/macOS)或直接删除C: mpppachelogserror.log(Windows) - 改配置启用轮转:编辑
apache/conf/httpd.conf,注释掉原ErrorLog和CustomLog行,换成:
ErrorLog "|bin/rotatelogs.exe -l logs/error-%Y-%m-%d.log 1M" CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-%d.log 1M" common
1M 可改成 86400(秒)实现每日一文件;Windows 路径用正斜杠 / 或双反斜杠 \,单反斜杠会出错PHP 错误日志和 Apache 日志不是一回事
很多人以为改了 Apache 的 error.log 就能抓到 PHP trigger_error() 或致命错误,其实完全无关——PHP 错误走的是独立通道。
- Apache 的
error.log只记录服务器级问题(模块加载失败、权限拒绝等) - PHP 错误由
php.ini控制:确保log_errors = On,并设绝对路径error_log = "C:/xampp/php/logs/php_error.log" - Linux/macOS 下,确认
php/logs/目录归属_www或daemon用户,否则写不进去 - CLI 和 Web 请求用不同
php.ini:测试时务必用浏览器访问脚本,别只跑php test.php
多端口配置后日志爆炸,其实是 VirtualHost 没隔离
配了 :8080 和 :8081 两个端口,但没给每个 <virtualhost></virtualhost> 单独指定日志路径,所有请求全挤进同一个 error.log,再加轮转缺失,几小时就爆盘。
- 每个
<virtualhost></virtualhost>和<virtualhost></virtualhost>块内,必须显式写:
ErrorLog "C:/xampp/apache/logs/error-8080.log" CustomLog "C:/xampp/apache/logs/access-8080.log" common
ErrorLog 和 CustomLog 行,避免继承冲突upload_tmp_dir 在 php.ini 中设为 C:/xampp/tmp,并定期清空该目录(XAMPP 自带的 tmp 目录常被忽略)httpd.exe -t(Windows)或 apachectl configtest(macOS/Linux)验证语法,Syntax OK 才算真正生效my.cnf 或 httpd.conf 后,没真正 Stop → Start,只是点了 Restart——这往往不会重载日志配置,旧日志还在狂写。










