五分鐘技術(shù)趣談 | MMD數(shù)據(jù)庫(kù)高可用方案
Part 01
概述
Mysql作為市場(chǎng)上最受歡迎的數(shù)據(jù)庫(kù)之一,可以給業(yè)務(wù)提供穩(wěn)定的數(shù)據(jù)讀寫(xiě)能力。隨著業(yè)務(wù)場(chǎng)景多樣化,單一的數(shù)據(jù)庫(kù)管理已經(jīng)不滿足市場(chǎng)需求,逐漸的衍生出了多種類型的高可用方案,其中MHA最受歡迎,但MHA依賴分布式mha4服務(wù),容錯(cuò)性差,且造成浪費(fèi)資源。所以我們需要通過(guò)雙高可用方式來(lái)提高數(shù)據(jù)庫(kù)的穩(wěn)定性。
Part 02
組成
圖片
Mysql高可用包含3個(gè)模塊,具體模塊詳情如下:
?keeplived服務(wù):主要提供可用VIP;
?Mysql_cluster服務(wù):實(shí)現(xiàn)用戶數(shù)據(jù)的讀寫(xiě)和故障遷移;
?同步檢測(cè)服務(wù):通過(guò)撥測(cè)檢查服務(wù)同步狀態(tài),進(jìn)行異常處理。
Part 03
方案介紹
1??通過(guò)域名對(duì)外提供服務(wù);
2??兩臺(tái)Mysql都可讀寫(xiě),互為主備,masterA負(fù)責(zé)數(shù)據(jù)的寫(xiě)入,masterB備用;
3??masterA是masterB的主庫(kù),masterB又是masterA的主庫(kù),它們互為主從;
4??兩臺(tái)主庫(kù)之間做高可用,可以采用keepalived方案(使用VIP對(duì)外提供服務(wù));
5??masterA或masterB均不因異常恢復(fù)后而搶占VIP(nopreempt);
6??masterA和masterB均有同步數(shù)據(jù)探測(cè),同步異常及時(shí)處理。
Part 04
方案優(yōu)勢(shì)
數(shù)據(jù)庫(kù)高可用方案具有以下優(yōu)勢(shì):
? 多集群管理:降低了多種異常發(fā)生造成的影響,提高了環(huán)境的穩(wěn)定性。
? 數(shù)據(jù)準(zhǔn)確性:Mysql單節(jié)點(diǎn)寫(xiě)入,不容易造成數(shù)據(jù)覆蓋、主鍵重復(fù)等問(wèn)題,解決了同步異常無(wú)法確定以哪個(gè)庫(kù)為準(zhǔn)的問(wèn)題。
? 降本增效:與傳統(tǒng)數(shù)據(jù)庫(kù)高可用相比,服務(wù)器資源占用降低了30%以上、節(jié)省運(yùn)維成本40%以上。
? 檢測(cè)機(jī)制:頻率性監(jiān)測(cè)機(jī)制,確保及時(shí)發(fā)現(xiàn)問(wèn)題,自身治愈。
Part 05
方案效果
masterA和masterB可以采用單/雙遞增主鍵:
1.解決Mysql節(jié)點(diǎn)都可以寫(xiě)入,極其容易造成主鍵重復(fù),進(jìn)而導(dǎo)致主從同步失敗的問(wèn)題。
2.標(biāo)識(shí)數(shù)據(jù)通過(guò)哪個(gè)數(shù)據(jù)庫(kù)寫(xiě)入。
Part 06
結(jié)束語(yǔ)
在整體方案上,如果要保證數(shù)據(jù)的準(zhǔn)確性,就依賴于單寫(xiě),技術(shù)架構(gòu)上就存在單點(diǎn)壓力過(guò)載的風(fēng)險(xiǎn),目前數(shù)據(jù)庫(kù)單寫(xiě)是瓶頸。讀寫(xiě)分離、多寫(xiě)將是未來(lái)的主要發(fā)展趨勢(shì),技術(shù)架構(gòu)難解決的問(wèn)題,我們可以通過(guò)業(yè)務(wù)側(cè)來(lái)解決,根據(jù)業(yè)務(wù)分類選擇高可用架構(gòu)中不同的數(shù)據(jù)庫(kù)存儲(chǔ),可以保證單業(yè)務(wù)側(cè)的數(shù)據(jù)完整性,就能解決單寫(xiě)和單點(diǎn)壓力過(guò)載的問(wèn)題。為不同業(yè)務(wù)應(yīng)用場(chǎng)景提供相匹配的解決方案,實(shí)現(xiàn)多種應(yīng)用場(chǎng)景才是我們的初衷。