【MySQL】MySQL高可用架構之MHA

1、關於MHA

MHA(Master HA)是一款開源的MySQL的高可用程序,它爲MySQL主從複製架構提供了automating master failover 功能。MHA在監控到master節點故障時,會提高其中擁有最新數據的slave節點成爲新的master節點,在此期間,MHA會經過與其它從節點獲取額外信息來避免一致性方面的問題。MHA還提供了master節點的在線切換功能,即按需切換master/slave節點。
相較於其它HA軟件,MHA的目的在於維持MySQL Replication中Master庫的高可用性,其最大特色是能夠修復多個Slave之間的差別日誌,最終使全部Slave保持數據一致,而後從中選擇一個充當新的Master,並將其它Slave指向它。

2、MHA角色部署

MHA 服務有兩種角色,MHA Manager(管理節點)和MHA Node(數據節點):
MHA Manager:一般單獨部署在一臺獨立的機器上或者直接部署在其中一臺slave上(不建議後者),管理多個master/slave集羣,每一個master/slave集羣稱做一個application;其做用有二:
(1)master自動切換及故障轉移命令運行
(2)其餘的幫助腳本運行:手動切換master;master/slave狀態檢測
MHA node:運行在每臺MySQL服務器上(master/slave/manager),它經過監控具有解析和清理logs功能的腳原本加快故障轉移。其做用有:
(1)複製主節點的binlog數據
(2)對比從節點的中繼日誌文件
(3)無需中止從節點的SQL線程,定時刪除中繼日誌
 

目前MHA主要支持一主多從的架構,要搭建MHA,要求一個複製集羣中必須最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另一臺充當從庫,由於至少須要三臺服務器,出於機器成本的考慮,淘寶也在該基礎上進行了改造,目前淘寶TMHA已經支持一主一從。html

咱們本身使用其實也可使用1主1從,可是master主機宕機後沒法切換,以及沒法補全binlog。master的mysqld進程crash後,仍是能夠切換成功,以及補全binlog的。node

官方介紹:https://code.google.com/p/mysql-master-ha/mysql

下圖展現瞭如何經過MHA Manager管理多組主從複製。能夠將MHA工做原理總結爲以下:sql

(1)從宕機崩潰的master保存二進制日誌事件(binlog events);數據庫

(2)識別含有最新更新的slave;服務器

(3)應用差別的中繼日誌(relay log)到其餘的slave;網絡

(4)應用從master保存的二進制日誌事件(binlog events);架構

(5)提高一個slave爲新的master;app

(6)使其餘的slave鏈接新的master進行復制;ssh

詳細過程:

1.配置文件檢查階段,這個階段會檢查整個集羣配置文件配置

2.宕機的master處理,這個階段包括虛擬ip摘除操做,主機關機操做(這個我這裏尚未實現,須要研究)

3.複製dead maste和最新slave相差的relay log,並保存到MHA Manger具體的目錄下

4.識別含有最新更新的slave

5.應用從master保存的二進制日誌事件(binlog events)

6.提高一個slave爲新的master進行復制

7.使其餘的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工具(這些工具一般由MHAManager的腳本觸發,無需人手操做)。
– save_binary_logs : 保存和複製master的二進制日誌。
– apply_diff_relay_logs : 識別差別的中繼日誌事件並應用於其它slave。
– filter_mysqlbinlog : 去除沒必要要的ROLLBACK事件(MHA已再也不使用這個工具)。
– purge_relay_logs : 清除中繼日誌(不會阻塞SQL線程)。
 
(3)、自定義擴展:
-secondary_check_script:經過多條網絡路由檢測master的可用性;
-master_ip_failover_script:更新application使用的masterip; (須要修改)
-shutdown_script:強制關閉master節點;
-report_script:發送報告;
-init_conf_load_script:加載初始配置參數;
-master_ip_online_change:更新master節點ip地址;(須要修改)
 
出處:
相關文章
相關標籤/搜索