前言
高可用架構對于網際網路服務基本是标配,無論是應用服務還是資料庫服務都需要做到高可用。對于一個系統而言,可能包含很多子產品,比如前端應用,緩存,資料庫,搜尋,消息隊列等,每個子產品都需要做到高可用,才能保證整個系統的高可用。對于資料庫服務而言,高可用可能更複雜,對使用者的服務可用,不僅僅是能通路,還需要有正确性保證,是以資料庫的高可用方案是一直以來的讨論熱點,今天就各種的高可用方案,談一下個人的一些看法,如有錯誤,還請指正!!
第一種 主從同步架構

此種架構,一般初創企業比較常用,也便于後面步步的擴充
此架構特點:
1、 成本低,布署快速、友善
2、 讀寫分離
3、 還能通過及時增加從庫來減少讀庫壓力
4、 主庫單點故障
5、 資料一緻性問題(同步延遲造成)
第二種 Mysql+DRBD架構
通過DRBD基于block塊的複制模式,快速進行雙主故障切換,很大程度上解決主庫單點故障問題
1、 高可用軟體可使用Heartbeat,全面負責VIP、資料與DRBD服務的管理
2、 主故障後可自動快速切換,并且從庫仍然能通過VIP與新主庫進行資料同步
3、 從庫也支援讀寫分離,可使用中間件或程式實作
第三種 Mysql+MHA架構
MHA目前在Mysql高可用方案中應該也是比較成熟和常見的方案,它由日本人開發出來,在mysql故障切換過程中,MHA能做到快速自動切換操作,而且還能最大限度保持資料的一緻性
1、 安裝布署簡單,不影響現有架構
2、 自動監控和故障轉移
3、 保障資料一緻性
4、 故障切換方式可使用手動或自動多向選擇
5、 适應範圍大(适用任何存儲引擎)
第四種 Mysql+MMM架構
MMM即Master-Master Replication Manager for MySQL(mysql主主複制管理器),是關于mysql主主複制配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任何時候隻有一個節點可以被寫入),這個套件也能基于标準的主從配置的任意數量的從伺服器進行讀負載均衡,是以你可以用它來在一組居于複制的伺服器啟動虛拟ip,除此之外,它還有實作資料備份、節點之間重新同步功能的腳本。
MySQL本身沒有提供replication failover的解決方案,通過MMM方案能實作伺服器的故障轉移,進而實作mysql的高可用。
此方案特點:
1、 安全、穩定性較高,可擴充性好
2、 對伺服器數量要求至少三台及以上
3、 對雙主(主從複制性要求較高)
4、 同樣可實作讀寫分離
第五種 官方mysql cluster方案
Mysql官方推出的叢集高可用方案,由于本人沒有用過,不好評價
摘自網絡上的一段解釋
MySQL Cluster 由一組計算機構成,每台計算機上均運作着多種程序,包括 MySQL 伺服器,NDB Cluster的資料節點,管理伺服器,以及(可能)專門的資料通路程式。
由于MySQL Cluster架構複雜,部署費時(通常需要DBA幾個小時的時間才能完成搭建),而依靠 MySQL Cluster Manager 隻需一個指令即可完成,但 MySQL Cluster Manager 是收費的。并且業内資深人士認為NDB 不适合大多數業務場景,而且有安全問題。是以,使用的人數較少。
本文轉自 民工哥 51CTO部落格,原文連結:http://blog.51cto.com/mingongge/2052768