階段一:遷表階段(雙寫讀舊)
步驟一:
將所有寫操作加上日誌,列印出 所需遷表a的主鍵id,供之後補償使用。
開發補償功能,根據id,將old 資料與new資料同步。注:在業務低峰期對表進行操作,減少風險及補償的開銷。
步驟二:
將 old表 資料同步到 new表 中。
注:建議dba進行同步,dba同步只能對空表進行同步,但速度快,資料量大,rd同步資料困難切慢,bi同步資料為前一天的資料,不可用。
步驟三:
雙寫操作,所有寫操作同時寫入 new表 與 old表 中。
注:開發之前需統計所有寫入表操作,最好將寫入操作收口,做不好會導致新舊表資料不同步,前功盡棄。
步驟四:
使用步驟一中開發的補償功能,將上線這段時間的資料 同步的修復一下,保持 old表 與 new表中的資料一致性。
注:insert操作還好,new表不存在時可同步old表,update操作需要做補償,尤其是當本次更新需要依賴上一次更新狀態時,資料同步是個問題。
總結:至此,資料同步完成,old表 與 new表 資料保持一致,已實現雙寫讀舊操作,上線兩次,分別為列印日誌操作上線和雙寫操作上線,資料同步兩次,分別是dba同步新錶資料及修復上線過程中更新的資料。
此時線上的讀操作全為 讀舊,需逐步整理出來,提供新的查詢介面。
注意實現及風險:
步驟三中的雙寫使用同步雙寫,禁止使用非同步雙寫。
對錶進行寫入操作的地方,加資料來源,盡量不對邏輯做改動。
若表 寫操作過多,列印日誌需注意覆蓋所有寫操作及日誌規範,盡量覆蓋到所有寫操作中。
可以開發新功能,對比new與old資料是否同步。
盡量選擇業務低峰期,進行遷表操作。
階段二:切表階段(雙寫讀新)
步驟一:
與遷表操作同步進行,各業務線統計協助統計 表 使用情況,包括呼叫介面,傳入引數或sql。
步驟二:
(依賴第一階段及第二階段步驟1)將統計出現有的old表 介面中,分辨出有哪些介面是現在業務線正在使用的,在不影響線上功能的情況下,對不合理的介面進行重構,避免傳入sql操作,做到介面功能明確,功能單一。
步驟三:
對業務線進行新錶新介面切換,陸續開發並推進切換新介面,在所有業務線平滑的切換新介面完成後,下線雙寫操作,只保留寫新讀新。此時 表遷表完成。
mysql old表 Mysql遷表方案
階段一 遷表階段 雙寫讀舊 步驟一 將所有寫操作加上日誌,列印出 所需遷表a的主鍵id,供之後補償使用。開發補償功能,根據id,將old 資料與new資料同步。注 在業務低峰期對表進行操作,減少風險及補償的開銷。步驟二 將 old表 資料同步到 new表 中。注 建議dba進行同步,dba同步只能對...
怎麼遷mysql資料庫 MySQL資料庫遷移
mysql資料庫遷移 資料檔案直接遷移 在遷移之前有三種方案 1.資料庫直接匯出,拷貝檔案到新伺服器,在新伺服器上匯入。2.使用 mysql gui tools 中的 mysqlmigrationtool。3.資料檔案和庫表結構檔案直接拷貝到新伺服器,掛載到同樣配置的mysql服務下。我在我的電腦上...
mysql歷史資料 mysql 歷史資料表遷移方案
當業務執行一段時間後,會出現有些表資料量很大,可能對系統效能產生不良的影響,常見的如訂單表 登入log表等,這些資料很有時效性,比如我們一般很少去查上個月的訂單,最多也就是報表統計會涉及到。在我們的資料庫中,使用者登入表就是這種型別的表,一般而言,表中的資料是不可逆的,只有插入操作沒有刪除或者修改操...