基於MHA插件的MySQL高可用切換架構
摘要:環境: CentOS7+MySQL 5.7 + GTID 業務系統:mainBusiness node1 : 192.168.1.109 port:3109 node2 : 192.168.1.110 port:3110 VIP :192.168.1.88 manager:192.168.1.8 1.背景:除了galera cluster(Mariadb Cluster,GroupReplication,PXC)和KeepAlived之外,業界廣泛使用的MySQL高可用就是MHA架構了。
作者:張銳志
原文
一、環境:
1.背景:
除了galera cluster(Mariadb Cluster,GroupReplication,PXC)和KeepAlived之外,業界廣泛使用的MySQL高可用就是MHA架構了。
MHA作者在離開DeNA加入FACEBOOK後就極少更新了這個工具了。
2.安裝:
RPM包安裝的方式最簡單,但是作者在27天前增加了對從庫上啟用了super-read-only參數的優化,簡而言之就是:當開啟這個參數後,有可能會發生配置文件中的用戶無法對差異事務進行應用的問題。於是增加了判斷super-read-only參數是否開啟的邏輯判斷,若開啟,則先關閉此參數,然後進行應用差異事務然後重新開啟。
所以這裡我們採用編譯Github上最新的代碼的辦法進行安裝。地址為:
https://github.com/yoshinorim/mha4mysql-manager
https://github.com/yoshinorim/mha4mysql-node
在node1和node2上:
配置文件內容:
報警腳本修改:
增加定時清理relay log的腳本:
修改故障切換VIP腳本:
至此:安裝與配置已經完全結束,開始進入運行環節(請務必完成三台主機間的SSH信任)
運行:
檢查masterha_manager運行情況:
故障轉移:
我們將主庫關機,進行觀測整個故障轉移的過程
故障切換解析:
1.每秒檢查MySQL,連續4次無法連上MySQL服務後,進入SSH檢查階段,SSH也不通後,確認實例故障。由於故障實例為主庫,觸發切換主庫的操作。
2.再次讀取配置文件信息,獲取所有註冊的實例,及其切換偏好。關閉manager節點,啟用切換腳本進行切換操作。切換操作的邏輯與之前的《從masterha_master_switch工具簡單分析MHA的切換邏輯》文章中分析的相近。
3.切換主庫成功後,輸出切換報告,同時在/data/mha中生成 mainBusiness.failover.complete文件。接著在新的主庫上進行虛擬IP的掛載,發送故障報告郵件。
附:
兩篇前言文章:
1.千萬要注意定時清理relay log。我在搭建完之後,直接進行了壓測數據的寫入,大量relay log用盡了所有的硬碟空間。這時從庫MySQL服務假死,MHA所有的腳本也都會因為得不到從庫的回應也同樣卡住。
2.另一種簡單的send_report的腳本:
郵件系統安裝腳本:
調用方式:
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀: