《如何打造MySQL高可用平臺(2)》要點(diǎn):
本文介紹了如何打造MySQL高可用平臺(2),希望對您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:MYSQL高可用 / MYSQL調(diào)優(yōu)
筆者之前一直都在公司云存儲中心工作,由于種種原因,2015年年中調(diào)到了運(yùn)維部的數(shù)據(jù)庫團(tuán)隊(duì),在這里才發(fā)現(xiàn),rds項(xiàng)目其實(shí)只是在數(shù)據(jù)庫運(yùn)維平臺中走出了很小的一步。為了提供全方位的數(shù)據(jù)庫云服務(wù)平臺,于是我們開始打造了全新的數(shù)據(jù)庫配置中心,同時(shí)提供MySQL、Redis、Mongodb等數(shù)據(jù)庫和緩存內(nèi)部云服務(wù)。
與此同時(shí),之前在rds項(xiàng)目中實(shí)現(xiàn)的4層代理的缺點(diǎn)也越來越明顯:
1、只能使用MySQL主庫,M-M-S結(jié)構(gòu)是的MySQL資源極其浪費(fèi);
2、只能在單機(jī)房使用,跨機(jī)房訪問效率非常低;
3、運(yùn)維功能太少,由于采用iptables,在代理機(jī)器上無法看到任何的連接信息,也無法捕獲任何業(yè)務(wù)訪問的指標(biāo),甚至于連接信息都無法獲取;
基于以上幾點(diǎn)原因,筆者決定開發(fā)基于7層應(yīng)用層的MySQL代理層平臺,系統(tǒng)的具體架構(gòu)如下所示:
clipboard.png
由于代理層是自己實(shí)現(xiàn)的應(yīng)用程序,所以筆者在代碼中很容易就實(shí)現(xiàn)以下幾個(gè)核心的功能:
1、授權(quán)認(rèn)證模型;
2、SQL攔截;
3、負(fù)載均衡;
4、讀寫分離;
5、高可用;
6、大SQL隔離;
除了這些特性以外,基于我們公司的多機(jī)房特點(diǎn),筆者給代理層添加了機(jī)房感知能力。在整個(gè)數(shù)據(jù)庫配置中心,每個(gè)代理層程序、每個(gè)MySQL實(shí)例都有機(jī)房屬性。有了機(jī)房屬性,代理層可以實(shí)現(xiàn)自動就近訪問MySQL的能力,從而提高了系統(tǒng)性能同時(shí),簡化了業(yè)務(wù)程序的部署。
一個(gè)典型的業(yè)務(wù)部署例子如下:
clipboard.png
從上圖可以看出,應(yīng)用程序永遠(yuǎn)也不再需要考慮多機(jī)房高可用、負(fù)載均衡、讀寫分離的問題。而且由于代理層實(shí)現(xiàn)了高可用功能,一旦發(fā)現(xiàn)主寫MySQL故障,會自動把主讀切換為主寫,從而在秒級實(shí)現(xiàn)FAILOVER。
由于我們的代理層采用了平臺級的設(shè)計(jì),上圖中的代理層可以連接多套業(yè)務(wù)(MySQL集群),新的業(yè)務(wù)只需要在zookeeper配置好,代理層就會自動感知,業(yè)務(wù)方馬上能夠在代理層上使用,而不需要為每個(gè)業(yè)務(wù)部署自己的獨(dú)立的代理層,從而極大的減少了運(yùn)維成本。
除此以外采用代理層還為數(shù)據(jù)庫云服務(wù)平臺帶來不少好處:
業(yè)務(wù)方連接代理機(jī)器和相應(yīng)的端口,底層MySQL主從切換可以對業(yè)務(wù)方透明;
MySQL實(shí)例維護(hù)或者遷移可以對業(yè)務(wù)方透明(一鍵遷移);
MySQL業(yè)務(wù)擴(kuò)容/縮容也對業(yè)務(wù)透明(一鍵擴(kuò)縮容);
代理層上線推廣到現(xiàn)在,已經(jīng)有好幾百套的MySQL集群跑在上面了,MySQL的高可用平臺成功落地。
Mongodb相對于MySQL的一個(gè)很大的優(yōu)勢就是高可用性,MySQL的高可用方案很多,但是完美的方式不多,代理層是在我們公司成功實(shí)施的一套平臺,希望有機(jī)會能和業(yè)界一起探討和學(xué)習(xí),實(shí)現(xiàn)更多完美的解決方案。
代理層雖然已經(jīng)在公司大規(guī)模使用,但是還有很多發(fā)展和改善的空間,隨著MySQL 5.6和MySQL 5.7的廣泛應(yīng)用,GTID已經(jīng)非常成熟,由于公司內(nèi)部使用場景少,代理層的切換還沒有實(shí)現(xiàn)GTID模式的切換,所以下一階段,筆者會考慮實(shí)現(xiàn)基于GTID的高可用模式。
原文:http://www.jianshu.com/p/bc50221972ca
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/34_2.html