1. 程式人生 > >MySQL高可用方案-MHA

MySQL高可用方案-MHA

         MHA是MySQL High Available的縮寫,一般指一位日本MySQL大牛用Perl寫的一套MySQL故障切換方案,來保證資料庫系統的高可用

         MHA易於安裝和部署,不需要改變現有部署,也不影響伺服器效能 (1 ping/3s),而且可以完全部署到Slave上,節約了新伺服器的成本。

         如此輕量的部署,就能提供自動監控master和故障轉移 (downtime 10~30s),保障主從資料的一致性 (即使master crash),並適用於MySQL的任何主從儲存引擎。真是超值啊!

         還支援線上切換master,只需要很短的時間(0.5~2s),此時僅僅阻塞寫操作,並不影響讀操作

,滿足幾乎無間斷的維護需要。

MHA優點

master自動監控和故障轉移

         在當前已存在的主從複製環境中,MHA可以監控master主機故障,並且故障自動轉移。

         MHA秒級別故障轉移:9-12秒監測到主機故障,任選7秒鐘關閉電源主機避免腦裂,接下來apply差異relay logs註冊到新的master。通常整個downtime只需要10-30秒。

         即使有一些slave沒有接受新的relaylog events,MHA也會從最新的slave自動識別差異的relay log events,並apply差異的event到其他slaves。因此所有的

slave都是一致的

         另外,在配置檔案裡可以配置一個slave優先成為master因為MHA修復了slave之間的一致性,dba就不用去處理一致性問題。

         當遷移新的master之後,並行恢復其他slave。即使有成千上萬的slave,也不會影響恢復master時間,slave也很快完成。

         ForExample: DeNA公司在150+主從環境中用MHA。當其中一個master崩潰,MHA只要4秒就完成故障轉移,這是主動/被動叢集解決方案無法完成的。

保障主從資料的一致性

         即使mastercrash,MHA會自動識別slave

relay log events的不同,然後應用與不同的slave,最終所有slave都同步。結合半同步一起使用,幾乎沒有任何資料丟失。

 P.S. 但不能保證0丟失。

非互動式故障轉移

         也可以支援不監控master,自動/手動故障轉移。這個特性很有用,特別是你已經安裝了其他軟體監控master。比如,用Pacemaker(Heartbeat)監測master故障和vip接管,用MHA故障轉移和slave提升。

線上切換master到不同主機

         在很多情況下,有必要將master轉移到其他主機上(如替換raid控制器,提升master機器硬體等等)。這並不是master崩潰,但是計劃維護必須去做。計劃維護導致downtime,必須儘可能快的恢復。

         快速的master切換和優雅的阻塞寫操作是必需的,MHA也不例外,其中阻塞寫操作一般在0.5-2秒。在很多情況下0.5-2秒downtime是可以接受的,並且即使不在計劃維護視窗。這意味著當需要更換更快機器,升級高版本時,DBA可以很容易採取動作。

MHA部署不影響當前環境設定

         MHA最重要的一個設計理念就是儘可能使用簡單。

         使用與5.0+以上主從環境,其他HA方案需要改變MySQL部署設定;而MHA則不需要做這些配置,同步和半同步環境都可以用。

         啟動/停止/升級/降級/安裝/解除安裝 MHA都不用改變MySQL主從(如啟動/停止)。當要升級MHA到新版本時,不需要停止MySQL,僅僅更新HMA版本,重啟MHA Manger即可

不增加伺服器費用

         MHA包含MHA ManagerMHA Node。MHA node執行在每臺MySQL伺服器上,Manager可以單獨部署一臺機器,可以監控100+的master,總伺服器數量不會有太大增加。而且Manager也可以執行在slaves中的一臺機器上。

