MySQL的log-bin的日誌功能



裝mysql,運行一段時間後,在mysql目錄下出現一堆類似mysql-bin.000***,從mysql-bin.000001開始一直排列下來,而且佔用了大量硬盤空間,高達幾十個G. 對於這些超大空間佔用量的文件我們應該怎麼辦呢?

那麼mysql數據庫文件夾中的mysql-bin.00001是什麼文件?
mysql-bin.000001、mysql-bin.000002等文件是數據庫的操作日誌,例如UPDATE一個表,或者DELETE一些數據,即使該語句沒有匹配的數據,這個命令也會存儲到日誌文件中,還包括每個語句執行的時間,也會記錄進去的。

這些形如mysql-bin.00001的文件主要是用來做什麼的呢?
1:數據恢復
如果你的數據庫出問題了,而你之前有過備份,那麼可以看日誌文件,找出是哪個命令導致你的數據庫出問題了,想辦法挽回損失。

2:主從服務器之間同步數據
主服務器上所有的操作都在記錄日誌中,從服務器可以根據該日誌來進行,以確保兩個同步。

如果不想要這些文件應該怎麼做呢?
1:只有一個mysql服務器,那麼可以簡單的註釋掉這個選項就行了。
vi /etc/my.cnf把裏面的 log-bin 這一行註釋掉,重啓mysql服務即可。

2:如果你的環境是主從服務器,那麼就需要做以下操作了。
A:在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日誌。
B:使用SHOW MASTER LOGS獲得主服務器上的一系列日誌。
C:在所有的從屬服務器中判定最早的日誌,這個是目標日誌,如果所有的從屬服務器是更新的,就是清單上的最後一個日誌。
D:清理所有的日誌,但是不包括目標日誌,因爲從服務器還要跟它同步。

簡單地說,這些MySQL目錄下的形如mysql-bin.000***的文件時MySQL的事務日誌。

刪除複製服務器已經拿走的binlog是安全的,一般來說網絡狀況好的時候,保留最新的那一個足以。

(缺點是將無法使數據庫恢復先前的狀態)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章