如何把單庫資料遷移到分庫分表?

2021-09-25 03:38:38 字數 1086 閱讀 1304

面試官:如何把單個資料庫的資料遷移到分庫分表裡面?

面試官心理剖析:

主要是看你在生產環境弄過?沒弄過的話看你有沒有思考過這個問題?因為在做分庫分表的時候肯定會遇到這個問題。

回答:假設你的分庫分表中介軟體已經選好了,分庫分表的資料庫都已經建好了。分庫分表的功能也都已經測試通過了,可以上線了。資料遷移的系統也測試通過。

方案一:停機遷移

這個方案是一般公司都比較常用的,在**上放乙個公告,說「幾點到幾點要進行系統公升級,到時候系統將不可用」,類似這樣的公告。然後大家就一起加班,從凌晨開始做資料遷移,搞了多個資料遷移的工具,從單庫把資料獲取到,在呼叫分庫分表中介軟體,中介軟體把資料放到新的資料庫中,整個過程可能要跑個幾小時,遷移完之後大家開始驗證資料。驗證成功之後修改應用系統的配置,把原來呼叫單庫的配置修改為使用中介軟體。然後在驗證下功能,沒問題的話就可以對外提供服務了。

缺點:1、一定會出現幾小時的停機(凌晨也還好,很多使用者都睡覺了)

2、如果在凌晨4點還沒有搞定,大家開始慌了,到凌晨6點還沒搞定,那麼新庫的資料回滾,單庫繼續提供服務,第二天在繼續搞。(這樣大家會很累)

方案二:不停機遷移(雙寫方案)

如果不想經常看凌晨的太陽,那麼會想有沒有其他的方案?

如圖,1、系統中修改寫資料庫的**,同時寫單庫和新庫;

2、資料遷移工具獲取到老庫的資料,在新庫中進行比較,如果新庫中不存在,那麼把資料儲存到新庫中;如果新庫中存在資料,那麼比較更新時間,如果老庫的更新時間大於新庫,那麼修改新庫的資料;如果老庫的更新時間小於新庫的,那麼保持不變。

3、遷移完之後需要比較資料是否完全一樣,在凌晨的時候,資料肯定會變為一致,因為很少資料進來。

4、最後凌晨,系統把寫老庫的**刪掉,都寫新庫。

整個遷移的過程就結束了,這個過程只有在刪除寫老庫**的時候,會停下服務(你使用了集群,其實對使用者來說是無感知的)。

注:如果想資料遷移快點,那麼可以多部署一些資料遷移工具。

43 如何把系統不停機遷移到分庫分表的?

1 面試題 現在有乙個未分庫分表的系統,未來要分庫分表,如何設計才可以讓系統從未分庫分表動態切換到分庫分表上?2 面試官心裡分析 你看看,你現在已經明白為啥要分庫分表了,你也知道常用的分庫分表中介軟體了,你也設計好你們如何分庫分表的方案了 水平拆分 垂直拆分 分表 那問題來了,你接下來該怎麼把你那個...

如何把資料庫系統遷移到 DB2 9

本文詳細描述了如何在 windows 平台上把 db2 v8 資料庫系統遷移到 db2 v9。文章中包含了如何移植例項 instance db2 管理伺服器 das 和資料庫的詳盡方法,以及常見的錯誤和解決方法。要在已安裝 db2 v8 的平台上安裝 db2 v9 開發代號 db2 viper 可以...

怎麼進行分庫分表以及資料遷移

已經明白為啥要分庫分表了,你也知道常用的分庫分表中介軟體了,你也設計好你們如何分庫分表的方案了 水平拆分 垂直拆分 分表 那問題來了,你接下來該怎麼把你那個單庫單錶的系統給遷移到分庫分表上去?友情提示 3個庫,每個庫里分了4個表,每個表要放50萬的資料量 假設你已經選擇了乙個分庫分表的資料庫中介軟體...