刪除龐大的MySQL binlog實(shí)操
以下的文章主要描述的是清理刪除龐大的MySQL binlog的實(shí)際操作方案,我們是在MySQL master/slave架構(gòu)的環(huán)境下對清理刪除龐大的MySQL binlog進(jìn)行操作,以下就是文章的具體內(nèi)容描述。
問題:主庫硬盤不足s
原因:MySQL的var下大量bin二進(jìn)制log,200多個(gè)g啊
目標(biāo):安全刪除MySQL binlog
方法:網(wǎng)上搜搜關(guān)鍵詞“MySQL bin文件 刪除”,還真有~~
相關(guān)語句:
- PURGE {MASTER | BINARY} LOGS TO 'log_name'
- PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于刪除列于在指定的日志或日期之前的日志索引中的所有二進(jìn)制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個(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)前正在讀取您正在試圖刪除的日志之一,則本語句不會起作用,而是會失敗,并伴隨一個(gè)錯誤。不過,如果從屬服務(wù)器是休止的,并且您碰巧清理了其想要讀取的日志之一,則從屬服務(wù)器啟動后不能復(fù)制。當(dāng)從屬服務(wù)器正在復(fù)制時(shí),本語句可以安全運(yùn)行。您不需要停止它們。
刪除龐大的MySQL binlog 要清理日志,需按照以下步驟:
1. 在每個(gè)從屬服務(wù)器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個(gè)日志。
2. 使用SHOW MASTER LOGS獲得主服務(wù)器上的一系列日志。
3. 在所有的從屬服務(wù)器中判定最早的日志。這個(gè)是目標(biāo)日志。如果所有的從屬服務(wù)器是更新的,這是清單上的最后一個(gè)日志。
4. 制作您將要刪除的所有日志的備份。(這個(gè)步驟是自選的,但是建議采用。)
5. 清理所有的日志,但是不包括目標(biāo)日志
實(shí)踐:
從庫下---
MySQL> show slave status\G;
……
Master_Log_File: tc-ns-comment-db00-bin.000162
Relay_Master_Log_File: tc-ns-comment-db00-bin.000162
……
主庫下---
MySQL> show master log;
…………一堆堆
MySQL> PURGE MASTER LOGS TO 'tc-ns-comment-db00-bin.000070';
……等待n長時(shí)間
- MySQL>quit
- $du -sh ./
減少了好多g啊,世界清凈了~~
上述的相關(guān)內(nèi)容就是對刪除龐大的MySQL binlog的描述,希望會給你帶來一些幫助在此方面。