1. 程式人生 > >mysql-bin日誌檔案過大導致磁碟空間不足問題解決方法

mysql-bin日誌檔案過大導致磁碟空間不足問題解決方法

在MySQL資料庫中,mysql-bin.000001、mysql- bin.000002等檔案是資料庫的操作日誌,例如UPDATE一個表,或者DELETE一些資料,即使該語句沒有匹配的資料,這個命令也會儲存到日誌檔案中,還包括每個語句執行的時間,也會記錄進去的。
這樣做主要有以下兩個目的:
1:資料恢復

如果你的資料庫出問題了,而你之前有過備份,那麼可以看日誌檔案,找出是哪個命令導致你的資料庫出問題了,想辦法挽回損失。

2:主從伺服器之間同步資料

主伺服器上所有的操作都在記錄日誌中,從伺服器可以根據該日誌來進行,以確保兩個同步。
處理方法分兩種情況:
1:只有一個mysql伺服器,關閉MySQL的日誌功能步驟:
1) 刪除日誌:
登入後執行:mysql> reset master;
2)禁用MySQL日誌:修改/etc/my.cnf 檔案,找到
log-bin=mysql-bin
binlog_format=mixed
這兩行前面加上#,將其註釋掉,再執行/etc/init.d/mysql restart即可。
如果實在想保留日誌,可以在/etc/my.cnf里加入expire_logs_days = 10 然後重啟mysql,這樣10天就會自動清理日誌。
2:如果你的環境是主從伺服器,那麼就需要做以下操作了。
A:在每個從屬伺服器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日誌。
B:使用SHOW MASTER LOGS獲得主伺服器上的一系列日誌。
C:在所有的從屬伺服器中判定最早的日誌,這個是目標日誌,如果所有的從屬伺服器是更新的,就是清單上的最後一個日誌。
D:清理所有的日誌,但是不包括目標日誌,因為從伺服器還要跟它同步。
清理日誌方法為:
PURGE MASTER LOGS TO 'mysql-bin.010';  
PURGE MASTER LOGS BEFORE '2008-12-19 21:00:00'; 
如果你確定從伺服器已經同步過了,跟主伺服器一樣了,那麼可以直接RESET MASTER將這些檔案刪除。

詳見MySQL官網:
https://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html