本博主配置好的Centos6下MySQL5.6高可用架構-MHA環境 虛擬機下載,鏈接:https://pan.baidu.com/s/1aAgcXI8RR1VteMpcQqJYNg
提取碼:5aut 下載後 ,用Vmware workstation打開即可以使用。
一、MHA介紹
MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是日本的一位
MySQL專家採用Perl語言編寫的一個腳本管理工具,該工具僅適用於MySQLReplication(二層)環境,目的在於維持Master主庫的高可用性。是一套優秀的作為MySQL高可用性
環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內自動完成數據庫的故障切換操作,並且在進行故障切換的過程中,MHA能在最大程度上
保證數據的一致性,以達到真正意義上的高可用。
MHA是自動的master故障轉移和Slave提升的軟件包.它是基於標準的MySQL複製(異步/半同步).該軟件由兩部分組成:MHA Manager(管理節點)和MHA Node(數據節點)。
1)MHA Manager可以單獨部署在一台獨立的機器上管理多個master-slave集群,也可以部署在一台slave節點上。MHA Manager會定時探測集群中的node節點,當發現master
出現故障的時候,它可以自動將具有最新數據的slave提升為新的master,然後將所有其它的slave導向新的master上.整個故障轉移過程對應用程序是透明的。
2)MHA Node運行在每台MySQL服務器上,它通過監控具備解析和清理logs功能的腳本來加快故障轉移的。
在MHA自動故障切換過程中,MHA試圖從宕機的主服務器上保存二進制日誌,最大程度的保證數據的不丟失,但這並不總是可行的。例如,如果主服務器硬件故障或無法通過ssh訪問,
MHA沒法保存二進制日誌,只進行故障轉移而丟失了最新的數據。使用MySQL 5.5的半同步複製,可以大大降低數據丟失的風險。MHA可以與半同步複製結合起來。如果只有一個slave
已經收到了最新的二進制日誌,MHA可以將最新的二進制日誌應用於其他所有的slave服務器上,因此可以保證所有節點的數據一致性。
目前MHA主要支持一主多從的架構,要搭建MHA,要求一個複製集群中必須最少有三台數據庫服務器,一主二從,即一台充當master,一台充當備用master,另外一台充當從庫,因為至
少需要三台服務器,出於機器成本的考慮,淘寶也在該基礎上進行了改造,目前淘寶TMHA已經支持一主一從。
二、MHA工作架構說明
展示了如何通過MHA Manager管理多組主從複製。可以將MHA工作原理總結為如下:
相較於其它HA軟件,MHA的目的在於維持MySQL Replication中Master庫的高可用性,其最大特點是可以修復多個Slave之間的差異日誌,最終使所有Slave保持數據一致,
然後從中選擇一個充當新的Master,並將其它Slave指向它。工作流程主要如下:
1)從宕機崩潰的master保存二進制日誌事件(binlog events);
2)識別含有最新更新的slave;
3)應用差異的中繼日誌(relay log)到其他的slave;
4)應用從master保存的二進制日誌事件(binlog events);
5)提升一個slave為新的master;
6)使其他的slave連接新的master進行複製;
MHA工作原理
當master出現故障時,通過對比slave之間I/O線程讀取master binlog的位置,選取最接近的slave做為latest slave。其它slave通過與latest slave對比生成差異中繼日誌。
在latest slave上應用從master保存的binlog,同時將latest slave提升為master。最後在其它slave上應用相應的差異中繼日誌並開始從新的master開始複製。
在MHA實現Master故障切換過程中,MHA Node會試圖訪問故障的master(通過SSH),如果可以訪問(不是硬件故障,比如InnoDB數據文件損壞等),會保存二進制文件,以最大程度
保證數據不丟失。MHA和半同步複製一起使用會大大降低數據丟失的危險。
本博主配置好的Centos6下MySQL5.6高可用架構-MHA環境 虛擬機下載,鏈接:https://pan.baidu.com/s/1aAgcXI8RR1VteMpcQqJYNg
提取碼:5aut 下載後 ,用Vmware workstation打開即可以使用。
MHA軟件的架構:由兩部分組成,Manager工具包和Node工具包,具體的說明如下。
Manager工具包主要包括以下幾個工具:
masterha_check_ssh 檢查MHA的SSH配置狀況
masterha_check_repl 檢查MySQL複製狀況
masterha_manger 啟動MHA
masterha_check_status 檢測當前MHA運行狀態
masterha_master_monitor 檢測master是否宕機
masterha_master_switch 控制故障轉移(自動或者手動)
masterha_conf_host 添加或刪除配置的server信息
Node工具包(這些工具通常由MHA Manager的腳本觸發,無需人為操作)主要包括以下幾個工具:
save_binary_logs(保存二進制日誌) 保存和複製master的二進制日誌
apply_diff_relay_logs(應用差異中繼日誌) 識別差異的中繼日誌事件並將其差異的事件應用於其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用這個工具)
purge_relay_logs(清理中繼日誌) 清除中繼日誌(不會阻塞SQL線程)
………………………………………………………………………………………..
MHA如何保持數據的一致性呢?主要通過MHA node的以下幾個工具實現,但是這些工具由mha manager觸發:
save_binary_logs 如果master的二進制日誌可以存取的話,保存複製master的二進制日誌,最大程度保證數據不丟失
apply_diff_relay_logs 相對於最新的slave,生成差異的中繼日誌並將所有差異事件應用到其他所有的slave
注意:
對比的是relay log,relay log越新就越接近於master,才能保證數據是最新的。
purge_relay_logs刪除中繼日誌而不阻塞sql線程
MHA的優勢
1)故障切換快
在主從複製集群中,只要從庫在複製上沒有延遲,MHA通常可以在數秒內實現故障切換。9-10秒內檢查到master故障,可以選擇在7-10秒關閉master以避免出現裂腦,幾秒鐘內,
將差異中繼日誌(relay log)應用到新的master上,因此總的宕機時間通常為10-30秒。恢復新的master後,MHA並行的恢復其餘的slave。即使在有數萬台slave,也不會
影響master的恢復時間。
DeNA在超過150個MySQL(主要5.0/5.1版本)主從環境下使用了MHA。當mater故障後,MHA在4秒內就完成了故障切換。在傳統的主動/被動集群解決方案中,4秒內完成故障切換是不可能的。
2)master故障不會導致數據不一致
當目前的master出現故障時,MHA自動識別slave之間中繼日誌(relay log)的不同,並應用到所有的slave中。這樣所有的salve能夠保持同步,只要所有的slave處於存活
狀態。和Semi-Synchronous Replication一起使用,(幾乎)可以保證沒有數據丟失。
3)無需修改當前的MySQL設置
MHA的設計的重要原則之一就是儘可能地簡單易用。MHA工作在傳統的MySQL版本5.0和之後版本的主從複製環境中。和其它高可用解決方法比,MHA並不需要改變MySQL的部署環境。
MHA適用於異步和半同步的主從複製。
啟動/停止/升級/降級/安裝/卸載MHA不需要改變(包擴啟動/停止)MySQL複製。當需要升級MHA到新的版本,不需要停止MySQL,僅僅替換到新版本的MHA,然後重啟MHA Manager
就好了。
本博主配置好的Centos6下MySQL5.6高可用架構-MHA環境 虛擬機下載,鏈接:https://pan.baidu.com/s/1aAgcXI8RR1VteMpcQqJYNg
提取碼:5aut 下載後 ,用Vmware workstation打開即可以使用。
MHA運行在MySQL 5.0開始的原生版本上。一些其它的MySQL高可用解決方案需要特定的版本(比如MySQL集群、帶全局事務ID的MySQL等等),但並不僅僅為了master的高可用才遷移應用的。在大多數情況下,已經部署了比較舊MySQL應用,並且不想僅僅為了實現Master的高可用,花太多的時間遷移到不同的存儲引擎或更新的前沿發行版。MHA工作的包括5.0/5.1/5.5的原生版本的MySQL上,所以並不需要遷移。
4)無需增加大量的服務器
MHA由MHA Manager和MHA Node組成。MHA Node運行在需要故障切換/恢復的MySQL服務器上,因此並不需要額外增加服務器。MHA Manager運行在特定的服務器上,因此需要
增加一台(實現高可用需要2台),但是MHA Manager可以監控大量(甚至上百台)單獨的master,因此,並不需要增加大量的服務器。即使在一台slave上運行MHA Manager也是
可以的。綜上,實現MHA並沒用額外增加大量的服務。
5)無性能下降
MHA適用與異步或半同步的MySQL複製。監控master時,MHA僅僅是每隔幾秒(默認是3秒)發送一個ping包,並不發送重查詢。可以得到像原生MySQL複製一樣快的性能。
6)適用於任何存儲引擎
MHA可以運行在只要MySQL複製運行的存儲引擎上,並不僅限制於InnoDB,即使在不易遷移的傳統的MyISAM引擎環境,一樣可以使用MHA。
本博主配置好的Centos6下MySQL5.6高可用架構-MHA環境 虛擬機下載,鏈接:https://pan.baidu.com/s/1aAgcXI8RR1VteMpcQqJYNg
提取碼:5aut 下載後 ,用Vmware workstation打開即可以使用。
以下文章點擊率最高
Loading…