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