MySQL實現高可用——MHA

一、簡介

MHA(Master HA)是一款開源的 MySQL 的高可用程序,它爲 MySQL 主從複製架構提供了 automating master failover 功能。MHA 在監控到 master 節點故障時,會提升其中擁有最新數據的 slave 節點成爲新的master 節點,在此期間,MHA 會通過於其它從節點獲取額外信息來避免一致性方面的問題。MHA 還提供了 master 節點的在線切換功能,即按需切換 master/slave 節點。

二、MHA服務

1.服務角色

MHA 服務有兩種角色, MHA Manager(管理節點)和 MHA Node(數據節點):
MHA Manager:
  通常單獨部署在一臺獨立機器上管理多個 master/slave 集羣(組),每個 master/slave 集羣稱作一個 application,用來管理統籌整個集羣。
MHA node:
  運行在每臺 MySQL 服務器上(master/slave/manager),它通過監控具備解析和清理 logs 功能的腳本來加快故障轉移。
  主要是接收管理節點所發出指令的代理,代理需要運行在每一個 mysql 節點上。簡單講 node 就是用來收集從節點服務器上所生成的 bin-log 。對比打算提升爲新的主節點之上的從節點的是否擁有並完成操作,如果沒有發給新主節點在本地應用後提升爲主節點。
在這裏插入圖片描述
由上圖我們可以看出,每個複製組內部和 Manager 之間都需要ssh實現無密碼互連,只有這樣,在 Master 出故障時, Manager 才能順利的連接進去,實現主從切換功能。

2.提供的工具

MHA會提供諸多工具程序, 其常見的如下所示:
Manager節點:
  masterha_check_ssh:MHA 依賴的 ssh 環境監測工具;
  masterha_check_repl:MYSQL 複製環境檢測工具;
  masterga_manager:MHA 服務主程序;
  masterha_check_status:MHA 運行狀態探測工具;
  masterha_master_monitor:MYSQL master 節點可用性監測工具;
  masterha_master_swith:master:節點切換工具;
  masterha_conf_host:添加或刪除配置的節點;
  masterha_stop:關閉 MHA 服務的工具。
Node節點:(這些工具通常由MHA Manager的腳本觸發,無需人爲操作)
  save_binary_logs:保存和複製 master 的二進制日誌;
  apply_diff_relay_logs:識別差異的中繼日誌事件並應用於其他 slave;
  purge_relay_logs:清除中繼日誌(不會阻塞 SQL 線程);
  自定義擴展:
  secondary_check_script:通過多條網絡路由檢測master的可用性;
  master_ip_failover_script:更新application使用的masterip;
  report_script:發送報告;
  init_conf_load_script:加載初始配置參數;
  master_ip_online_change_script;更新master節點ip地址。

3.工作原理

在這裏插入圖片描述
MHA工作原理總結爲以下幾條:
(1) 從宕機崩潰的 master 保存二進制日誌事件(binlog events);
(2) 識別含有最新更新的 slave ;
(3) 應用差異的中繼日誌(relay log) 到其他 slave ;
(4) 應用從 master 保存的二進制日誌事件(binlog events);
(5) 提升一個 slave 爲新 master ;
(6) 使用其他的 slave 連接新的 master 進行復制。

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