基於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上最新的代碼的辦法進行安裝。地址為:

github.com/yoshinorim/m

github.com/yoshinorim/m

在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的腳本:

郵件系統安裝腳本:

調用方式:

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎


推薦閱讀:

scrapy進階,組合多請求抓取Item利器ItemCollector詳解!

TAG:架構 | MySQL | 插件 |