探索MySQL高可用架構之MHA(1)

探索MySQL高可用架構之MHA(1)

-----構建mysql高可用系列(共9篇)

    什麼是高可用性?

        很多公司的服務都是24小時*365天不間斷的。比如Call Center。這就要求高可用性。再比如購物網站,必須隨時都可以交易。那麼當購物網的server掛了一個的時候,不能對業務產生任何影響。這就是高可用性。

    如何處理failover?

        解釋failover,意思就是當服務器down掉,或者出現錯誤的時候,可以自動的切換到其他待命的服務器,不影響服務器上App的運行。


    以MySQL爲例,什麼樣的架構才能保證其高可用性呢?

        MySQL replication with manual failover

        同步數據是採用MySQL replication的方法,在MySQL分表分塊到主從已經解釋。簡單的說就是從庫根據主庫的日誌來做相應的處理,保證數據的一致。通常還配合MySQL Proxy或Amoeba等進行讀寫分離減少服務器壓力。

        manual failover,顯然當Master掛掉時,利用本方式是需要手動來處理failover,一般來說是將slave更改爲server。

        Master-Master with MMM manager(Multi-Master Replication Manager)

        同步數據的方式是Multi-Master Replication Manager,在MySQL分表分塊到主從解釋,多主多從的設置,是一個loop環形,每個DB既是前一個DB的Slave又是後一個的Master。優勢就在於,一個Master掛掉,也還可以繼續DB操作。每個DB都可以進行讀寫,分散壓力。

       Heartbeat/SAN

        處理failover的方式是Heartbeat,Heartbeat可以看成是一組程序,監控管理各個node間連接的網絡。當node出現錯誤時,自動啓動其他node開始服務。Heartbeat必須解決的一個問題就是split brain,在網絡中的一個node down掉後,每個node都會認爲其他node down掉並嘗試開始服務,因爲產生數據衝突。

        通過SAN來共享數據

        SAN:Storage Area Network,是一種LAN來處理大數據量的傳輸,提供了計算機和存儲系統之間的數據傳輸。各個計算機組成的集羣可以通過SAN共享存儲。

        Heartbeat/DRBD

        處理failover的方式依舊是Heartbeat。

同步數據使用DRBD:Distributed Replicated Block Device(DRBD)是一個用軟件實現的、無共享的、服務器之間鏡像塊設備內容的存儲複製解決方案。和SAN網絡不同,它並不共享存儲,而是通過服務器之間的網絡複製數據。

        MySQL Cluster

        MySQL Cluster也是由各個DB node組成一個cluster,在這個cluster中由網絡連接。可以自由的增減node的個數來對應數據庫壓力。

    MySQL高可用性大殺器之MHA

        MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司youshimaton(現就職於 Facebook公司)開發,是一套優秀的作爲MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在 0~30秒之內自動完成數據庫的故障切換操作,並且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。

        該軟件由兩部分組成: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已經支持一主一從。

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章