在MHA高可用架構中切換的步驟中,主要靠對各個執行個體的relay log檔案新舊程度進行比較,選取最新的relay log進行群組内的資料追加,以此盡可能地來保證資料的安全性,減少資料丢失的數量。這就要求relay log不能被系統自動清除,要保留一段時間,防止主庫挂掉,進行資料補全。
但這就會産生一個問題,在業務持續繁忙時,從庫可能會積累很多relay log,若不及時清除早晚會釀出禍患。
工具:
purge_relay_logs
作用:
清除relay log,盡可能多的清除relay log
安裝:
包含在mha的node子產品之中,不需單獨安裝
--user/password/host/port 指定使用者名/密碼/主機/端口,這裡有個需要注意的地方,雖然提供了主機的參數,但是隻允許127.0.0.1或者localhost兩種取值,即隻能從本地登入。
--workdir 指定硬連結建立的位置,purge_relay_logs使用硬連結的方式删除relay log,需要注意的是,為了保證硬連結的成功,建議硬連結的檔案夾和relay log的目錄在同一個分區。[5.7版本似乎沒有用到]
--disable_relay_log_purge 禁用MySQL的自動清除relay log設定,預設情況下,MySQL自動清除relay log,反映到參數上即是:relay_log_purge=1。若MySQL自動清除relay log,工具在啟動後就會自動結束,不清除任何檔案。當指定了此參數後,工具會禁用MySQL的自動清除relay log設定。
<code>purge_relay_logs --user=sniffer --password=123456 --port=3110 --host=127.0.0.1 --disable_relay_log_purge --workdir=/data/mha/</code>
輸出如下:
解析:1.先檢查是否開啟了自動清理relay log
2.從MySQL中獲得relay log 的檔案名,位置,正在使用的編号,建立硬連結。
3.開啟自動清理,重新整理relay log,生成新的一組relay log後,關閉自動清理,這一步在最大程度上清理了relay log。
通過shell腳本并添加到crontab中定時清理。
<code>crontab -e</code> 增加如下一行:
<code>0 0 */3 * * sh /etc/auto_clean_relay_log.sh</code>
本文轉自 angry_frog 51CTO部落格,原文連結:http://blog.51cto.com/l0vesql/2068336