【mysql】Mha實現高可用數據庫架構

MySQL高可用平臺須要達到的目標有如下幾點:html

一、數據一致性保證這個是最基本的同時也是前提,若是主備的數據的不一致,那麼切換就沒法進行,固然這裏的一致性也是一個相對的,可是要作到最終一致性。node

二、故障快速切換,當master故障時這裏能夠是機器故障或者是實例故障,要確保業務能在最短期切換到備用節點,使得業務受影響時間最短。這裏也能夠指業務例行維護操做,好比前面提到的沒法使用在線進行DDL的DDL操做,不少分表批量的DDL操做,這些操做經過在線切換方式來滾動完成。數據庫

三、簡化平常維護,經過高可用平臺來自動完成高可用的部署、維護、監控等任務,可以最大程度的解放DBA手動操做,提升平常運維效率。安全

四、統一管理,當複製集不少的狀況下,可以統一管理高可用實例信息、實例信息、監控信息、切換信息等。服務器

五、高可用的部署要對現有的數據庫架構無影響,若是由於部署高可用,須要更改或者調整數據庫架構則會致使成本增長。架構

六、魅族RDS平臺須要高可用支持,這個高可用平臺也是做爲RDS的一個子模塊,爲RDS提供高可用支持、切換等服務。框架

MHA做爲線上MySQL高可用方案,主要基於以下幾點:運維

一、自動探測,多重檢測ssh

二、部署簡單,對現有架構無影響性能

三、自動補齊數據,維護數據一致性

四、切換過程當中支持調用其餘腳本的接口

五、支持在線切換

六、開源,perl編寫,二次開發相對較容易

七、多實例集中管理

而這些特色中,支持調用外部腳本接口和在線切換尤其重要,固然perl編寫,二次開發相對容易,能夠根據本身業務需求適當的增長功能也不是難事。

 

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工做原理


    一、保存master上的全部binlog事件

    二、找到含有最新binlog位置點的slave

    三、經過中繼日誌將數據恢復到其餘的slave

    四、將包含最新binlog位置點的slave提高爲master

    五、將其餘從庫slave指向新的master原slave01 並開啓主從複製

    六、將保存下來的binlog恢復到新的master上

 

一、監控全部node節點MHA功能說明:

二、自動故障切換(failover)

     前提是必須有三個節點存在,而且有兩個從庫

      (1)選主前提,按照配置文件的順序進行,可是若是此節點後主庫100M以上relay-log 就不會選

      (2)若是你設置了權重,總會切換帶此節點;通常在多地多中心的狀況下,通常會把權重設置在本地節點。

      (3)選擇s1爲新主

      (4)保存主庫binlog日誌

三、從新構建主從

      (1)將有問題的節點剔除MHA

          進行第一階段數據補償,S2缺失部分補全90

      (2)s1切換角色爲新主,將s2指向新主S1

            s2  change master to s1

      (3) 第二階段數據補償

            將保存過來的新主和原有主缺失部分的binlog,應用到新主。

      (4)虛擬IP漂移到新主,對應用透明無感知

      (5)通知管理員故障切換

 

1.1.3 MHA高可用架構圖

 

轉載文章:https://www.cnblogs.com/clsn/p/8150688.html

相關文章
相關標籤/搜索