本篇文章更新時間:2020/03/05
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持


主機空間爆滿不夠用,這件事隨著經營一段時間後非常有機會發生。其中一個原因可能與 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 用天為單位去除過期紀錄)。


Share:

作者: Chun

WordPress 社群貢獻者、開源社群推廣者。專注於 WordPress 外掛開發、網站效能最佳化、伺服器管理,以及 iDempiere 開源 ERP 導入與客製開發。曾參與 WordCamp Taipei 等社群活動,GitHub Arctic Code Vault Contributor。提供資訊顧問、WordPress 開發教學、主機最佳化與企業 ERP 整合服務。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon