一、總概
1、MHA介紹
MHA(Master High Availability)是自動的master故障轉移和Slave提升的軟體包.它是基于标準的MySQL複制(異步/半同步).
MHA有兩部分組成:MHA Manager(管理節點)和MHA Node(資料節點).
MHA Manager可以單獨部署在一台獨立機器上管理多個master-slave叢集,也可以部署在一台slave上.MHA Manager探測叢集的node節點,當發現master出現故障的時候,它可以自動将具有最新資料的slave提升為新的master,然後将所有其 它的slave導向新的master上.整個故障轉移過程對應用程式是透明的。
MHA node運作在每台MySQL伺服器上(master/slave/manager),它通過監控具備解析和清理logs功能的腳本來加快故障轉移的。
2、MHA工作原理
-從當機崩潰的master儲存二進制日志事件(binlog events)。
-識别含有最新更新的slave。
-應用差異的中繼日志(relay log)到其它slave。
-應用從master儲存的二進制日志事件(binlog events)。
-提升一個slave為新master。
-使其它的slave連接配接新的master進行複制。
3、MHA工具包:
(1)、 Manager工具:
- masterha_check_ssh : 檢查MHA的SSH配置。
- masterha_check_repl : 檢查MySQL複制。
- masterha_manager : 啟動MHA。
- masterha_check_status : 檢測目前MHA運作狀态。
- masterha_master_monitor : 監測master是否當機。
- masterha_master_switch : 控制故障轉移(自動或手動)。
- masterha_conf_host : 添加或删除配置的server資訊。
(2)、 Node工具(這些工具通常由MHA Manager的腳本觸發,無需人手操作)。
- save_binary_logs : 儲存和複制master的二進制日志。
- apply_diff_relay_logs : 識别差異的中繼日志事件并應用于其它slave。
- filter_mysqlbinlog : 去除不必要的ROLLBACK事件(MHA已不再使用這個工具)。
- purge_relay_logs : 清除中繼日志(不會阻塞SQL線程)。
二、主機部署
三、首先用ssh-keygen實作三台主機之間互相免密鑰登入
注意:如果不能實作任何兩台主機間兩兩可以無密登入,後面的步驟會有問題。
四、安裝MHAmha4mysql-node,mha4mysql-manager 軟體包
1、manager mha4mysql-manager軟體安裝
說明有很多依賴包沒有安裝,解決方法:
再安裝
2、node MHAmha4mysql-node軟體安裝
五、MHA的配置
1、管理機manager上配置MHA檔案
2、masterha_check_ssh工具驗證ssh信任登入是否成功
注意:用ssh-keygen實作三台主機之間互相免密鑰登入決定這一步是否成功。
成功!
3、masterha_check_repl工具驗證mysql複制是否成功
注意:上一篇文章中的master--slaver是否成功決定這一步是否成功。或是MHA檔案配置的使用者賬号有關。
成功。
4、啟動MHA manager,并監控日志檔案
5、測試master(231)當機後,是否會自動切換
6、故障轉移後,用指令恢複原來的master
(1)、在舊master上執行
(2)然後在manager節點上:
過程中一直輸入YES;
這樣的話mysql主從機進行了切換。可以測試一下資料在新的master(232)的表中新增資料後,在新slave(231)對應的表中是否已實作資料同步。
六、MHA已完成配置并進行了測試。但如果是程式連接配接資料庫并不會自動切換IP,那我們如何實作呢,請期待一篇keepalive + VIP安裝配置。