分庫分布的幾件小事(二)如何進行分庫分表的數(shù)據(jù)遷移

1.停機遷移方案

這是最簡單的也是最low的遷移方案了,如果系統(tǒng)就算短期停機也沒有關(guān)系或者造不成多大的影響,可以選用此方案。

首先停掉機器,將系統(tǒng)全都停掉,不要再有新的數(shù)據(jù)進來,然后使用之前寫好的程序,連接舊的數(shù)據(jù)庫,將舊數(shù)據(jù)庫里面的數(shù)據(jù)讀出來,然后通過數(shù)據(jù)分發(fā)中間件寫到分庫分好的數(shù)據(jù)里面去。然后修改系統(tǒng)是數(shù)據(jù)庫連接、分庫分表配置,然后重新上線。

2.雙寫不停機遷移方案

雙寫遷移方案的核心在雙寫,首先要修改系統(tǒng)所有需要寫庫的地方,將雖有對數(shù)據(jù)的寫操作不但要寫入就庫,也要同時寫入新庫。

然后使用寫好的數(shù)據(jù)遷移程序,去讀取老數(shù)據(jù)庫的數(shù)據(jù)寫入到新的數(shù)據(jù)庫里面去,寫的時候要根據(jù)數(shù)據(jù)的最后更新時間去判斷數(shù)據(jù),如果讀出來的數(shù)據(jù)新庫沒有直接寫入,如果新庫也有,查看最后更新時間,舊庫的新就覆蓋寫入,如果新庫的新就放棄這條數(shù)據(jù)。

導(dǎo)完一輪數(shù)據(jù)之后,有可能數(shù)據(jù)還是存在不一致,那么就寫個程序做一輪校驗,對比老庫和新庫的每條數(shù)據(jù),如果存在不一樣的,就針對這些不一樣的,再次去進行數(shù)據(jù)同步。反復(fù)循環(huán),直到數(shù)據(jù)完全一致。

接著當(dāng)數(shù)據(jù)完全一致了,就ok了,基于僅僅使用分庫分表的最新代碼,重新部署一次,不就僅僅基于分庫分表在操作了么,還沒有幾個小時的停機時間,很穩(wěn)。所以現(xiàn)在基本玩兒數(shù)據(jù)遷移之類的,都是這么干了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容