淺談MySQL集群高可用架構(gòu)
前言
高可用架構(gòu)對(duì)于互聯(lián)網(wǎng)服務(wù)基本是標(biāo)配,無(wú)論是應(yīng)用服務(wù)還是數(shù)據(jù)庫(kù)服務(wù)都需要做到高可用。對(duì)于一個(gè)系統(tǒng)而言,可能包含很多模塊,比如前端應(yīng)用,緩存,數(shù)據(jù)庫(kù),搜索,消息隊(duì)列等,每個(gè)模塊都需要做到高可用,才能保證整個(gè)系統(tǒng)的高可用。對(duì)于數(shù)據(jù)庫(kù)服務(wù)而言,高可用可能更復(fù)雜,對(duì)用戶的服務(wù)可用,不僅僅是能訪問(wèn),還需要有正確性保證,因此數(shù)據(jù)庫(kù)的高可用方案是一直以來(lái)的討論熱點(diǎn),今天就各種的高可用方案,談一下個(gè)人的一些看法,如有錯(cuò)誤,還請(qǐng)指正!!
MySQL主從架構(gòu)
此種架構(gòu),一般初創(chuàng)企業(yè)比較常用,也便于后面步步的擴(kuò)展
此架構(gòu)特點(diǎn):
1、成本低,布署快速、方便
2、讀寫(xiě)分離
3、還能通過(guò)及時(shí)增加從庫(kù)來(lái)減少讀庫(kù)壓力
4、主庫(kù)單點(diǎn)故障
5、數(shù)據(jù)一致性問(wèn)題(同步延遲造成)
MySQL+DRDB架構(gòu)
通過(guò)DRBD基于block塊的復(fù)制模式,快速進(jìn)行雙主故障切換,很大程度上解決主庫(kù)單點(diǎn)故障問(wèn)題
此架構(gòu)特點(diǎn):
1、高可用軟件可使用Heartbeat,全面負(fù)責(zé)VIP、數(shù)據(jù)與DRBD服務(wù)的管理
2、主故障后可自動(dòng)快速切換,并且從庫(kù)仍然能通過(guò)VIP與新主庫(kù)進(jìn)行數(shù)據(jù)同步
3、從庫(kù)也支持讀寫(xiě)分離,可使用中間件或程序?qū)崿F(xiàn)
MySQL+MHA架構(gòu)
MHA目前在Mysql高可用方案中應(yīng)該也是比較成熟和常見(jiàn)的方案,它由日本人開(kāi)發(fā)出來(lái),在mysql故障切換過(guò)程中,MHA能做到快速自動(dòng)切換操作,而且還能***限度保持?jǐn)?shù)據(jù)的一致性
此架構(gòu)特點(diǎn):
1、安裝布署簡(jiǎn)單,不影響現(xiàn)有架構(gòu)
2、自動(dòng)監(jiān)控和故障轉(zhuǎn)移
3、保障數(shù)據(jù)一致性
4、故障切換方式可使用手動(dòng)或自動(dòng)多向選擇
5、適應(yīng)范圍大(適用任何存儲(chǔ)引擎)
MySQL+MMM架構(gòu)
MMM即Master-Master Replication Manager for MySQL(mysql主主復(fù)制管理器),是關(guān)于mysql主主復(fù)制配置的監(jiān)控、故障轉(zhuǎn)移和管理的一套可伸縮的腳本套件(在任何時(shí)候只有一個(gè)節(jié)點(diǎn)可以被寫(xiě)入),這個(gè)套件也能基于標(biāo)準(zhǔn)的主從配置的任意數(shù)量的從服務(wù)器進(jìn)行讀負(fù)載均衡,所以你可以用它來(lái)在一組居于復(fù)制的服務(wù)器啟動(dòng)虛擬ip,除此之外,它還有實(shí)現(xiàn)數(shù)據(jù)備份、節(jié)點(diǎn)之間重新同步功能的腳本。
MySQL本身沒(méi)有提供replication failover的解決方案,通過(guò)MMM方案能實(shí)現(xiàn)服務(wù)器的故障轉(zhuǎn)移,從而實(shí)現(xiàn)mysql的高可用。
此方案特點(diǎn):
1、安全、穩(wěn)定性較高,可擴(kuò)展性好
2、 對(duì)服務(wù)器數(shù)量要求至少三臺(tái)及以上
3、 對(duì)雙主(主從復(fù)制性要求較高)
4、 同樣可實(shí)現(xiàn)讀寫(xiě)分離
MySQL Cluster架構(gòu)
Mysql官方推出的集群高可用方案,由于本人沒(méi)有用過(guò),不好評(píng)價(jià)
摘自網(wǎng)絡(luò)上的一段解釋
MySQL Cluster 由一組計(jì)算機(jī)構(gòu)成,每臺(tái)計(jì)算機(jī)上均運(yùn)行著多種進(jìn)程,包括 MySQL服務(wù)器,NDB Cluster的數(shù)據(jù)節(jié)點(diǎn),管理服務(wù)器,以及(可能)專門(mén)的數(shù)據(jù)訪問(wèn)程序。
由于MySQL Cluster架構(gòu)復(fù)雜,部署費(fèi)時(shí)(通常需要DBA幾個(gè)小時(shí)的時(shí)間才能完成搭建),而依靠 MySQL Cluster Manager 只需一個(gè)命令即可完成,但 MySQL Cluster Manager 是收費(fèi)的。并且業(yè)內(nèi)資深人士認(rèn)為NDB 不適合大多數(shù)業(yè)務(wù)場(chǎng)景,而且有安全問(wèn)題。因此,使用的人數(shù)較少。
有興趣的可以研究下官方文檔:
https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-install-linux.html
歡迎大家在文未留言,發(fā)表自己對(duì)高可用架構(gòu)的一些看法和理解!!!