df -h 顯示磁碟 100%du -sh /var/lib/mysql 發現 mysql-bin.* 佔用絕大部分空間-- 查看當前值 (預設 0 = 永不過期)
SHOW VARIABLES LIKE 'expire_logs_days';
-- 動態生效 (重啟失效)
SET GLOBAL expire_logs_days = 7;
-- 永久生效 (my.cnf)
[mysqld]
expire_logs_days = 7
# 或 MySQL 8.0+
binlog_expire_logs_seconds = 604800
-- 刪除指定檔案之前的所有 Binlog
PURGE MASTER LOGS TO 'mysql-bin.010';
-- 刪除指定時間之前的所有 Binlog
PURGE MASTER LOGS BEFORE '2023-06-22 13:00:00';
PURGE MASTER LOGS BEFORE DATE_SUB(NOW(), INTERVAL 3 DAY);
⚠️ 警告:若有從庫正在同步這些 Binlog,清理會導致從庫報錯斷開。執行前確認:
SHOW SLAVE STATUS\G -- 確認 Master_Log_File / Read_Master_Log_Pos
SHOW PROCESSLIST; -- 確認無佈署中的備份/同步任務
[mysqld]
max_binlog_size = 100M # 單檔上限 (預設 1GB)
# MySQL 8.0 無直接限制總量參數,靠 expire_logs_days 控制
expire_logs_days = 7 (視從庫延遲容忍度調整)relay_log_purge = ON (預設),relay_log_space_limit 限制中繼日誌總量FLUSH LOGS 產生新 Binlog,備份包含索引檔disk usage% + binlog count/size 告警PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 1 DAY)expire_logs_days 並重啟