mysql old表 Mysql遷表方案

2021-10-17 16:36:10 字數 1060 閱讀 6023

階段一:遷表階段(雙寫讀舊)

步驟一:

將所有寫操作加上日誌,列印出 所需遷表a的主鍵id,供之後補償使用。

開發補償功能,根據id,將old 資料與new資料同步。注:在業務低峰期對表進行操作,減少風險及補償的開銷。

步驟二:

將 old表 資料同步到 new表 中。

注:建議dba進行同步,dba同步只能對空表進行同步,但速度快,資料量大,rd同步資料困難切慢,bi同步資料為前一天的資料,不可用。

步驟三:

雙寫操作,所有寫操作同時寫入 new表 與 old表 中。

注:開發之前需統計所有寫入表操作,最好將寫入操作收口,做不好會導致新舊表資料不同步,前功盡棄。

步驟四:

使用步驟一中開發的補償功能,將上線這段時間的資料 同步的修復一下,保持 old表 與 new表中的資料一致性。

總結:至此,資料同步完成,old表 與 new表 資料保持一致,已實現雙寫讀舊操作,上線兩次,分別為列印日誌操作上線和雙寫操作上線,資料同步兩次,分別是dba同步新錶資料及修復上線過程中更新的資料。

此時線上的讀操作全為 讀舊,需逐步整理出來,提供新的查詢介面。

注意實現及風險:

步驟三中的雙寫使用同步雙寫,禁止使用非同步雙寫。

對錶進行寫入操作的地方,加資料來源,盡量不對邏輯做改動。

若表 寫操作過多,列印日誌需注意覆蓋所有寫操作及日誌規範,盡量覆蓋到所有寫操作中。

可以開發新功能,對比new與old資料是否同步。

盡量選擇業務低峰期,進行遷表操作。

階段二:切表階段(雙寫讀新)

步驟一:

與遷表操作同步進行,各業務線統計協助統計 表 使用情況,包括呼叫介面,傳入引數或sql。

步驟二:

(依賴第一階段及第二階段步驟1)將統計出現有的old表 介面中,分辨出有哪些介面是現在業務線正在使用的,在不影響線上功能的情況下,對不合理的介面進行重構,避免傳入sql操作,做到介面功能明確,功能單一。

步驟三:

對業務線進行新錶新介面切換,陸續開發並推進切換新介面,在所有業務線平滑的切換新介面完成後,下線雙寫操作,只保留寫新讀新。此時 表遷表完成。

Mysql遷表方案

階段一 遷表階段 雙寫讀舊 步驟一 將所有寫操作加上日誌,列印出 所需遷表a的主鍵id,供之後補償使用。開發補償功能,根據id,將old 資料與new資料同步。注 在業務低峰期對表進行操作,減少風險及補償的開銷。步驟二 將 old表 資料同步到 new表 中。注 建議dba進行同步,dba同步只能對...

怎麼遷mysql資料庫 MySQL資料庫遷移

mysql資料庫遷移 資料檔案直接遷移 在遷移之前有三種方案 1.資料庫直接匯出,拷貝檔案到新伺服器,在新伺服器上匯入。2.使用 mysql gui tools 中的 mysqlmigrationtool。3.資料檔案和庫表結構檔案直接拷貝到新伺服器,掛載到同樣配置的mysql服務下。我在我的電腦上...

mysql歷史資料 mysql 歷史資料表遷移方案

當業務執行一段時間後,會出現有些表資料量很大,可能對系統效能產生不良的影響,常見的如訂單表 登入log表等,這些資料很有時效性,比如我們一般很少去查上個月的訂單,最多也就是報表統計會涉及到。在我們的資料庫中,使用者登入表就是這種型別的表,一般而言,表中的資料是不可逆的,只有插入操作沒有刪除或者修改操...