數(shù)據(jù)庫是企業(yè)核心業(yè)務(wù)運(yùn)行的重要組成部分,數(shù)據(jù)是企業(yè)的生命線,如果數(shù)據(jù)庫出現(xiàn)宕機(jī)、數(shù)據(jù)丟失或不可用等問題,將會(huì)對企業(yè)的生產(chǎn)、營銷和決策產(chǎn)生難以預(yù)估的影響,因此,一套高可用的數(shù)據(jù)庫架構(gòu)對于企業(yè)來說至關(guān)重要,可以最大化保證業(yè)務(wù)穩(wěn)定性和數(shù)據(jù)可靠性。騰訊云MySQL推出全場景高可用性架構(gòu)(All-Scenario High Availability Architecture,AS-HAA),用戶可根據(jù)實(shí)際業(yè)務(wù)需求、業(yè)務(wù)類型自行配置。
架構(gòu)概述
數(shù)據(jù)庫的架構(gòu)就好比房屋建造結(jié)構(gòu),如果一個(gè)房子只有一扇門和一片玻璃窗,那么一旦遭到攻擊或破壞,整個(gè)房子就處于危險(xiǎn)狀態(tài)。同樣,一個(gè)沒有高可用架構(gòu)的應(yīng)用程序,在面臨硬件設(shè)備故障、網(wǎng)絡(luò)癱瘓、自然災(zāi)害以及人為錯(cuò)誤等問題時(shí),也很容易受到威脅。高可用架構(gòu)就像房屋加固結(jié)構(gòu)和消防系統(tǒng),在故障發(fā)生時(shí)實(shí)現(xiàn)快速恢復(fù),最大化降低損失。
但是,我國業(yè)內(nèi)尚未給出一套完整的全場景高可用性架構(gòu)解決方案?;诖?,騰訊云MySQL推出全場景高可用性架構(gòu)AS-HAA,為用戶提供高可用架構(gòu)搭建的全新思路。該架構(gòu)基于跨可用區(qū)部署、異地備份保障,搭配數(shù)據(jù)庫代理和彈性CPU能力,結(jié)合配套生態(tài)工具共同打造,可有效提高系統(tǒng)穩(wěn)定性和可用性、減少業(yè)務(wù)停機(jī)時(shí)間和數(shù)據(jù)丟失率、提高故障診斷和恢復(fù)效率、提升數(shù)據(jù)處理能力和響應(yīng)速度等,全方位全流程保障業(yè)務(wù)穩(wěn)定運(yùn)行。
圖1:騰訊云MySQL全場景高可用性架構(gòu)
騰訊云MySQL全場景高可用性架構(gòu)可為用戶的實(shí)際業(yè)務(wù)帶來諸多幫助,主要包括以下方面:
1.提升穩(wěn)定性:云數(shù)據(jù)庫MySQL全場景高可用性架構(gòu)的可擴(kuò)展性強(qiáng),在突發(fā)流量場景和熱點(diǎn)場景下優(yōu)勢更為明顯,通過新增實(shí)例或數(shù)據(jù)庫代理節(jié)點(diǎn),均衡各個(gè)實(shí)例之間的負(fù)載,實(shí)現(xiàn)系統(tǒng)的快速擴(kuò)容;支持CPU自動(dòng)彈性擴(kuò)縮容,保障業(yè)務(wù)平穩(wěn)運(yùn)行的同時(shí)輕松應(yīng)對流量高峰;在跨可用區(qū)部署架構(gòu)中,就近訪問能力也可幫助用戶降低網(wǎng)絡(luò)延時(shí),助力前端業(yè)務(wù)絲滑體驗(yàn);
2.保障可用性:云數(shù)據(jù)庫MySQL全組件實(shí)現(xiàn)跨可用區(qū)/跨地域部署,降低單點(diǎn)故障風(fēng)險(xiǎn),即某個(gè)可用區(qū)或某個(gè)實(shí)例出現(xiàn)故障,可自動(dòng)切換到其他可用區(qū)上的備用節(jié)點(diǎn),整個(gè)系統(tǒng)仍可以保持穩(wěn)定運(yùn)行;其次,通過將數(shù)據(jù)庫部署在多地?cái)?shù)據(jù)中心,可以實(shí)現(xiàn)跨區(qū)域容災(zāi),從而降低故障發(fā)生的概率。此外,通過備份、數(shù)據(jù)同步(三節(jié)點(diǎn)支持強(qiáng)同步)等機(jī)制,可以減少業(yè)務(wù)停機(jī)時(shí)間和數(shù)據(jù)丟失率,提高了業(yè)務(wù)的容災(zāi)性和數(shù)據(jù)可靠性、完整性;
3.提高數(shù)據(jù)處理能力和響應(yīng)速度:通過數(shù)據(jù)庫代理將負(fù)載分布到多個(gè)數(shù)據(jù)庫節(jié)點(diǎn)上,從而提高數(shù)據(jù)處理能力和響應(yīng)速度。同時(shí),可自動(dòng)將流量切換到正常運(yùn)行的節(jié)點(diǎn)上,避免了數(shù)據(jù)庫節(jié)點(diǎn)故障導(dǎo)致的數(shù)據(jù)訪問異常;
4.提高故障診斷和恢復(fù)效率:通過數(shù)據(jù)庫智能管家DBbrain 7 24h監(jiān)控,幫助DBA快速定位問題解決問題;同時(shí),備份、數(shù)據(jù)同步等機(jī)制也有助于故障恢復(fù)和數(shù)據(jù)恢復(fù),縮短故障修復(fù)時(shí)間;
綜上所述,騰訊云MySQL全場景高可用性架構(gòu)是最大化保障數(shù)據(jù)庫系統(tǒng)穩(wěn)定運(yùn)行、數(shù)據(jù)可靠性、安全性和高性能的解決方案,對于保障企業(yè)的正常運(yùn)轉(zhuǎn)和業(yè)務(wù)的發(fā)展至關(guān)重要。下文將為您詳細(xì)介紹騰訊云MySQL全場景高可用性架構(gòu)的配置細(xì)節(jié)。
配置細(xì)節(jié)
在新版控制臺(tái)界面上,云數(shù)據(jù)庫MySQL從可用性、性能、安全三個(gè)方面出發(fā),提供給用戶數(shù)據(jù)庫功能配置詳情。用戶可根據(jù)業(yè)務(wù)情況,選擇可用性級(jí)別,參考對應(yīng)配置。此處,我們選擇全場景高可用性架構(gòu)配置,用戶可參考各配置項(xiàng)狀態(tài)欄查看當(dāng)前實(shí)例是否已具備該能力。
圖2:實(shí)例詳情頁界面(灰度中)-配置詳情
2.1高可用架構(gòu)部署
全場景高可用性架構(gòu)部署包含跨可用區(qū)主實(shí)例、異地跨可用區(qū)災(zāi)備實(shí)例以及跨地域備份組成??缈捎脜^(qū)部署是指將數(shù)據(jù)庫系統(tǒng)分布在多個(gè)可用區(qū)中,以提高系統(tǒng)的可用性和容錯(cuò)性。簡單來說,就是將數(shù)據(jù)庫備份到不同的可用區(qū),從而保證在某個(gè)可用區(qū)發(fā)生故障時(shí),其他可用區(qū)中的數(shù)據(jù)庫可以繼續(xù)服務(wù)。
跨可用區(qū)部署的優(yōu)點(diǎn)在于提高了數(shù)據(jù)庫系統(tǒng)的可用性和容錯(cuò)性,從而降低了系統(tǒng)的單點(diǎn)故障風(fēng)險(xiǎn)。另外,它還能降低訪問延遲,提高了用戶請求響應(yīng)速度,從而保證業(yè)務(wù)更加穩(wěn)定和可靠。
全場景高可用性架構(gòu)建議用戶選擇三節(jié)點(diǎn)進(jìn)行配置,三節(jié)點(diǎn)采用一主兩備架構(gòu),支持強(qiáng)同步復(fù)制方式,能為用戶提供金融級(jí)的可靠性和高可用性。以圖1為例,全場景高可用性架構(gòu)支持業(yè)務(wù)的跨可用區(qū)部署,具體方案如下:
1.主實(shí)例部署在廣州三區(qū),主要負(fù)責(zé)讀寫操作,提供主要的服務(wù)訪問入口;
2.備節(jié)點(diǎn)分別部署在廣州三區(qū)和廣州六區(qū),從主實(shí)例處同步數(shù)據(jù),并實(shí)現(xiàn)數(shù)據(jù)備份和災(zāi)備故障轉(zhuǎn)移;
3.備份中心可以同時(shí)部署在廣州三區(qū)和北京地域中,以保證數(shù)據(jù)的安全可靠性;
4.災(zāi)備實(shí)例部署在上海地域,災(zāi)備主實(shí)例和災(zāi)備備節(jié)點(diǎn)分別部署在上海八區(qū)和上海五區(qū),負(fù)責(zé)備份主實(shí)例的數(shù)據(jù),并在災(zāi)難恢復(fù)期間提供主要數(shù)據(jù)處理和服務(wù)能力,從而保證數(shù)據(jù)庫的高可用性和穩(wěn)定性;
5.數(shù)據(jù)庫的跨可用區(qū)部署可以通過數(shù)據(jù)庫代理將請求轉(zhuǎn)發(fā)到不同的數(shù)據(jù)庫實(shí)例,并保證請求可靠到達(dá)和響應(yīng),從而提高系統(tǒng)的響應(yīng)速度和可用性。同時(shí),可在多個(gè)可用區(qū)內(nèi)設(shè)置只讀實(shí)例,實(shí)現(xiàn)讀寫分離,降低主實(shí)例讀負(fù)載壓力;
如果廣州三區(qū)的主實(shí)例不幸宕機(jī),全場景高可用性架構(gòu)可提供三重保障機(jī)制,確保業(yè)務(wù)在主實(shí)例宕機(jī)后的快速恢復(fù)和無縫切換,減少由此帶來的損失,方案如下:
1.備節(jié)點(diǎn)接管:當(dāng)主實(shí)例宕機(jī)后,備節(jié)點(diǎn)可以在數(shù)秒內(nèi)自動(dòng)接管為主實(shí)例,成為新的主節(jié)點(diǎn),并提供讀寫服務(wù)。此時(shí),業(yè)務(wù)可以無需任何手動(dòng)干預(yù),無縫切換到新的主節(jié)點(diǎn)上繼續(xù)提供服務(wù);
2.災(zāi)備節(jié)點(diǎn)接管:如果備節(jié)點(diǎn)也無法正常提供服務(wù),災(zāi)備節(jié)點(diǎn)被快速拉起接管為主節(jié)點(diǎn),以保證業(yè)務(wù)的無縫切換和高可用性;
3.備份中心及時(shí)恢復(fù)數(shù)據(jù):此外,備份中心也會(huì)及時(shí)備份主實(shí)例的數(shù)據(jù),并在主實(shí)例不可恢復(fù)的情況下,恢復(fù)數(shù)據(jù)到可用實(shí)例上,以保證業(yè)務(wù)的完整性和穩(wěn)定性;
2.2數(shù)據(jù)庫代理(proxy)
數(shù)據(jù)庫代理是介于數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫服務(wù)器之間的中間層,主要是用于處理數(shù)據(jù)庫請求和響應(yīng)等工作。云數(shù)據(jù)庫MySQL提供的數(shù)據(jù)庫代理具體支持以下能力:
1.讀寫分離
數(shù)據(jù)庫代理相當(dāng)于是個(gè)中轉(zhuǎn)站,可以將所有請求按權(quán)重分發(fā)給數(shù)據(jù)庫的主從節(jié)點(diǎn)、只讀實(shí)例,以此實(shí)現(xiàn)讀寫分離,從而降低主庫負(fù)載,提高整個(gè)系統(tǒng)的性能和可用性,尤其適用于請求量高、連接數(shù)多的業(yè)務(wù)。同時(shí),proxy支持開啟事物拆分能力,可將一個(gè)事物內(nèi)的讀和寫分發(fā)到不同實(shí)例上去執(zhí)行,以此降低主實(shí)例負(fù)載。同時(shí),數(shù)據(jù)庫代理采用集群架構(gòu)部署,多節(jié)點(diǎn)可保證故障平滑轉(zhuǎn)移。
2.獨(dú)立訪問
云數(shù)據(jù)庫MySQL提供的數(shù)據(jù)庫代理服務(wù)可獨(dú)立于主實(shí)例訪問,即數(shù)據(jù)庫代理擁有獨(dú)立的訪問地址,最大程度降低網(wǎng)絡(luò)安全風(fēng)險(xiǎn)和維護(hù)成本。更高級(jí)的,用戶可根據(jù)業(yè)務(wù)的需要通過不同的代理節(jié)點(diǎn)進(jìn)行負(fù)載分配,給到不同業(yè)務(wù)相應(yīng)的代理地址即可。
3.跨可用部署+就近訪問
基于云數(shù)據(jù)庫MySQL跨可用區(qū)部署特性,proxy也支持跨可用區(qū)掛載,就近的客戶端流量自動(dòng)路由到相應(yīng)的代理節(jié)點(diǎn)上(即就近訪問功能),以提高訪問效率和降低延遲。
在默認(rèn)權(quán)重配置下,全場景高可用性架構(gòu)會(huì)自動(dòng)選擇最短訪問路徑。
以圖3為例,當(dāng)客戶端從北京七區(qū)發(fā)送讀寫訪問請求時(shí),系統(tǒng)會(huì)優(yōu)先將讀寫請求送往北京七區(qū)的數(shù)據(jù)庫代理節(jié)點(diǎn),北京七區(qū)的數(shù)據(jù)庫代理節(jié)點(diǎn)會(huì)進(jìn)行讀寫分離操作,將讀請求優(yōu)先送往同可用區(qū)的只讀實(shí)例,將寫請求送往主實(shí)例。
圖3:全場景高可用性架構(gòu)-就近訪問能力(簡易版)
4.防閃斷能力
在數(shù)據(jù)庫運(yùn)維中,會(huì)根據(jù)業(yè)務(wù)的需要經(jīng)常對實(shí)例進(jìn)行調(diào)整,例如配置變更、計(jì)劃內(nèi)HA切換、計(jì)劃內(nèi)重啟等,此類操作往往會(huì)中斷會(huì)話,導(dǎo)致連接閃斷、新建連接失敗等問題。proxy提供的防閃斷能力就是用來解決此類場景下可能出現(xiàn)的連接問題。當(dāng)proxy感知到計(jì)劃內(nèi)的有損行為時(shí),就會(huì)與切換前的主節(jié)點(diǎn)斷開連接,將客戶端到proxy上的連接恢復(fù)至切換后主節(jié)點(diǎn)的連接上,通過session track能力將會(huì)話相關(guān)的系統(tǒng)變量、用戶變量、字符集編碼信息轉(zhuǎn)移至新的后端連接上,實(shí)現(xiàn)對應(yīng)用程序端無損切換。
經(jīng)過測試,在主備切換、內(nèi)核小版本升級(jí)、調(diào)整實(shí)例規(guī)格的場景下,云數(shù)據(jù)庫MySQL可保持100%的連接?;盥?。
圖4:全場景高可用性架構(gòu)-防閃斷能力
2.3 CPU彈性擴(kuò)容
CPU彈性擴(kuò)容是云數(shù)據(jù)庫MySQL最新推出的能力項(xiàng),指的是基于云環(huán)境通過動(dòng)態(tài)分配CPU資源,可實(shí)現(xiàn)CPU資源的手動(dòng)/自動(dòng)調(diào)整和彈性擴(kuò)展,主打一個(gè)快速響應(yīng)和變更。當(dāng)數(shù)據(jù)庫訪問量增加或CPU資源占用率上升時(shí),可以自動(dòng)添加更多的CPU資源,并在高峰期結(jié)束后自動(dòng)縮減。這種彈性擴(kuò)容的方式,能夠使用戶根據(jù)業(yè)務(wù)的需求和業(yè)務(wù)量動(dòng)態(tài)地配置數(shù)據(jù)庫的CPU資源,從而確保更好的數(shù)據(jù)庫性能、可用性和穩(wěn)定性,提高平臺(tái)的彈性和可靠性。
圖5:全場景高可用性架構(gòu)-CPU彈性擴(kuò)容能力-自動(dòng)擴(kuò)容(灰度中)
圖6:全場景高可用性架構(gòu)-CPU彈性擴(kuò)容能力-手動(dòng)擴(kuò)容(灰度中)
使用CPU彈性擴(kuò)容的好處主要體現(xiàn)在:
1.彈性控制成本:CPU彈性擴(kuò)容可以保證在高峰期為用戶提供更加穩(wěn)定的服務(wù),避免由于CPU資源瓶頸造成的性能下降和不可用性問題,同時(shí)在業(yè)務(wù)需求下降時(shí)又可以自動(dòng)縮減資源,減少浪費(fèi)和費(fèi)用;
2.提高靈活性:彈性擴(kuò)容可以根據(jù)業(yè)務(wù)需求和用戶量自動(dòng)調(diào)整CPU資源,大大提高平臺(tái)的靈活性和可擴(kuò)展性。使用彈性擴(kuò)容功能的數(shù)據(jù)庫系統(tǒng),在彈性調(diào)整過程中能夠更好地適應(yīng)不斷變化的業(yè)務(wù)需求和用戶數(shù)量,從而可以快速擴(kuò)展或縮小規(guī)模;
3.提高性能和可用性:彈性擴(kuò)容功能可以根據(jù)實(shí)時(shí)的CPU使用情況,動(dòng)態(tài)地調(diào)整CPU資源的分配,以加快數(shù)據(jù)庫的響應(yīng)速度和提高數(shù)據(jù)庫的可用性,從而更好地滿足業(yè)務(wù)需求;
2.4配套生態(tài)工具
1.DBbrain智能管家,7 24h全方位監(jiān)測,第一時(shí)間發(fā)現(xiàn)問題定位問題
云數(shù)據(jù)庫MySQL全面接入DBbrain,可實(shí)現(xiàn)數(shù)據(jù)庫性能監(jiān)控、安全檢測和優(yōu)化診斷,通過智能分析和建議,協(xié)助用戶快速解決數(shù)據(jù)庫性能和安全問題,提升數(shù)據(jù)庫效率和用戶體驗(yàn)。具體地,DBbrain可提供KILL會(huì)話功能、SQL限流能力、熱點(diǎn)更新保護(hù)能力,并且可開啟自治服務(wù),無需人工干預(yù);在診斷分析能力上,DBbrain可提供慢SQL分析、空間分析、SQL優(yōu)化、審計(jì)日志分析等能力,7 24h全方位診斷優(yōu)化。
圖7:實(shí)例詳情頁界面(灰度中)-7 24h智能監(jiān)測
2.混沌演練平臺(tái),全真模擬真實(shí)業(yè)務(wù)場景,提前預(yù)知應(yīng)用情況
騰訊云混沌演練平臺(tái)可以幫助用戶模擬各種突發(fā)事件和異常場景,提高系統(tǒng)的容錯(cuò)能力和可靠性。搭建好真實(shí)的數(shù)據(jù)庫架構(gòu)后,平臺(tái)會(huì)對業(yè)務(wù)進(jìn)行全方位的壓力測試,對傳統(tǒng)的異常場景進(jìn)行模擬并進(jìn)行自動(dòng)化部署管理,從而能夠更好地發(fā)現(xiàn)和診斷系統(tǒng)中的潛在問題,以提升業(yè)務(wù)的質(zhì)量和可靠性。
圖8:騰訊云混沌演練平臺(tái)-跨可用區(qū)容災(zāi)演練
就近訪問能力
性能測試
為了更好的向讀者展現(xiàn)全場景高可用性架構(gòu)的性能情況,在測試環(huán)境保持一致的條件下,我們做了三組對比測試:
3.1測試環(huán)境
地域:北京-北京六區(qū)、北京七區(qū);
客戶端規(guī)格:CVM,4C16G;
客戶端操作系統(tǒng):TencentOS Server 3.2;
測試實(shí)例規(guī)格:主實(shí)例通用型4C16G,只讀實(shí)例4C16G,數(shù)據(jù)庫代理1.3.5 2核4000MB;
測試實(shí)例版本:MySQL 8.0;
測試工具:SysBench 1.0.20;
測試數(shù)據(jù)量:10 tables 100t;
3.2測試詳情
三組對比測試主要用于比較同可用區(qū)部署和跨可用區(qū)部署之間的性能差異,以及數(shù)據(jù)庫代理提供的就近訪問功能的性能情況。
第一組:同可用區(qū)部署
部署搭配為:CVM(七區(qū))+主實(shí)例(七區(qū))+數(shù)據(jù)庫代理(七區(qū))+只讀實(shí)例(七區(qū))
第二組:跨可用區(qū)部署
部署搭配為:CVM(六區(qū))+主實(shí)例(七區(qū))+數(shù)據(jù)庫代理(七區(qū))+只讀實(shí)例(七區(qū))
第三組:跨可用區(qū)部署就近訪問
部署搭配為:CVM(六區(qū))+主實(shí)例(七區(qū))+數(shù)據(jù)庫代理(六區(qū)、七區(qū))+只讀實(shí)例(六區(qū)、七區(qū))
圖9:三組對比測試架構(gòu)圖(簡易版)
3.3測試結(jié)果
由于全場景高可用架構(gòu)中的就近訪問能力最突出的性能表現(xiàn)就是降低跨可用區(qū)訪問的響應(yīng)時(shí)間(Response Time,RT),我們重點(diǎn)關(guān)注時(shí)延的測試結(jié)果。測試結(jié)果如下圖所示,可以看出:就近訪問能力使得跨可用區(qū)部署也能有更低的網(wǎng)絡(luò)延遲,在低并發(fā)下效果更加顯著,就近訪問的響應(yīng)時(shí)長最佳可達(dá)到跨可用區(qū)訪問響應(yīng)時(shí)長的17%。
圖10:只讀場景下,三組對比測試的時(shí)延情況
總結(jié)
騰訊云MySQL全場景高可用性架構(gòu)基于跨可用區(qū)部署、異地備份保障與配套生態(tài)工具,搭配數(shù)據(jù)庫代理和彈性CPU能力等多項(xiàng)功能,旨在全方位保障業(yè)務(wù)的穩(wěn)定運(yùn)行。該架構(gòu)的主要特點(diǎn)包括:
1.跨可用區(qū)部署:采用跨可用區(qū)部署技術(shù),能夠?qū)崿F(xiàn)在多個(gè)可用區(qū)分布數(shù)據(jù)庫實(shí)例,并通過騰訊云提供的專網(wǎng)互聯(lián)。這樣可以確保單可用區(qū)或單地域的故障不會(huì)影響到其他可用區(qū)和地域,在故障時(shí)提供更高的業(yè)務(wù)可靠性和穩(wěn)定性。
2.異地備份保障:該架構(gòu)采用異地備份技術(shù),可以將數(shù)據(jù)自動(dòng)異地備份到多個(gè)地域,提供備份的持久存儲(chǔ),并在主庫數(shù)據(jù)發(fā)生災(zāi)難性故障時(shí),能夠及時(shí)恢復(fù)數(shù)據(jù)并處理業(yè)務(wù),從而確保數(shù)據(jù)的安全性和完整性。
3.數(shù)據(jù)庫代理和彈性CPU能力:該架構(gòu)提供數(shù)據(jù)庫代理和彈性CPU能力,可以動(dòng)態(tài)調(diào)整CPU資源的分配和優(yōu)化數(shù)據(jù)庫訪問,從而提高數(shù)據(jù)處理能力和響應(yīng)速度,緩解數(shù)據(jù)庫壓力和瓶頸問題。
4.生態(tài)工具支持:該架構(gòu)提供多項(xiàng)配套生態(tài)工具支持,包括智能管家DBbrain、混沌演練平臺(tái)等,通過分析性能、檢測安全漏洞和解決問題實(shí)現(xiàn)監(jiān)控診斷和容錯(cuò)提升,從而全流程全方位保障業(yè)務(wù)的穩(wěn)定運(yùn)行。
綜上,騰訊云MySQL全場景高可用性架構(gòu)是騰訊云通過多種技術(shù)手段和服務(wù)保障業(yè)務(wù)穩(wěn)定運(yùn)行的數(shù)據(jù)庫解決方案,用戶可根據(jù)自己的實(shí)際業(yè)務(wù)需求進(jìn)行合理配置,為業(yè)務(wù)提供更高保障。