MySQL 二進制日誌(Binlog)用於主從複制與時間點恢復,但長期累積會佔用大量磁盤空間。本文說明安全清理與永久禁用的操作步驟與風險提示。
# 刪除所有 Binlog 文件(謹慎操作,建議先備份)
rm -f /usr/local/mysql/var/mysql-bin.*
# 重啟服務使變更生效(LNMP 環境示例)
/root/lnmp restart
⚠️ 風險提示: 直接刪除文件會導致主從複制中斷、PURGE BINARY LOGS 記錄不一致。生產環境建議使用 SQL 命令清理:
-- 刪除指定文件之前的所有日誌
PURGE BINARY LOGS TO 'mysql-bin.000123';
-- 或按時間清理(保留 7 天)
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);
編輯配置文件 /etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 區段註釋或移除相關行:
[mysqld]
# log-bin=mysql-bin # 註釋此行禁用 Binlog
# binlog_format=mixed # 同步註釋
修改後重啟 MySQL 服務生效。
[mysqld]
log-bin=mysql-bin
binlog_format=ROW
expire_logs_days=7 # 自動清理 7 天前日誌
max_binlog_size=100M # 單文件上限 100MB
binlog_expire_logs_seconds=604800 # MySQL 8.0+ 推薦用秒數
此配置兼顧「時間點恢復能力」與「磁盤空間可控」,適合大多數生產環境。
mysqldump 全量導出,禁用 Binlog 可接受。