W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
(1)并發(fā)量大,流量大的互聯(lián)網(wǎng)架構(gòu),一般來說,數(shù)據(jù)庫上層都有一個服務(wù)層,服務(wù)層記錄了“業(yè)務(wù)庫名”與“數(shù)據(jù)庫實(shí)例”的映射關(guān)系,通過數(shù)據(jù)庫連接池向數(shù)據(jù)庫路由sql語句以執(zhí)行:
提問:如果數(shù)據(jù)量持續(xù)增大,分2個庫性能扛不住了,該怎么辦呢?
回答:繼續(xù)水平拆分,拆成更多的庫,降低單庫數(shù)據(jù)量,增加庫主庫實(shí)例(機(jī)器)數(shù)量,提高性能。
在討論平滑方案之前,先簡要說明下“x庫拆y庫”停服務(wù)的方案:
(1)站點(diǎn)掛一個公告“為了為廣大用戶提供更好的服務(wù),本站點(diǎn)/游戲?qū)⒃诮裢?0:00-2:00之間升級,屆時將不能登錄,用戶周知”
(2)停服務(wù)
(3)新建y個庫,做好高可用
(4)數(shù)據(jù)遷移,重新分布,寫一個數(shù)據(jù)遷移程序,從x個庫里導(dǎo)入到y(tǒng)個庫里,路由規(guī)則由%x升級為%y
(5)修改服務(wù)配置,原來x行配置升級為y行
(6)重啟服務(wù),連接新庫重新對外提供服務(wù)
整個過程中,最耗時的是第四步數(shù)據(jù)遷移。
回滾方案:
如果數(shù)據(jù)遷移失敗,或者遷移后測試失敗,則將配置改回x庫,恢復(fù)服務(wù),改天再掛公告。
方案缺點(diǎn):
(1)停服務(wù),不高可用
(2)技術(shù)同學(xué)壓力大,所有工作要在規(guī)定時間內(nèi)做完,根據(jù)經(jīng)驗(yàn),壓力越大約容易出錯(這一點(diǎn)很致命)
(3)如果有問題第一時間沒檢查出來,啟動了服務(wù),運(yùn)行一段時間后再發(fā)現(xiàn)有問題,難以回滾,需要回檔,可能會丟失一部分?jǐn)?shù)據(jù)
主要修改兩處:
a)數(shù)據(jù)庫實(shí)例所在的機(jī)器做雙虛ip,原來%2=0的庫是虛ip0,現(xiàn)在增加一個虛ip00,%2=1的另一個庫同理
b)修改服務(wù)的配置(不管是在配置文件里,還是在配置中心),將2個庫的數(shù)據(jù)庫配置,改為4個庫的數(shù)據(jù)庫配置,修改的時候要注意舊庫與辛苦的映射關(guān)系:
%2=0的庫,會變?yōu)?4=0與%4=2;
%2=1的部分,會變?yōu)?4=1與%4=3;
這樣修改是為了保證,拆分后依然能夠路由到正確的數(shù)據(jù)。
服務(wù)層reload配置,reload可能是這么幾種方式:
a)比較原始的,重啟服務(wù),讀新的配置文件
b)高級一點(diǎn)的,配置中心給服務(wù)發(fā)信號,重讀配置文件,重新初始化數(shù)據(jù)庫連接池
整個過程可以逐步重啟,對服務(wù)的正確性和可用性完全沒有影響:
a)即使%2尋庫和%4尋庫同時存在,也不影響數(shù)據(jù)的正確性,因?yàn)榇藭r仍然是雙主數(shù)據(jù)同步的
b)服務(wù)reload之前是不對外提供服務(wù)的,冗余的服務(wù)能夠保證高可用
有這些一些收尾工作:
a)把雙虛ip修改回單虛ip
b)解除舊的雙主同步,讓成對庫的數(shù)據(jù)不再同步增加
c)增加新的雙主同步,保證高可用
d)刪除掉冗余數(shù)據(jù),例如:ip0里%4=2的數(shù)據(jù)全部干掉,只為%4=0的數(shù)據(jù)提供服務(wù)啦
遷移步驟:
(1)修改配置
(2)reload配置,實(shí)例擴(kuò)容完成
(3)刪除冗余數(shù)據(jù)等收尾工作,數(shù)據(jù)量收縮完成
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: