導致空間爆掉的MySQL Binary log

某一天Brian告訴我說: Mysql是不是又掛拉? 後來我連到server上發現硬碟空間居然是滿的! 於是開始確認兇手是誰,最後發現居然是Mysql的binary log。
讓硬碟爆掉的兇手,佔了快300G:

MySQL binary log的用途是將你對資料庫的修改記錄起來,讓資料庫如果損毀時可以藉此還原。預設是保留10天,但如果硬碟真的不大,且不是很重要的機器可以這樣做: (重要的機器請加硬碟吧!)

  1. 修改Mysql Config: 在mysql config的[mysqld]區塊下加入或修改expire_logs_days=3,代表只保留3天的binary log。如果不曉得自己的mysql config在哪,可以搜尋看看/etc/init.d/mysqld所include的檔案是哪一個,一般都是my.cnf。
  2. 重新啟動Mysql: service mysqld restart,如果有設定成功且log很多的話,我相信這重新啟動是足夠等一陣子了..
  3. 確認expire_logs_days變數: 執行mysql -u root -p連線至mysql server,執行show variables like 'expire_logs_days';確認變數是否有設定成功。


在參考文章有提另一種方法是透過mysqladmin flush-logs -p指令,但也是要expire_logs_days有設定才能正常使用。

友藏內心獨白: MySQL設定也是很複雜滴..