用于數(shù)據(jù)庫的數(shù)據(jù)遷移方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及計算機技術(shù)領(lǐng)域,具體涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法和裝置。
【背景技術(shù)】
[0002]在信息化建設(shè)過程中,隨著技術(shù)的發(fā)展,原有的信息系統(tǒng)不斷被功能更強大的新系統(tǒng)所取代。在新舊系統(tǒng)的切換過程中,如何將舊系統(tǒng)的數(shù)據(jù)迀移至新系統(tǒng)是必然要面臨的問題。
[0003]現(xiàn)有方案中數(shù)據(jù)迀移一般由數(shù)據(jù)管理員(Database Administrator,簡稱DBA)來做。DBA通常先停止源數(shù)據(jù)庫的使用,然后書寫迀徙腳本把數(shù)據(jù)導出到一個中間文件,然后再書寫導入腳本將中間文件的數(shù)據(jù)導入目標庫。然而,這種數(shù)據(jù)迀移方式會導致數(shù)據(jù)庫在幾個小時甚至幾天無法對外提供服務(wù),導致相關(guān)的應用程序無法使用。
【發(fā)明內(nèi)容】
[0004]本申請的目的在于提出一種改進的用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法和裝置,來解決以上【背景技術(shù)】部分提到的技術(shù)問題。
[0005]第一方面,本申請?zhí)峁┝艘环N用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法,所述方法包括:建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至目標數(shù)據(jù)庫,并實時檢測所述源數(shù)據(jù)庫的增量數(shù)據(jù);將檢測到的增量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫;當所述源數(shù)據(jù)庫中的增量數(shù)據(jù)都已迀移至目標數(shù)據(jù)庫時,將數(shù)據(jù)庫讀寫操作從所述源數(shù)據(jù)庫切換至所述目標數(shù)據(jù)庫。
[0006]在一些實施例中,在所述建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至目標數(shù)據(jù)庫,并實時檢測所述源數(shù)據(jù)庫的增量數(shù)據(jù)之前,所述方法還包括:統(tǒng)一接管數(shù)據(jù)庫讀寫操作。
[0007]在一些實施例中,在所述創(chuàng)建所述源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫的同時,所述方法還包括:對已迀移至所述目標數(shù)據(jù)庫中的全量數(shù)據(jù)進行校驗;若校驗通過,則繼續(xù)執(zhí)行后續(xù)操作;若校驗未通過,則回滾至所述建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)。
[0008]在一些實施例中,在所述將檢測到的增量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫的同時,所述方法還包括:對已迀移至所述目標數(shù)據(jù)庫中的增量數(shù)據(jù)進行校驗;若校驗通過,則繼續(xù)執(zhí)行后續(xù)操作;若校驗未通過,則回滾至則所述建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)或者回滾至將檢測到的增量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)。
[0009]在一些實施例中,所述將數(shù)據(jù)庫讀寫操作從所述源數(shù)據(jù)庫切換至所述目標數(shù)據(jù)庫,包括:將數(shù)據(jù)庫讀操作按比例逐漸切換至所述目標數(shù)據(jù)庫,并監(jiān)控切換過程中數(shù)據(jù)庫讀操作是否出現(xiàn)異常;若數(shù)據(jù)庫讀操作出現(xiàn)異常,則回滾至對所述源數(shù)據(jù)庫進行數(shù)據(jù)庫讀操作的狀態(tài);若數(shù)據(jù)庫讀操作未出現(xiàn)異常,則將數(shù)據(jù)庫寫操作切換至所述目標數(shù)據(jù)庫。
[0010]在一些實施例中,所述將數(shù)據(jù)庫寫操作切換至所述目標數(shù)據(jù)庫,包括:若預設(shè)時間段內(nèi)所述源數(shù)據(jù)庫的增量數(shù)據(jù)的數(shù)據(jù)量變化值小于預設(shè)閾值,則將數(shù)據(jù)庫寫操作從源數(shù)據(jù)庫切換至所述目標數(shù)據(jù)庫。
[0011]在一些實施例中,在所述若數(shù)據(jù)庫讀操作未出現(xiàn)異常,則將數(shù)據(jù)庫寫操作切換至所述目標數(shù)據(jù)庫之后,所述方法還包括:實時檢測所述目標數(shù)據(jù)庫的數(shù)據(jù)增量以將所檢測到的目標數(shù)據(jù)庫的增量數(shù)據(jù)回寫至所述源數(shù)據(jù)庫,并監(jiān)控數(shù)據(jù)庫讀操作和/或?qū)懖僮魇欠癯霈F(xiàn)異常;若數(shù)據(jù)庫讀操作和/或?qū)懖僮鞒霈F(xiàn)異常,則回滾至對所述源數(shù)據(jù)庫進行數(shù)據(jù)庫寫操作的狀態(tài)。
[0012]第二方面,本申請?zhí)峁┝艘环N用于數(shù)據(jù)庫的數(shù)據(jù)迀移裝置,所述裝置包括:全量迀移單元,用于建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至目標數(shù)據(jù)庫,并實時檢測所述源數(shù)據(jù)庫的增量數(shù)據(jù);增量迀移單元,用于將檢測到的增量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫;操作切換單元,用于當所述源數(shù)據(jù)庫中的增量數(shù)據(jù)都已迀移至目標數(shù)據(jù)庫時,將數(shù)據(jù)庫讀寫操作從所述源數(shù)據(jù)庫切換至所述目標數(shù)據(jù)庫。
[0013]在一些實施例中,所述裝置還包括:接管單元,用于統(tǒng)一接管數(shù)據(jù)庫讀寫操作。
[0014]在一些實施例中,所述裝置還包括:全量校驗單元,用于對已迀移至所述目標數(shù)據(jù)庫中的全量數(shù)據(jù)進行校驗;若校驗通過,則繼續(xù)執(zhí)行后續(xù)操作;若校驗未通過,則回滾至所述建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)。
[0015]在一些實施例中,所述裝置還包括:增量校驗單元,用于對已迀移至所述目標數(shù)據(jù)庫中的增量數(shù)據(jù)進行校驗;若校驗通過,則繼續(xù)執(zhí)行后續(xù)操作;若校驗未通過,則回滾至則所述建立源數(shù)據(jù)庫的鏡像并將所述鏡像中的全量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)或者回滾至將檢測到的增量數(shù)據(jù)迀移至所述目標數(shù)據(jù)庫之前的狀態(tài)。
[0016]在一些實施例中,所述操作切換單元包括:讀操作切換子單元,用于將數(shù)據(jù)庫讀操作按比例逐漸切換至所述目標數(shù)據(jù)庫,并監(jiān)控切換過程中數(shù)據(jù)庫讀操作是否出現(xiàn)異常;第一回滾子單元,用于若數(shù)據(jù)庫讀操作出現(xiàn)異常,則回滾至對所述源數(shù)據(jù)庫進行數(shù)據(jù)庫讀操作的狀態(tài);寫操作切換子單元,用于若數(shù)據(jù)庫讀操作未出現(xiàn)異常,則將數(shù)據(jù)庫寫操作切換至所述目標數(shù)據(jù)庫。
[0017]在一些實施例中,所述寫操作切換子單元進一步用于:若數(shù)據(jù)庫讀操作未出現(xiàn)異常,則將數(shù)據(jù)庫寫操作切換至所述目標數(shù)據(jù)庫且預設(shè)時間段內(nèi)所述源數(shù)據(jù)庫的增量數(shù)據(jù)的數(shù)據(jù)量變化值小于預設(shè)閾值,則將數(shù)據(jù)庫寫操作從源數(shù)據(jù)庫切換至所述目標數(shù)據(jù)庫。
[0018]在一些實施例中,所述裝置還包括:回寫單元,用于實時檢測所述目標數(shù)據(jù)庫的數(shù)據(jù)增量以將所檢測到的目標數(shù)據(jù)庫的增量數(shù)據(jù)回寫至所述源數(shù)據(jù)庫,并監(jiān)控數(shù)據(jù)庫讀操作和/或?qū)懖僮魇欠癯霈F(xiàn)異常;第二回滾單元,用于若數(shù)據(jù)庫讀操作和/或?qū)懖僮鞒霈F(xiàn)異常,則回滾至對所述源數(shù)據(jù)庫進行數(shù)據(jù)庫寫操作的狀態(tài)。
[0019]本申請?zhí)峁┑挠糜跀?shù)據(jù)庫的數(shù)據(jù)迀移方法和裝置,在源數(shù)據(jù)庫和目標數(shù)據(jù)庫進行全量數(shù)據(jù)迀移操作,并不斷檢測源數(shù)據(jù)庫中的增量數(shù)據(jù)以進行增量數(shù)據(jù)的迀移,同時對源數(shù)據(jù)庫中未迀移至目標數(shù)據(jù)庫的增量數(shù)據(jù)進行檢測,在目標數(shù)據(jù)庫的增量數(shù)據(jù)均成功迀移至目標數(shù)據(jù)庫時再進行后續(xù)的數(shù)據(jù)庫讀寫操作的切換,從而實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的在線迀移,同時也保證了迀移后目標數(shù)據(jù)庫中數(shù)據(jù)的實時性。
【附圖說明】
[0020]通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
[0021]圖1是本申請可以應用于其中的示例性系統(tǒng)架構(gòu)圖;
[0022]圖2是根據(jù)本申請的用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法的一個實施例的流程圖;
[0023]圖3是根據(jù)本申請的用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法的又一個實施例的流程圖;
[0024]圖4是根據(jù)本申請的用于數(shù)據(jù)庫的數(shù)據(jù)迀移裝置的一個實施例的結(jié)構(gòu)示意圖;
[0025]圖5是適于用來實現(xiàn)本申請實施例的應用服務(wù)器或數(shù)據(jù)庫服務(wù)器的計算機系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0026]下面結(jié)合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
[0027]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本申請。
[0028]圖1示出了可以應用本申請的用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法或裝置的實施例的示例性系統(tǒng)架構(gòu)100。
[0029]如圖1所示,系統(tǒng)架構(gòu)100可以包括應用服務(wù)器101、網(wǎng)絡(luò)102、源數(shù)據(jù)庫服務(wù)器103和目標數(shù)據(jù)庫服務(wù)器104。網(wǎng)絡(luò)102用以在應用服務(wù)器101和源數(shù)據(jù)庫服務(wù)器103、目標數(shù)據(jù)庫服務(wù)器104之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)102可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
[0030]應用服務(wù)器101可以是運行各種應用程序的后臺服務(wù)器,其可以通過運行的應用程序向接收與之相連的終端設(shè)備(未示出)所發(fā)送的信息,并可以在對信息進行處理后向終端設(shè)備返回處理后的信息。
[0031]源數(shù)據(jù)庫服務(wù)器103和目標數(shù)據(jù)庫服務(wù)器104都是可用于向應用服務(wù)器101提供數(shù)據(jù)支持的數(shù)據(jù)庫服務(wù)器。應用服務(wù)器101可以通過網(wǎng)絡(luò)102在源數(shù)據(jù)庫服務(wù)器103或目標數(shù)據(jù)庫服務(wù)器104中進行讀數(shù)據(jù)操作或?qū)憯?shù)據(jù)操作。其中,源數(shù)據(jù)庫服務(wù)器103可以部署源數(shù)據(jù)庫,用于在數(shù)據(jù)迀移之前對應用服務(wù)器101提供數(shù)據(jù)支持的數(shù)據(jù)庫服務(wù)器,目標數(shù)據(jù)庫服務(wù)器104可以部署目標數(shù)據(jù)庫,用于在數(shù)據(jù)迀移之后對應用服務(wù)器101提供數(shù)據(jù)支持的數(shù)據(jù)庫服務(wù)器。
[0032]需要說明的是,本申請實施例所提供的用于數(shù)據(jù)庫的數(shù)據(jù)迀移方法一般由應用服務(wù)器101執(zhí)行,相應地,用于數(shù)據(jù)庫的數(shù)據(jù)迀移裝置一般設(shè)置于應用服務(wù)器101中。在某些情況下,數(shù)據(jù)迀移方法也可以通過另外的控制服務(wù)器(未示出)執(zhí)行,相應的,數(shù)據(jù)迀移裝置也可以設(shè)置于對應的控制服務(wù)器中。
[0033]應該理解,圖1中的應用服務(wù)器、網(wǎng)絡(luò)、源數(shù)據(jù)庫服