效能無影響

         當監控master,MHA只是幾秒鐘(預設3傳送ping不傳送大的查詢。主從複製效能不受影響

適用任何儲存引擎

         MHA不僅僅適用於事務安全的innodb引擎,而是所有主從引擎都適用。

與其他HA方案比較

手動處理

         MySQL的複製有同步,非同步和半同步三種模式,一般為了提高效能都不會採用同步的方式。當master崩潰時,很有可能一些slave還沒有接受最新的relay log events,這意味著每一個slave都相互處在不同的狀態

         人為地修復一致性的問題會非常麻煩。而且由於一致性的異常,主從也不能正常啟動 (duplicate key error)。在手動重啟的情況下,往往花費1個小時是很正常的,這成本就太大了。

單一主從

         要解決上述一致性的問題,可以只部署單一主從。這樣一些slave 落後與其他slave的情況將不會發生。其中一個master崩潰,可以輕鬆的讓應用轉移到一個新的master上面,提供對外服務,故障遷移很簡單。

         單一主從簡單高效,非常便於維護。就是負載量不大,隨著應用的擴張,單一必然無法支援。   【適合的就是最好的

一主一備,多從 (雙主多從) Master,one candidate master, and multiple slaves

         雙主多從的架構也很常見。主master掛掉,備用master將接替主master提供服務。某些情況配置為多主架構。

         但這只是作為master故障轉移方案。而資料一致性還沒得到解決,當前master掛掉,剩餘slave不一定接受全部relay log events。

         這種架構使用廣泛,其中一個通用的方案Pecemaker(Heartbeat)+DRBD+MySQL:

雙master,其中一個master只讀,每個master都至少有一個slave。

                  M(RW)--M2(R)

                      |              |

                  S(R)      S2(R)

         但也會存在下面幾個問題:

l  1 費用,特別是跑大量主從環境。Pecemaker+DRBD是主動/被動的解決方案,因此需要一臺被動伺服器對外不提供任何應用服務。基本的需要四臺MySQL伺服器,one active master,one passive master,two slaves。

l  2 宕機時間(downtime)。Pacemaker+DRBD是主備叢集,主master掛掉,備用master啟用。這可能花費長的時間,特別是沒有用innodb plugin。即使用innodb plugin,花費幾分鐘開始在備用master上接受連線也不尋常。另外,因為備用master上資料/檔案快取是空的,恢復時間,熱身(填充資料到data buffer pool)花費不可忽視的時間。實踐中,需要一臺或更多slave提供足夠的讀服務。在熱身時間內,空快取導致寫效能降低

l  3 寫效能下降一致性問題。為了讓主動/被動叢集真正的工作,每次提交(commit)後,必須重新整理事務日誌(binary log和innodb log),會降低寫效能。另外,slave和備份master的同步機制(刷日誌)不一樣,導致活動master crash的時候,slave和備份master可能會出現一致性的問題。

MySQL Cluster

         MySQL cluster是真正的高可用解決方案,但是必須得用NDB儲存引擎。如果你用innodb,將不能發揮MySQL cluster叢集優勢。

半同步複製 Semi-Synchronous Replication

         半同步複製大大降低了binlogevent僅僅存在於崩潰master上的這種風險。這非常有用的能避免資料丟失。但是半同步不能解決所有一致性問題,只能保證一個(不是所有)slave接受到master端的commit的binlog events,其他slave也許還沒有接受全部的binlog events。

         所以,如果不能從新的slave來apply不同的binlogevents到其他slave上,也就不能保證相互一致性。

Global Transaction ID

         GlobalTransactionID所要達到的目的跟MHA相同,但它覆蓋更多。MHA只是兩級複製,但是global transaction id覆蓋任何級別的複製環境,即使第兩級複製失敗,dba也能覆蓋第三級。Check Google'sglobal transaction id project for details。

         原文出處:http://blog.csdn.net/aeolus_pu/article/details/9127897

相關推薦

(轉)MySQL可用方案MHA的部署和原理

進制 說明 only manager 方案 運行 例如 必須 轉移 背後深層次的邏輯: MHA Node則運行在每個mysql節點上,MHA Manager會定時探測集群中的master節點,當master出現故障時,它自動將最新數據的slave提升為master,然後將其

MySQL可用方案 MHA之二 master_ip_failover

  [[email protected] bin]# vi master_ip_failover 1 cat master_ip_failover 2 #!/usr/bin/env perl 3 use strict; 4 use warnings FAT

MySQL可用方案 MHA之四 keepalived 半同步複製

    [[email protected] ~]# cat /etc/mysql_mha/app1.cnf [server default]manager_log=/data/mysql_mha/app1-manager.logmanager_workdir=/data/m

MySQL可用方案--MHA原理

簡介 MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於Facebook公司)開發,是日本的一位MySQL專家採用Perl語言編寫的一個指令碼管理工具,該工具僅適用於MySQLReplicatio

MySQL可用方案-MHA

         MHA是MySQL High Available的縮寫,一般指一位日本MySQL大牛用Perl寫的一套MySQL故障切換方案,來保證資料庫系統的高可用。          MHA易於安裝和部署,不需要改變現有部署,也不影響伺服器效能 (1 ping/3s)

