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ù)遷移之類的,都是這么干了。