使用MariaDB集羣運維可能涉及的細節之binarylog

瀏覽MariaDB官網看到的一些內容,覺得可能有用就總結一下在此,可能並不全面。看官酌情采納。

1.binarylog問題。數據庫的log時間久了也是佔用很大空間的,在本人以前做第三方支付的經歷來看,生產環境中由於數據庫log把硬盤寫滿造成業務失敗,程序異常。這樣的情形在運維人員意識不到這種情況的時候是很容易出現的。那麼就需要對binarylog來進行清理。在集羣的時候,清理並不是說很隨意的刪除就可以,因爲master和slave直接的數據的同步需要依靠binarylog。那麼下面我將搬運一下如何做binarylog的清理,基本是自己翻譯的英文官網的內容。

binarylog記錄着對數據庫記錄有影響的操作,諸如update insert delete語句,但是它並不記錄select等不影響數據庫記錄的語句。

清理日誌文件

想刪除在服務器上的所有binarylog日誌文件, 執行 RESET MASTER 命令。 想刪除在指定的時間點之前的所有binarylog日誌文件, 或者是一個指定的數字之前, 執行 PURGE BINARY LOGS

如果一個從屬機器是活躍狀態,並且尚未讀取你想要刪除的binarylog日誌文件,那麼語句將會報錯失敗。然而,如果一個從屬機器並沒有連接,且尚未讀取你想要刪除的binarylog文件,那麼文件會被刪除掉;但是這臺從屬機器再次連接的時候將不能夠繼續進行數據複製。

日誌文件也能夠通過使用 expire_logs_days 系統變量進行自動刪除。 此變量默認值爲0(不刪除),但是此值我們可以將其設置爲一個時間或者是某日。在此時間節點之後binarylog日誌文件將被自動刪除。請將此值設置的高於任何一個從屬機器。

如果binarylog日誌索引文件被刪除了,或者是被手動錯誤編輯了,那麼上面所有的binarylog日誌清理將會失敗,這個.index文件是一個特定內容的文本文件,是可以手動編輯或重建的,它只是以數字或者年齡來列出現在存在的binarylog文件。

例子

PURGE BINARY LOGS TO 'mariadb-bin.000063';
PURGE BINARY LOGS BEFORE '2013-04-22 09:55:22';

在複製時安全清理binarylog日誌文件

想在刪除日誌文件時確保複製不被破壞,參照下列步驟來執行:

  • 通過在主機器上運行SHOW BINARY LOGS 來獲取binarylog日誌文件列表。
  • 在每一臺從屬機器上運行 SHOW SLAVE STATUS 來檢查每一個從屬機器正在讀取哪個日誌文件。
  • 找到正在被從屬機器所使用的最早的那個日誌文件,比它更早的日誌文件都是不再被需要的。
  • 如果你想的話,你可以在刪除它們之前進行一下備份。
  • 清理上述在這個日誌文件之前(不包含它本身)的所有日誌文件。


參考網址: https://mariadb.com/kb/en/mariadb/documentation/log-files/binary-log/using-and-maintaining-the-binary-log/


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