前言html
高可用架構對於互聯網服務基本是標配,不管是應用服務仍是數據庫服務都須要作到高可用。對於一個系統而言,可能包含不少模塊,好比前端應用,緩存,數據庫,搜索,消息隊列等,每一個模塊都須要作到高可用,才能保證整個系統的高可用。對於數據庫服務而言,高可用可能更復雜,對用戶的服務可用,不只僅是能訪問,還須要有正確性保證,所以數據庫的高可用方案是一直以來的討論熱點,今天就各類的高可用方案,談一下我的的一些見解,若有錯誤,還請指正!!前端
MySQL主從架構mysql
此種架構,通常初創企業比較經常使用,也便於後面步步的擴展linux
此架構特色:sql
一、成本低,佈署快速、方便數據庫
二、讀寫分離緩存
三、還能經過及時增長從庫來減小讀庫壓力安全
四、主庫單點故障服務器
五、數據一致性問題(同步延遲形成)網絡
MySQL+DRDB架構
經過DRBD基於block塊的複製模式,快速進行雙主故障切換,很大程度上解決主庫單點故障問題
此架構特色:
一、高可用軟件可以使用Heartbeat,全面負責VIP、數據與DRBD服務的管理
二、主故障後可自動快速切換,而且從庫仍然能經過VIP與新主庫進行數據同步
三、從庫也支持讀寫分離,可以使用中間件或程序實現
MySQL+MHA架構
MHA目前在Mysql高可用方案中應該也是比較成熟和常見的方案,它由日本人開發出來,在mysql故障切換過程當中,MHA能作到快速自動切換操做,並且還能最大限度保持數據的一致性
此架構特色:
一、安裝佈署簡單,不影響現有架構
二、自動監控和故障轉移
三、保障數據一致性
四、故障切換方式可以使用手動或自動多向選擇
五、適應範圍大(適用任何存儲引擎)
MySQL+MMM架構
MMM即Master-Master Replication Manager for MySQL(mysql主主複製管理器),是關於mysql主主複製配置的監控、故障轉移和管理的一套可伸縮的腳本套件(在任什麼時候候只有一個節點能夠被寫入),這個套件也能基於標準的主從配置的任意數量的從服務器進行讀負載均衡,因此你能夠用它來在一組居於複製的服務器啓動虛擬ip,除此以外,它還有實現數據備份、節點之間從新同步功能的腳本。
MySQL自己沒有提供replication failover的解決方案,經過MMM方案能實現服務器的故障轉移,從而實現mysql的高可用。
此方案特色:
一、安全、穩定性較高,可擴展性好
二、 對服務器數量要求至少三臺及以上
三、 對雙主(主從複製性要求較高)
四、 一樣可實現讀寫分離
MySQL Cluster架構
Mysql官方推出的集羣高可用方案,因爲本人沒有用過,很差評價
摘自網絡上的一段解釋
MySQL Cluster 由一組計算機構成,每臺計算機上均運行着多種進程,包括 MySQL服務器,NDB Cluster的數據節點,管理服務器,以及(可能)專門的數據訪問程序。
因爲MySQL Cluster架構複雜,部署費時(一般須要DBA幾個小時的時間才能完成搭建),而依靠 MySQL Cluster Manager 只需一個命令便可完成,但 MySQL Cluster Manager 是收費的。而且業內資深人士認爲NDB 不適合大多數業務場景,並且有安全問題。所以,使用的人數較少。
有興趣的能夠研究下官方文檔:
https://dev.mysql.com/doc/ref...