記錄一次主從架構下,主庫 /var/lib/mysql 被 200GB+ binlog 撐爆的完整處理流程,含指令、驗證步驟與磁碟釋放結果。
du -sh /var/lib/mysql 顯示 binlog 佔 200GB+PURGE {MASTER | BINARY} LOGS TO 'log_name';
PURGE {MASTER | BINARY} LOGS BEFORE 'YYYY-MM-DD hh:mm:ss';
MASTER 與 BINARY 同義。
SHOW SLAVE STATUS\G 記錄 Master_Log_File 與 Relay_Master_Log_FileSHOW MASTER LOGS 取得所有 binlog 檔名與大小PURGE MASTER LOGS TO '基準檔名';mysql> SHOW SLAVE STATUS\G;
...
Master_Log_File: tc-ns-comment-db00-bin.000162
Relay_Master_Log_File: tc-ns-comment-db00-bin.000162
...
mysql> SHOW MASTER LOGS;
+------------------------------------------+-----------+
| Log_name | File_size |
+------------------------------------------+-----------+
| tc-ns-comment-db00-bin.000001 | 1073741824 |
...
| tc-ns-comment-db00-bin.000162 | 1073741824 |
+------------------------------------------+-----------+
mysql> PURGE MASTER LOGS TO 'tc-ns-comment-db00-bin.000070';
Query OK, 0 rows affected (120.45 sec)
# 等待約 2 分鐘,刪除 000001~000069
mysql> QUIT;
$ du -sh /var/lib/mysql
# 從 200GB+ 降至 50GB 級,釋放超 150GB
ERROR 1513 (HY000)。SHOW SLAVE STATUS\G 確認 Seconds_Behind_Master=0。[mysqld]
expire_logs_days = 7
binlog_format = MIXED
max_binlog_size = 1G
配合監控告警(binlog 總大小 > 50GB 觸發),徹底杜絕磁碟爆滿風險。
此案例驗證:標準流程 + 耐心等待 = 安全釋放空間,零複制中斷。