1.1 MHA簡介 1.1.1 MHA軟體介紹 MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高 ...
1.1 MHA簡介
1.1.1 MHA軟體介紹
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟體。在MySQL故障切換過程中,MHA能做到在10~30秒之內自動完成資料庫的故障切換操作,並且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。
MHA能夠在較短的時間內實現自動故障檢測和故障轉移,通常在10-30秒以內;在複製 框架中,MHA能夠很好地解決複製過程中的數據一致性問題,由於不需要在現有的 replication中添加額外的伺服器,僅需要一個manager節點,而一個Manager能管理多套複製,所以能大大地節約伺服器的數量;另外,安裝簡單,無性能損耗,以及不需要修改現 有的複製部署也是它的優勢之處。
MHA還提供線上主庫切換的功能,能夠安全地切換當前運行的主庫到一個新的主庫中 (通過將從庫提升為主庫),大概0.5-2秒內即可完成。
該軟體由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。MHA Manager可以單獨部署在一臺獨立的機器上管理多個master-slave集群,也可以部署在一臺slave節點上。MHA Node運行在每台MySQL伺服器上,MHA Manager會定時探測集群中的master節點,當master出現故障時,它可以自動將最新數據的slave提升為新的master,然後將所有其他的slave重新指向新的master。整個故障轉移過程對應用程式完全透明。
在MHA自動故障切換過程中,MHA試圖從宕機的主伺服器上保存二進位日誌,最大程度的保證數據的不丟失,但這並不總是可行的。例如,如果主伺服器硬體故障或無法通過ssh訪問,MHA沒法保存二進位日誌,只進行故障轉移而丟失了最新的數據。使用MySQL 5.5的半同步複製,可以大大降低數據丟失的風險。
MHA可以與半同步複製結合起來。如果只有一個slave已經收到了最新的二進位日誌,MHA可以將最新的二進位日誌應用於其他所有的slave伺服器上,因此可以保證所有節點的數據一致性。
目前MHA主要支持一主多從的架構,要搭建MHA,要求一個複製集群中必須最少有三台資料庫伺服器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫,因為至少需要三台伺服器,出於機器成本的考慮,淘寶也在該基礎上進行了改造,目前淘寶TMHA已經支持一主一從。
1.1.2 MHA工作原理
工作原理說明:
|
1、監控所有node節點MHA功能說明:
2、自動故障切換(failover)
前提是必須有三個節點存在,並且有兩個從庫
(1)選主前提,按照配置文件的順序進行,但是如果此節點後主庫100M以上relay-log 就不會選
(2)如果你設置了權重,總會切換帶此節點;一般在多地多中心的情況下,一般會把權重設置在本地節點。
(3)選擇s1為新主
(4)保存主庫binlog日誌
3、重新構建主從
(1)將有問題的節點剔除MHA
進行第一階段數據補償,S2缺失部分補全90
(2)s1切換角色為新主,將s2指向新主S1
s2 change master to s1
(3) 第二階段數據補償
將保存過來的新主和原有主缺失部分的binlog,應用到新主。
(4)虛擬IP漂移到新主,對應用透明無感知
(5)通知管理員故障切換
1.1.3 MHA高可用架構圖
1.1.4 MHA工具介紹
MHA軟體由兩部分組成,Manager工具包和Node工具包,具體的說明如下:
Manager工具包主要包括以下幾個工具:
masterha_check_ssh #檢査 MHA 的 ssh-key^ masterha_check_repl #檢査主從複製情況 masterha_manger #啟動MHA masterha_check_status #檢測MHA的運行狀態^ masterha_mast er_monitor #檢測master是否宕機一 masterha_mast er_switch #手動故障轉移— masterha_conf_host #手動添加server倍息一 masterha_secondary_check #建立TCP連接從遠程伺服器v masterha_stop #停止MHA
Node工具包主要包括以下幾個工具:
save_binary_1ogs #保存宕機的master的binlog
apply_diff_relay_logs #識別relay log的差異
filter_mysqlbinlog #防止回滾事件一MHA已不再使用這個工具
purge_relay_logs #清除中繼曰志一不會阻塞SQL線程
1.1.5 MHA的優點
1、自動故障轉移
2、主庫崩潰不存在數據不一致的情況
3、不需要對當前的mysql環境做重大修改
4、不需要添加額外的伺服器
5、性能優秀,可以工作再半同步和非同步複製框架
6、只要replication支持的存儲引擎mha都支持
1.2 環境說明
在本次的實驗中,共需要用到三台主機,系統、軟體說明如下。
1.2.1 系統環境說明
db01主機(master)
[root@db01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@db01 ~]# uname -r 2.6.32-696.el6.x86_64 [root@db01 ~]# /etc/init.d/iptables status iptables: Firewall is not running. [root@db01 ~]# getenforce Disabled [root@db01 ~]# hostname -I 10.0.0.51 172.16.1.51
db02主機(slave1)
1 [root@db02 ~]# cat /etc/redhat-release 2 CentOS release 6.9 (Final) 3 [root@db02 ~]# uname -r 4 2.6.32-696.el6.x86_64 5 [root@db02 ~]# /etc/init.d/iptables status 6 iptables: Firewall is not running. 7 [root@db02 ~]# getenforce 8 Disabled 9 [root@db02 ~]# hostname -I 10 10.0.0.52 172.16.1.52View Code db02主機環境說明
db03主機(slave1,MHA Manages、Atlas節點)
1 [root@db03 ~]# cat /etc/redhat-release 2 CentOS release 6.9 (Final) 3 [root@db03 ~]# uname -r 4 2.6.32-696.el6.x86_64 5 [root@db03 ~]# /etc/init.d/iptables status 6 iptables: Firewall is not running. 7 [root@db03 ~]# getenforce 8 Disabled 9 [root@db03 ~]# hostname -I 10 10.0.0.53 172.16.1.53View Code db03主機環境說明
1.2.2 mysql軟體說明
三台伺服器上都全新安裝mysql 5.6.36 :
[root@db01 ~]# mysql --version mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper
關於mysql資料庫具體的安裝方法參考:http://www.cnblogs.com/clsn/p/8038964.html#_label3
1.3 基於GTID的主從複製配置
1.3.1 先決條件