程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 刪除龐大的MySQL binlog實操

刪除龐大的MySQL binlog實操

編輯:MySQL綜合教程

以下的文章主要描述的是清理刪除龐大的MySQL binlog的實際操作方案,我們是在MySQL master/slave架構的環境下對清理刪除龐大的MySQL binlog進行操作,以下就是文章的具體內容描述。

問題:主庫硬盤不足s

原因:MySQL的var下大量bin二進制log,200多個g啊

目標:安全刪除MySQL binlog

方法:網上搜搜關鍵詞“MySQL bin文件 刪除”,還真有~~

相關語句:

  1. PURGE {MASTER | BINARY} LOGS TO 'log_name'  
  2. PURGE {MASTER | BINARY} LOGS BEFORE 'date'  

用於刪除列於在指定的日志或日期之前的日志索引中的所有二進制日志。這些日志也會從記錄在日志索引文件中的清單中被刪除,這樣被給定的日志成為第一個。

例如:

  1. PURGE MASTER LOGS TO 'MySQL-bin.010';  
  2. PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26'; 

BEFORE變量的date自變量可以為'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同義詞。

如果您有一個活性的從屬服務器,該服務器當前正在讀取您正在試圖刪除的日志之一,則本語句不會起作用,而是會失敗,並伴隨一個錯誤。不過,如果從屬服務器是休止的,並且您碰巧清理了其想要讀取的日志之一,則從屬服務器啟動後不能復制。當從屬服務器正在復制時,本語句可以安全運行。您不需要停止它們。

刪除龐大的MySQL binlog 要清理日志,需按照以下步驟:

1. 在每個從屬服務器上,使用SHOW SLAVE STATUS來檢查它正在讀取哪個日志。

2. 使用SHOW MASTER LOGS獲得主服務器上的一系列日志。

3. 在所有的從屬服務器中判定最早的日志。這個是目標日志。如果所有的從屬服務器是更新的,這是清單上的最後一個日志。

4. 制作您將要刪除的所有日志的備份。這個步驟是自選的,但是建議采用。)

5. 清理所有的日志,但是不包括目標日志

實踐:

從庫下---

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長時間

  1. MySQL>quit  
  2. $du -sh ./  

減少了好多g啊,世界清淨了~~

上述的相關內容就是對刪除龐大的MySQL binlog的描述,希望會給你帶來一些幫助在此方面。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved