本篇文章更新時間:2020/03/05
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
主機空間爆滿不夠用,這件事隨著經營一段時間後非常有機會發生。其中一個原因可能與 MySQL 的 Binlog 記錄檔案也脫離不了關係。
關於 Binlog 網路資源已經很多介紹,這裡也不多提了。就是一種帶有時序的 SQL 指令紀錄檔案。
由於 MySQL 在 Replication 模式下 Master 產生的 Binlog 是 Slave 同步的重要檔案(預設名 mysql-bin.000XXX)。如果因為這些檔案太大導致空間不夠用需要縮減,那要非常小心的操作,絕對不能冒然自己隨意刪除。
首先到 每一個 Slave
的 MySQL 主機上確認同步到哪份 Binlog 了:
SHOW SLAVE STATUS;
找到與記下那個最小的設定紀錄檔案名稱末端編號
。再 Master
主機上確認紀錄檔案:
SHOW MASTER LOGS;
然後清除這邊號之前的紀錄:(假設最小的是 055)
PURGE MASTER LOGS TO 'mysql-bin.000054';
這樣一來就能把已經同步過的紀錄檔案刪除,保留正在同步的紀錄檔案等待同步。
如果要一次全清不管他的話(又或是已經都同步完了),可以輸入:
RESET MASTER;
把紀錄檔 Binlog 一次全部刪除!
後記
主機容量會爆掉的可能性很多,使用量越高更是越快,有時候不需要保留太多天份的檔案備存,所以可以把 binlog_expire_logs_seconds
設定改小一點,此設定單位為秒數。(舊版本的 MySQL 是 expire_logs_days
用天為單位去除過期紀錄)。