刪除MySQL二進(jìn)制日志的3種方法
1.RESET MASTER
可以刪除列于索引文件中的所有二進(jìn)制日志,把二進(jìn)制日志索引文件重新設(shè)置為空,并創(chuàng)建一個(gè)新的二進(jìn)制日志文件
2.PURGE MASTER LOGS
語(yǔ)法
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于刪除列于在指定的日志或日期之前的日志索引中的所有二進(jìn)制日志。這些日志也會(huì)從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個(gè)。
例如:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';
BEFORE變量的date自變量可以為'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同義詞。
如果您有一個(gè)活性的從屬服務(wù)器,該服務(wù)器當(dāng)前正在讀取您正在試圖刪除的日志之一,則本語(yǔ)句不會(huì)起作用,而是會(huì)失敗,并伴隨一個(gè)錯(cuò)誤。不過(guò),如果從屬服務(wù)器是休止的,并且您碰巧清理了其想要讀取的日志之一,則從屬服務(wù)器啟動(dòng)后不能復(fù)制。當(dāng)從屬服務(wù)器正在復(fù)制時(shí),本語(yǔ)句可以安全運(yùn)行。您不需要停止它們。
要清理日志,需按照以下步驟:
1.
在每個(gè)從屬服務(wù)器上,使用SHOW SLAVE STATUS來(lái)檢查它正在讀取哪個(gè)日志。
2.
使用SHOW MASTER LOGS獲得主服務(wù)器上的一系列日志。
3.
在所有的從屬服務(wù)器中判定最早的日志。這個(gè)是目標(biāo)日志。如果所有的從屬服務(wù)器是更新的,這是清單上的最后一個(gè)日志。
4.
制作您將要?jiǎng)h除的所有日志的備份。(這個(gè)步驟是自選的,但是建議采用。)
5.
清理所有的日志,但是不包括目標(biāo)日志。
3. expire_logs_days參數(shù)
二進(jìn)制日志自動(dòng)刪除的天數(shù)。默認(rèn)值為0,表示“沒(méi)有自動(dòng)刪除”。啟動(dòng)時(shí)和二進(jìn)制日志循環(huán)時(shí)可能刪除
expire_logs_days numeric GLOBAL
在my.cnf配置文件【mysqld】段中加入,重啟MySQL服務(wù),例:
expire_logs_days=3
刪除3天以前的日志
注:當(dāng)然需要考慮有slave情況下的影響