資料庫遷移遇到的問題和解決方案

2021-10-14 01:54:10 字數 1849 閱讀 1116

目錄

一 老庫表寫收口

二 平滑遷移資料

三 業務影響最小

四 增量資料回寫

五 遷移回滾方案

六 老庫下線

七 事前、事中、事後、我們應該做什麼

本文主要講解資料從老庫遷移到新庫過程中遇到的問題,以及針對這些問題給出的解決方案,希望能給你一點點啟發或者幫助。

由於多個業務端的多個服務公用乙個老庫,且多個服務訪問老庫共用一套密碼。

如何確定只有我們對老庫的表進行寫入呢?

為了排除還有其他業務端服務直連老庫,寫老庫的表,我們給表新增了乙個字段,比如是 a,來標識是我們端對錶的寫入。如果不是我們端對錶的寫入,該欄位應該是空值。

為什麼一定需要確定寫收口呢

假設有某個業務端的服務對老庫的表進行寫入,然後我們進行了資料遷移,那新老資料庫的表的資料將不一致,這在業務上面是不能忍受的。

我們端這塊有4個表,共1億的資料,需要進行遷移。這塊的核心點是:如何解決遷移資料耗時的問題、如何減少表停寫時間對業務測影響問題。

一開始我們定的方案是 rd 停寫,dba 通過指令碼執行命令,將歷史資料從老庫直接遷移到新庫,整個過程評估預計需要1小時,這將意味著需要停寫1小時,然後將這個結果同步給業務方,業務方無法忍受這個結果。

如何解決遷移資料耗時的問題?

我們使用 ali 的 dts 對資料進行遷移。dts 能同步歷史資料和增量資料。

歷史資料是遷移了,那如何做到平滑呢?

我們這塊將新庫集群當做老庫的從庫進行資料同步,當我們這塊進行業務停寫的時候、且新庫和老庫的資料一致的時候,dba 將新庫集群中的一台機器公升級為主庫,其他機器掛載到這個主庫,當做這個機器的從庫。

資料遷移過程中,如果能做到對業務無感,是最好的。那如何做好對業務影響最小呢?

首先,我們通過業務資料進行分析,找到業務的低谷。在低谷進行資料遷移操作,對業務影響小。

其次,我們是分鐘級別的停寫,在停寫的時候,我們一直是可讀的。這個在業務上是可以忍受的。

為什麼要資料回寫呢?

在遷移資料的過程中,由於一些團隊排期問題,服務讀取的還是老庫,這個時候為了保證其他團隊能讀取到增量資料,保證業務不受影響,我們這塊通過 databus 對資料進行了同步,回寫到老庫。

當然了,我們的期望是只維護新庫,所以我們要求其他業務端對讀收口進行了排期,2個月之後其他業務端都走我們的介面,實現了讀收口。

回滾方案在資料遷移過程中不一定需要,但是從一件事情的完整度來說,還是需要的。針對這塊資料遷移,我們需要考慮的是服務回滾、資料庫回滾

服務回滾?

是說服務從讀新庫切換到讀老庫,這塊可以做乙個資料來源動態開關,可以靈活切換訪問新老資料來源。

資料庫回滾?

如果是增量資料我們需要將它們從新庫同步到老庫,保證資料的完整性。

資料遷移完了就完了?不,我們還需要下線老庫。

從公司資產角度考慮,有了新庫,為了降低成本,我們需要將老庫下線。

從一件事情完整性來看,我們遷移資料只是完成了90%,剩下的10% 我們需要對老庫進行下線處理。

事前:我們應該給公司的研發和業務傳送郵件,郵件的主題、涉及範圍、影響功能、資料遷移時間點、負責人、遷移方案、以及釘釘溝通群。

事中:我們研發應該和各個業務端確認方案的可行性、與 dba、qa 建立緊密的溝通,隨時同步方案進度、開發進度、遷移進度。

事後:我們研發應該發郵件告知研發和業務、bi、大資料等團隊,已經完成資料庫的遷移,及時同步遷移結果。釘釘群裡面也需要同步。

在裝Oracle資料庫遇到的坑和解決方案

oracle 10g在w10作業系統上安裝過程中遇到的問題記錄以及解決方案 1環境變數perl5lib的值超過1023字元。無法設定該值 解決方案 出現這種情況主要是因為多次安裝oracle資料庫造成的 一次沒安裝成功,又重新安裝第二次,以此類推。解決辦法 右擊桌面上我的電腦 屬性 高階 環境變數 ...

MySQL使用時遇到的問題和解決方案

1.安裝mysql時,推薦使用解壓縮的配置方法.此時需要乙個對應版本的mysql的zip包.具體的安裝方法如下 a.將mysql的zip包解壓縮到對應的目錄下。b.設定環境變數,在path環境變數中加上mysql bin資料夾的路徑 c.修改下my default.ini配置檔案,重新命名為my.i...

大型Oracle資料庫遷移解決方案

大型oracle資料庫遷移解決方案 大型oracle資料庫的遷移需求和挑戰 隨著業務的不斷拓展,我們經常需要對系統進行調整,比如 儲存系統公升級 伺服器公升級 平台的遷移 資料庫版本公升級等等,這些情況我們都需要借助資料遷移工作來完成。在遷移過程中,我們經常會遇到一些很難解決的問題。因為,如果是在相...