Linux實戰教學筆記40: Mha-Atlas-MySQL可用方案實踐(二)

broadcast level lis 失敗 mat password cti overruns red 六,配置VIP漂移 主機名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.6

(專案六)Mha-Atlas-MySQL可用方案實踐

mha-mysql環境準備: 三臺虛擬機器,都安裝了mysql,都關閉防火牆和selinux,同時在每臺虛擬機器上都做對映 軟體包 1) mha管理節點安裝包: mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56.tar.

(項目六)Mha-Atlas-MySQL可用方案實踐

sta var block 三臺 libc 阿裏雲 切換 截圖 tro mha-mysql環境準備: 三臺虛擬機,都安裝了mysql,都關閉防火墻和selinux,同時在每臺虛擬機上都做映射 軟件包 1) mha管理節點安裝包: mha4mysql-manager-0.5

Mha-Atlas-MySQL可用方案實踐。

Mha-Atlas-MySQL高可用方案實踐(一) Mha-Atlas-MySQL高可用方案實踐   一,mysql-mha環境準備   1.1 實驗環境:

Mha-Atlas-MySQL可用方案實踐

一:MySQL環境的準備 (1)關閉iptables和selinux (2)主機名對映   (3)安裝MySQL(三臺都要裝) [[email protected] ~]# yum -y install ncurses-devel [[email prot

專案課---Mha-Atlas-MySQL可用方案實踐(六)

一,mysql-mha環境準備   1.1 實驗環境: 1.2 軟體包   用到得所有包 連結:https://pan.baidu.com/s/1aQ1HC-j3U762zWGW63dfbA 提取碼:o1dh 1) mha管理節點安裝包: m

10款常見MySQL可用方案選型解讀

數據 再次 adding 引入 mha 備份 ati 中一 高可用方案 原文地址 作者介紹 王松磊,現任職於UCloud,從事MySQL數據庫內核研發工作。主要負責UCloud雲數據庫udb的內核故障排查工作以及數據庫新特性的研發工作。 一、概述 我們在考慮MySQ

MySQL可用MHA

ha高可用 filter 保存 yum mysql 復制 ast 詳細 ima ssh MHA,MySQL的高可用架構,在基於主從架構的模式下,當主服務器掛掉之後,由MHA中manager來決定從哪臺slave從服務器當中選擇一臺作為master主服務器,通常是比較從服

mysql可用方案

col ado process oss mark mysql高可用 文件 分享 type 1、DRBD方案(文件系統)mysql高可用方案

Mysql 可用方案

href mys span article 方案 主從 ont mycat div 1 mysql分布式數據庫,如 mycat https://www.cnblogs.com/zzsdream/articles/6650690.html 2 讀寫分離,mysql主從復制+m

五大常見的MySQL可用方案

div 可擴展 需求 雙節點 服務器 ref 系列 我們 clust 1. 概述 我們在考慮MySQL數據庫的高可用的架構時,主要要考慮如下幾方面: 1.1 如果數據庫發生了宕機或者意外中斷等故障,能盡快恢復數據庫的可用性,盡可能的減少停機時間

MySQL可用MHA理論章節

MHA 高可用 復制 背景介紹 高可用架構對於互聯網服務基本是標配,無論是應用服務還是數據庫服務都需要做到高可用。本文是對MySQL數據庫的高可用方案中,基於主從復制的MHA軟件理論部分進行梳理和小結。 MHA軟件介紹 1.MHA軟件是由MHA Manager(管理節點)和MHA Node(數據節

centos7.5部署heartbeat+DRBD+mysql可用方案

centos7.5部署drbd centos 7.5部署heartbe mysql高可用方案 heartbeat+DRBD+mysq 做雙機熱備方案需要用到Hearbeat和存儲設備(如果沒存儲設備,可以用DRBD代替,但是最好用存儲設備)。Heartbeat:如果熱備服務器在規定的時間內沒有

MySQL可用部署MHA

運行 code relay rontab form inter 二進制 for 簡單記錄 MHA簡介 MHA 由兩部分組成: MHA Manager(管理節點)和 MHA Node(數據節點)。 MHA Manager可以單獨部署在一臺獨立的機器上管理多個 master-

配置MySQL可用叢集MHA

配置MySQL高可用叢集+++++++++++++++++++主機角色 :客戶端 client50資料庫伺服器 mysql51 到 mysql55管理主機 mgm56VIP地址 192.168.4.100拓撲結構: client50 | mysql51主 |