高可用解決方案:同城雙活?異地雙活?異地多活?

- 前言 -

- 常見的高可用解決方案 -
冷備
雙機(jī)熱備
同城雙活
異地雙活
異地多活

- 冷備 -
簡單; 快速備份(相對(duì)于其他備份方式); 快速恢復(fù)。只需要將備份文件拷貝回工作目錄即完成恢復(fù)過程(亦或者修改數(shù)據(jù)庫的配置,直接將備份的目錄修改為數(shù)據(jù)庫工作目錄)。更甚,通過兩次mv命令就可瞬間完成恢復(fù); 可以按照時(shí)間點(diǎn)恢復(fù)。比如,幾天前發(fā)生的拼多多優(yōu)惠券漏洞被人刷掉很多錢,可以根據(jù)前一個(gè)時(shí)間點(diǎn)進(jìn)行還原,“挽回?fù)p失”。
服務(wù)需要停機(jī)。n個(gè)9肯定無法做到了。然后,以前我們的停機(jī)冷備是在凌晨沒有人使用的時(shí)候進(jìn)行,但是現(xiàn)在很多的互聯(lián)網(wǎng)應(yīng)用已經(jīng)是面向全球了,所以,任何時(shí)候都是有人在使用的。 數(shù)據(jù)丟失。如果不采取措施,那么在完成了數(shù)據(jù)恢復(fù)后,備份時(shí)間點(diǎn)到還原時(shí)間內(nèi)的數(shù)據(jù)會(huì)丟失。傳統(tǒng)的做法,是冷備還原以后,通過數(shù)據(jù)庫日志手動(dòng)恢復(fù)數(shù)據(jù)。比如通過redo日志,更甚者,我還曾經(jīng)通過業(yè)務(wù)日志去手動(dòng)回放請(qǐng)求恢復(fù)數(shù)據(jù)。恢復(fù)是極大的體力活,錯(cuò)誤率高,恢復(fù)時(shí)間長。 冷備是全量備份。全量備份會(huì)造成磁盤空間浪費(fèi),以及容量不足的問題,只能通過將備份拷貝到其他移動(dòng)設(shè)備上解決。所以,整個(gè)備份過程的時(shí)間其實(shí)更長了。想象一下每天拷貝幾個(gè)T的數(shù)據(jù)到移動(dòng)硬盤上,需要多少移動(dòng)硬盤和時(shí)間。并且,全量備份是無法定制化的,比如只備份某一些表,是無法做到的。

- 雙機(jī)熱備 -
Active/Standby模式

- 雙機(jī)互備 -

- 同城雙活 -



- 異地雙活 -


對(duì)于個(gè)別一致性要求很高的應(yīng)用,我們提供了一種強(qiáng)一致的方案(Global Zone),Globa Zone是一種跨機(jī)房的讀寫分離機(jī)制,所有的寫操作被定向到一個(gè) Master 機(jī)房進(jìn)行,以保證一致性,讀操作可以在每個(gè)機(jī)房的 Slave庫執(zhí)行,也可以 bind 到 Master 機(jī)房進(jìn)行,這一切都基于我們的數(shù)據(jù)庫訪問層(DAL)完成,業(yè)務(wù)基本無感知。

- 異地多活 -





- 思考 -
假設(shè)你在做餓了么的開發(fā),服務(wù)按照異地多活方式部署,sharding key根據(jù)省市區(qū)進(jìn)行分片。假設(shè)買家在多個(gè)城市交匯的地方,比如,十字路口的四個(gè)位置分別是4個(gè)城市,那么如何處理才能讓他拉到比較正常的數(shù)據(jù)? 你們現(xiàn)在的業(yè)務(wù)模塊中,哪些業(yè)務(wù)是可以做多活的,哪些無法做多活? 所有的業(yè)務(wù)都要做多活嗎?還是只需要核心業(yè)務(wù)做多活?
作者:Dong GuoChao
來源:https://blog.dogchao.cn/?p=299

評(píng)論
圖片
表情
