一種數(shù)據(jù)庫同步的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)庫同步的方法和裝置。
【背景技術(shù)】
[0002]電子商務(wù)日益深入人心,實時交易系統(tǒng)的數(shù)據(jù)量也與日俱增,然而單一數(shù)據(jù)庫的處理能力有限,因此需要基于源數(shù)據(jù)庫,按照業(yè)務(wù)或功能建立多個目標(biāo)數(shù)據(jù)庫,從而降低對源數(shù)據(jù)庫的訪問壓力。當(dāng)源數(shù)據(jù)庫中的某個數(shù)據(jù)表發(fā)生變化時,需要保證關(guān)注該數(shù)據(jù)表的目標(biāo)數(shù)據(jù)庫中的該數(shù)據(jù)表與源數(shù)據(jù)庫中的該數(shù)據(jù)表發(fā)生一致的變化,因此需要一個同步裝置來實現(xiàn)目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫之間數(shù)據(jù)的同步。
[0003]在新增一目標(biāo)數(shù)據(jù)庫時,需要對該目標(biāo)數(shù)據(jù)庫執(zhí)行初始化過程,以便使該目標(biāo)數(shù)據(jù)庫中儲存有源端數(shù)據(jù)庫某一時刻的數(shù)據(jù)表內(nèi)容?,F(xiàn)有技術(shù)中通過人工操作來實現(xiàn)目標(biāo)數(shù)據(jù)庫初始化過程,具體方式為,通過人工導(dǎo)出需要的源端數(shù)據(jù)庫中某一時刻的數(shù)據(jù)表,接著人工將該導(dǎo)出數(shù)據(jù)表導(dǎo)入至該新增目標(biāo)數(shù)據(jù)庫中。
[0004]上述方案中,當(dāng)新增目標(biāo)數(shù)據(jù)庫數(shù)量較多,且需同步的數(shù)據(jù)表內(nèi)容較多時,工作量負(fù)荷較大,且人工操作的效率較低。
[0005]綜上所述,亟需一種數(shù)據(jù)庫同步的方法和裝置,用于提高目標(biāo)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步過程中的初始化過程的效率。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實施例提供一種數(shù)據(jù)庫同步的方法和裝置,用于提高目標(biāo)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步過程中的初始化過程的效率。
[0007]本發(fā)明實施例提供一種數(shù)據(jù)庫同步的方法,包括以下步驟:
[0008]若目標(biāo)數(shù)據(jù)庫需執(zhí)行數(shù)據(jù)同步初始化過程時,則與目標(biāo)數(shù)據(jù)庫連接的目標(biāo)端服務(wù)器向源端快照服務(wù)器發(fā)送全量數(shù)據(jù)請求消息;其中,全量數(shù)據(jù)請求消息攜帶至少一個需同步的源數(shù)據(jù)庫標(biāo)識號,以及源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號;
[0009]源端快照服務(wù)器接收到全量數(shù)據(jù)請求消息,確定源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號所對應(yīng)的全量數(shù)據(jù)信息,并將確定出的全量數(shù)據(jù)信息攜帶于全量數(shù)據(jù)響應(yīng)消息中發(fā)送給目標(biāo)端服務(wù)器,全量數(shù)據(jù)響應(yīng)消息還包括全量數(shù)據(jù)信息對應(yīng)的全量數(shù)據(jù)快照文件的生成時間;
[0010]目標(biāo)端服務(wù)器根據(jù)全量數(shù)據(jù)信息獲取源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件,并將獲取的全量數(shù)據(jù)快照文件導(dǎo)入目標(biāo)數(shù)據(jù)庫;目標(biāo)端服務(wù)器配置有目標(biāo)數(shù)據(jù)庫的配置參數(shù);
[0011]目標(biāo)端服務(wù)器從源端服務(wù)器獲取源數(shù)據(jù)表標(biāo)識號對應(yīng)的數(shù)據(jù)表初始化時間點之后的數(shù)據(jù)變更事件,并根據(jù)數(shù)據(jù)變更事件對目標(biāo)數(shù)據(jù)庫執(zhí)行同步操作;其中,初始化時間點早于或等于源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件的生成時間;數(shù)據(jù)變更事件是源端服務(wù)器實時捕獲源數(shù)據(jù)庫產(chǎn)生的數(shù)據(jù)變更事件得到的。
[0012]本發(fā)明實施例提供一種數(shù)據(jù)庫同步的裝置,包括與源數(shù)據(jù)庫連接的源端快照服務(wù)器,與源端快照服務(wù)器連接的目標(biāo)端服務(wù)器,與目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫,目標(biāo)端服務(wù)器包括:
[0013]目標(biāo)端服務(wù)器,用于若與目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫需執(zhí)行數(shù)據(jù)同步初始化過程時,則向源端快照服務(wù)器發(fā)送全量數(shù)據(jù)請求消息;其中,全量數(shù)據(jù)請求消息攜帶至少一個需同步的源數(shù)據(jù)庫標(biāo)識號,以及源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號;
[0014]目標(biāo)端服務(wù)器根據(jù)全量數(shù)據(jù)信息獲取源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件,并將獲取的全量數(shù)據(jù)快照文件導(dǎo)入目標(biāo)數(shù)據(jù)庫;目標(biāo)端服務(wù)器配置有目標(biāo)數(shù)據(jù)庫的配置參數(shù);
[0015]目標(biāo)端服務(wù)器從源端服務(wù)器獲取源數(shù)據(jù)表標(biāo)識號對應(yīng)的數(shù)據(jù)表初始化時間點之后的數(shù)據(jù)變更事件,并根據(jù)數(shù)據(jù)變更事件對目標(biāo)數(shù)據(jù)庫執(zhí)行同步操作;其中,初始化時間點早于或等于源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件的生成時間;數(shù)據(jù)變更事件是源端服務(wù)器實時捕獲源數(shù)據(jù)庫產(chǎn)生的數(shù)據(jù)變更事件得到的;
[0016]源端快照服務(wù)器,用于接收到目標(biāo)端服務(wù)器發(fā)送的全量數(shù)據(jù)請求消息,確定源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號所對應(yīng)的全量數(shù)據(jù)信息,并將確定出的全量數(shù)據(jù)信息攜帶于全量數(shù)據(jù)響應(yīng)消息中發(fā)送給目標(biāo)端服務(wù)器,全量數(shù)據(jù)響應(yīng)消息還包括全量數(shù)據(jù)信息對應(yīng)的全量數(shù)據(jù)快照文件的生成時間。
[0017]本發(fā)明實施例中,目標(biāo)端服務(wù)器執(zhí)行初始化過程,向源端快照服務(wù)器發(fā)送全量數(shù)據(jù)請求消息,全量數(shù)據(jù)請求消息中至少攜帶一個需同步的源數(shù)據(jù)庫標(biāo)識號,以及所述源數(shù)據(jù)庫標(biāo)識號對應(yīng)的源數(shù)據(jù)表標(biāo)識號;源端快照服務(wù)器根據(jù)全量數(shù)據(jù)請求消息,確定出源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)信息,并向目標(biāo)端服務(wù)器發(fā)送全量數(shù)據(jù)信息;目標(biāo)端服務(wù)器根據(jù)所述全量數(shù)據(jù)信息獲取源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件,并將全量數(shù)據(jù)快照文件導(dǎo)入目標(biāo)數(shù)據(jù)庫,之后目標(biāo)端服務(wù)器從源端服務(wù)器獲取初始化時間點之后的數(shù)據(jù)變更事件,并根據(jù)數(shù)據(jù)變更事件對目標(biāo)數(shù)據(jù)庫執(zhí)行同步操作;所述初始化時間點早于或等于所述源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件的生成時間。
[0018]由于目標(biāo)端服務(wù)器向源端快照服務(wù)器發(fā)送全量數(shù)據(jù)請求消息,源端快照服務(wù)器將確定出的全量數(shù)據(jù)信息發(fā)送給目標(biāo)端服務(wù)器,以使目標(biāo)端服務(wù)器根據(jù)全量數(shù)據(jù)信息獲取全量數(shù)據(jù)快照文件,并將全量數(shù)據(jù)快照文件導(dǎo)入目標(biāo)數(shù)據(jù)庫,至此,目標(biāo)數(shù)據(jù)庫的初始化過程執(zhí)行完畢,可見本發(fā)明實施例實現(xiàn)了目標(biāo)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步過程中的初始化過程的自動化控制,從而避免了由于人工操作所造成的效率較低的問題,提高了目標(biāo)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步過程中的初始化過程的效率,進(jìn)而提高了目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步的效率。進(jìn)一步由于目標(biāo)數(shù)據(jù)庫執(zhí)行完初始化過程之后,目標(biāo)端服務(wù)器接著從源端服務(wù)器中獲取早于或等于全量數(shù)據(jù)快照文件的生成時間的初始化時間點之后的數(shù)據(jù)變更事件,可見,目標(biāo)數(shù)據(jù)庫在自動化執(zhí)行完初始化過程之后,自動開始數(shù)據(jù)同步過程,即本發(fā)明實施例中目標(biāo)數(shù)據(jù)庫從執(zhí)行初始化過程至后期的同步過程,實現(xiàn)了全過程的自動化控制,從而,提高了目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步的效率。
[0019]進(jìn)一步由于目標(biāo)端服務(wù)器連接目標(biāo)數(shù)據(jù)庫,且目標(biāo)端服務(wù)器配置有目標(biāo)數(shù)據(jù)庫的配置參數(shù),因此,當(dāng)某個目標(biāo)數(shù)據(jù)庫發(fā)生變動,如新增一個目標(biāo)數(shù)據(jù)庫時,僅需要修改該新增的目標(biāo)數(shù)據(jù)庫對應(yīng)連接的目標(biāo)端服務(wù)器中的配置參數(shù),并重啟該目標(biāo)端服務(wù)器即可,因此,其它未進(jìn)行參數(shù)配置修改的目標(biāo)端服務(wù)器不需重啟,進(jìn)而與該未進(jìn)行參數(shù)配置修改的目標(biāo)端服務(wù)器連接的目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)同步過程也不會中斷,從而實現(xiàn)多個目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫之間的數(shù)據(jù)同步,且當(dāng)某個目標(biāo)數(shù)據(jù)庫發(fā)生變化時,其它目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)同步過程不受影響。
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1a為本發(fā)明實施例提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖;
[0022]圖1b為本發(fā)明實施例提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖;
[0023]圖1c為本發(fā)明實施例所提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖;
[0024]圖2為本發(fā)明實施例提供的一種數(shù)據(jù)庫同步的方法流程示意圖;
[0025]圖3為本發(fā)明實施例還提供一種數(shù)據(jù)庫同步的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0026]為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0027]本發(fā)明的實施例所應(yīng)用的場景有多種,為更好的理解本方案,此處僅示例性列舉以下幾種:
[0028]場景一:源數(shù)據(jù)庫為一個,目標(biāo)數(shù)據(jù)庫為多個,該源數(shù)據(jù)庫為“寫庫”,支持相關(guān)寫操作的事務(wù)處理,目標(biāo)數(shù)據(jù)庫為“讀庫”,支持業(yè)務(wù)查詢、數(shù)據(jù)分析等查詢操作。實際應(yīng)用中,需保證該為“寫庫”的源數(shù)據(jù)庫內(nèi)容與多個為“讀庫”的目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)內(nèi)容一致,并需保證目標(biāo)數(shù)據(jù)庫的內(nèi)容和源數(shù)據(jù)庫內(nèi)容同步的及時性和正確性,此時,即可通過本發(fā)明實施例所提供的方法或裝置實現(xiàn)。
[0029]場景二:源數(shù)據(jù)庫為多個,目標(biāo)數(shù)據(jù)庫為一個,該多個源數(shù)據(jù)庫為“寫庫”,且多個源數(shù)據(jù)庫中儲存的數(shù)據(jù)表均為“訂單表”,此時,可將一部分用戶的交易寫到某個源數(shù)據(jù)庫的“訂單表”中,而將另一部分用戶的交易寫入到另一個源數(shù)據(jù)庫的“訂單表”中,此時,BP多個源數(shù)據(jù)庫中存儲同一個數(shù)據(jù)表“訂單表”,而不同源數(shù)據(jù)庫中儲存的數(shù)據(jù)內(nèi)容不同。目標(biāo)數(shù)據(jù)庫為“讀庫”。實際應(yīng)用中需實現(xiàn)將多個源數(shù)據(jù)庫中的“訂單表”的不同數(shù)據(jù)內(nèi)容整合至一個目標(biāo)數(shù)據(jù)庫中,以便于通過該目標(biāo)數(shù)據(jù)庫可讀取所有“訂單表”的數(shù)據(jù)內(nèi)容,此時,即可通過本發(fā)明實施例所提供的方法或裝置實現(xiàn)。
[0030]較佳的,場景二中,也可設(shè)置多個目標(biāo)數(shù)據(jù)庫,分別將多個源數(shù)據(jù)庫中的“訂單表”同步至多個目標(biāo)數(shù)據(jù)庫中,以減少單個目標(biāo)數(shù)據(jù)庫的查詢負(fù)荷量。
[0031]場景三:源數(shù)據(jù)庫為多個,目標(biāo)數(shù)據(jù)庫為多個,該多個源數(shù)據(jù)庫為“寫庫”,且多個源數(shù)據(jù)庫中儲存的數(shù)據(jù)表均為同一個數(shù)據(jù)表,例如“訂單表”,多個源數(shù)據(jù)庫中存儲同一個數(shù)據(jù)表“訂單表”,而不同源數(shù)據(jù)庫中儲存的數(shù)據(jù)內(nèi)容不同。具體可為,源數(shù)據(jù)庫按商戶維度來區(qū)分,商戶一的訂單表信息通過一個源數(shù)據(jù)庫儲存,而商戶二的訂單表信息通過另一個源數(shù)據(jù)庫儲存。多個目標(biāo)數(shù)據(jù)庫均為“讀庫”。實際應(yīng)用中可將以商戶為維度區(qū)分的多個源數(shù)據(jù)庫中的“訂單表”的不同數(shù)據(jù)內(nèi)容整合至以時間為維度的多個目標(biāo)數(shù)據(jù)庫中,即,可將一月份的所有商戶的訂單表整合至一個目標(biāo)數(shù)據(jù)庫中,將二月份的所有商戶的訂單表整合至另一個目標(biāo)數(shù)據(jù)庫中,以便于通過該目標(biāo)數(shù)據(jù)庫可讀取所有“訂單表”的數(shù)據(jù)內(nèi)容,此時,即可通過本發(fā)明實施例所提供的方法或裝置實現(xiàn)。
[0032]場景四:本發(fā)明實施例中的至少一個目標(biāo)數(shù)據(jù)庫儲存單個源數(shù)據(jù)庫儲存的全部數(shù)據(jù)表中的部分?jǐn)?shù)據(jù)表。該單個目標(biāo)數(shù)據(jù)庫中也可儲存有多個源數(shù)據(jù)庫中每個源數(shù)據(jù)庫中儲存的部分?jǐn)?shù)據(jù)表。舉個例子,源數(shù)據(jù)庫一中儲存有數(shù)據(jù)表“一月份統(tǒng)計表、二月份統(tǒng)計表”,源數(shù)據(jù)庫二中儲存有數(shù)據(jù)表“三月份統(tǒng)計表、四月份統(tǒng)計表”,目標(biāo)數(shù)據(jù)庫中可僅存儲源數(shù)據(jù)庫一中的數(shù)據(jù)表“一月份統(tǒng)計表”,也可僅存儲有源數(shù)據(jù)庫一中的“一月份統(tǒng)計表”和源數(shù)據(jù)庫二中的“三月份統(tǒng)計表”。
[0033]場景五:新增一目標(biāo)數(shù)據(jù)庫,或某個目標(biāo)數(shù)據(jù)庫在數(shù)據(jù)同步過程中中斷了,而中斷時間點相距當(dāng)前時間點較遠(yuǎn),此時需要對該目標(biāo)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步的初始化過程的設(shè)置,即需要使該目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)表內(nèi)容與源數(shù)據(jù)庫的某一時刻的數(shù)據(jù)表內(nèi)容保持一致。
[0034]場景六:目標(biāo)數(shù)據(jù)庫在數(shù)據(jù)同步過程中中斷了,而中斷時間點相距當(dāng)前時間點較遠(yuǎn),此時需要使該目標(biāo)數(shù)據(jù)庫從中斷狀態(tài)恢復(fù)至正常數(shù)據(jù)同步的工作狀態(tài)。
[0035]圖1a示例性示出了一種本發(fā)明實施例提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖;圖1b示例性示出了一種本發(fā)明實施例提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖;圖1c示例性示出了一種本發(fā)明實施例所提供的方法或裝置適用的系統(tǒng)架構(gòu)示意圖。
[0036]如圖la、圖lb、圖1c所示,本發(fā)明實施例所提供的方法或裝置適用的系統(tǒng)架構(gòu)中可包括多個源數(shù)據(jù)庫101、與源數(shù)據(jù)庫101連接的源端服務(wù)器107,較佳的,源端服務(wù)器107包括源端中繼服務(wù)器102和源端歷史服務(wù)器105。源端中繼服務(wù)器102與源數(shù)據(jù)庫101連接、源端中繼服務(wù)器102與目標(biāo)端服務(wù)器103連接、目標(biāo)端服務(wù)器103連接的多個目標(biāo)數(shù)據(jù)庫104。較佳的,本發(fā)明實施例中目標(biāo)端服務(wù)器103也可連接非數(shù)據(jù)庫類型的系統(tǒng)108,如聯(lián)機系統(tǒng)、或文檔類需獲取源數(shù)據(jù)庫中的數(shù)據(jù)內(nèi)容的文件均可。
[0037]較佳的,本發(fā)明實施例所提供的方法或裝置適用的系統(tǒng)架構(gòu)還包括與源端中繼服務(wù)器102連接的源端歷史服務(wù)器105、源端歷史服務(wù)器105與目標(biāo)端服務(wù)器103連接、與源數(shù)據(jù)庫101連接的源端快照服務(wù)器106、源端快照服務(wù)器106與目標(biāo)端服務(wù)器103連接,較佳的,源端服務(wù)器107包括源端中繼服務(wù)器102和源端歷史服務(wù)器105。
[0038]本發(fā)明實施例用于實現(xiàn)目標(biāo)數(shù)據(jù)庫在數(shù)據(jù)同步之前的初始化過程,以及源數(shù)據(jù)庫101與目標(biāo)數(shù)據(jù)庫104之間的數(shù)據(jù)同步。較佳的,本發(fā)明實施例中為了保證目標(biāo)數(shù)據(jù)庫與源數(shù)據(jù)庫的常規(guī)數(shù)據(jù)同步操作的效率較高,將源端中繼服務(wù)器設(shè)置為非持久化保存數(shù)據(jù)變更事件的服務(wù)器,將源端歷史服務(wù)器設(shè)置為可持久化保存數(shù)據(jù)變更事件的服務(wù)器。源端中繼服務(wù)器將捕獲的數(shù)據(jù)變更事件緩存至內(nèi)存中,常規(guī)數(shù)據(jù)同步操作中,目標(biāo)數(shù)據(jù)庫通過目標(biāo)端服務(wù)器從源端中繼服務(wù)器中獲取數(shù)據(jù)變更事件,由于源端中繼服務(wù)器將數(shù)據(jù)變更事件緩存至內(nèi)存中,因此通過源端中繼服務(wù)器寫入或讀出數(shù)據(jù)變更事件的效率也較高。但是由于內(nèi)存的空間有限,僅能存儲最新的少量的數(shù)據(jù)變更事件,時間較遠(yuǎn)的數(shù)據(jù)變更事件在源端中繼服務(wù)器中可能會被丟棄,因此,較佳的,提供一源端歷史服務(wù)器,通過該源端歷史服務(wù)器定期從源端中繼服務(wù)器中獲取數(shù)據(jù)變更事件,再持久化保持至源端歷史服務(wù)器中,即保持至源端歷史服務(wù)器的硬盤或磁盤中,此時一旦目標(biāo)數(shù)據(jù)庫需同步的數(shù)據(jù)變更事件不在源端中繼服務(wù)器中時,目標(biāo)數(shù)據(jù)庫可從源端歷史服務(wù)器中獲取時間較遠(yuǎn)的數(shù)據(jù)變更事件。
[0039]本發(fā)明實施例中當(dāng)新增一個目標(biāo)數(shù)據(jù)庫時,該目標(biāo)數(shù)據(jù)庫通過本發(fā)明實施例中的源端快照服務(wù)器和目標(biāo)端服務(wù)器自動實現(xiàn)初始化過程,同時,目標(biāo)端服務(wù)器獲得目標(biāo)數(shù)據(jù)庫執(zhí)行初始化過程中的全量數(shù)據(jù)快照文件的生成時間,該目標(biāo)端服務(wù)器依據(jù)該生成時間從源端服務(wù)器中接著獲取后續(xù)數(shù)據(jù)變更事件,從而實現(xiàn)與源數(shù)據(jù)庫之間的同步。
[0040]具體來說,與該目標(biāo)數(shù)據(jù)庫連接的目標(biāo)端服務(wù)器經(jīng)判斷,確定當(dāng)前全量數(shù)據(jù)快照文件的生成時間對應(yīng)的數(shù)據(jù)變更事件不在源端中繼服務(wù)器時,則從源端歷史服務(wù)器中獲取初始化時間點至當(dāng)前時間點內(nèi)的數(shù)據(jù)變更事件,所述初始化時間點早于或等于所述源數(shù)據(jù)表標(biāo)識號對應(yīng)的全量數(shù)據(jù)快照文件的生成時間,并在獲取到數(shù)據(jù)變更事件之后對目標(biāo)數(shù)據(jù)庫執(zhí)行數(shù)據(jù)同步操作;之后,目標(biāo)端服務(wù)器接著去源端歷史服務(wù)器中獲取上次同步操作執(zhí)行完成后,最新的已同步的日期最新的數(shù)據(jù)變更事件之后的數(shù)據(jù)變更事件,并再次執(zhí)行數(shù)據(jù)同步操作,直至目標(biāo)端服務(wù)器判斷出目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件的生成時間與當(dāng)前時間的時間差小于第一中斷時長時,目標(biāo)數(shù)據(jù)端服務(wù)器則從源端中繼服務(wù)器中獲取目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件之后的數(shù)據(jù)變更事件。
[0041]較佳的,在目標(biāo)數(shù)據(jù)庫與源端數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步的常規(guī)過程中,若目標(biāo)數(shù)據(jù)庫因某種原因,如目標(biāo)數(shù)據(jù)庫故障,或與該目標(biāo)數(shù)據(jù)庫連接的目標(biāo)端服務(wù)器發(fā)生故障,因而目標(biāo)數(shù)據(jù)庫中斷了一斷時間,若目標(biāo)端服務(wù)器經(jīng)判斷,目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件的生成時間與當(dāng)前時間不小于第一中斷時長時,則目標(biāo)端服務(wù)器先從源端歷史服務(wù)器中獲取已同步的日期最新的數(shù)據(jù)變更事件之后的數(shù)據(jù)變更事件;直至目標(biāo)端服務(wù)器判斷出目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件的生成時間與當(dāng)前時間的時間差小于第一中斷時長時,目標(biāo)數(shù)據(jù)端服務(wù)器則從源端中繼服務(wù)器中獲取目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件之后的數(shù)據(jù)變更事件。
[0042]較佳的,在目標(biāo)數(shù)據(jù)庫與源端數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步的常規(guī)過程中,若目標(biāo)數(shù)據(jù)庫因某種原因,中斷了一斷時間,若目標(biāo)端數(shù)據(jù)庫經(jīng)判斷,目標(biāo)數(shù)據(jù)庫中已同步的日期最新的數(shù)據(jù)變更事件的生成時間與當(dāng)前時間不小于第二時長時,則目標(biāo)端服務(wù)器先從源端快照服務(wù)器中獲取全量數(shù)據(jù)快照文件,接著從源端歷史服務(wù)器或源端中繼服務(wù)器中獲取全量數(shù)據(jù)快照文件的生成時間或生成時間之前的某一時間之后的數(shù)據(jù)變更事件。
[0043]從上述過程中可看出,本發(fā)明實施例中,若新增一目標(biāo)數(shù)據(jù)庫,則目標(biāo)端服務(wù)器自動從源端快照服務(wù)器中獲取全量快照文件,并將其導(dǎo)入目標(biāo)數(shù)據(jù)庫中,從而自動實現(xiàn)初始化過程;接著,經(jīng)判斷,可自動從源端歷史服務(wù)器或源端中繼服務(wù)器獲取后續(xù)數(shù)據(jù)變更事件,以便實現(xiàn)數(shù)據(jù)同步的自動化;且進(jìn)一步在數(shù)據(jù)同步操作過程中若出現(xiàn)中斷,則目標(biāo)端服務(wù)器也可自動從源端歷史服務(wù)器或源端中繼服務(wù)器獲取中斷后的數(shù)據(jù)變更事件,整個過程不需人工操作,提高了數(shù)據(jù)同步效率。
[0044]較佳的,本發(fā)明實施例中源端服務(wù)器可連接一個源數(shù)據(jù)庫,也可連接多個源數(shù)據(jù)庫,多個源數(shù)據(jù)庫中可存儲同一個數(shù)據(jù)表中的不同數(shù)據(jù)內(nèi)容。較佳的,源端服務(wù)器可連接一個目標(biāo)端服務(wù)器,也可連接多個目標(biāo)端服務(wù)器,每個目標(biāo)端服務(wù)器可連接多個目標(biāo)數(shù)據(jù)庫,也可每個目標(biāo)端服務(wù)器僅連接一個目標(biāo)數(shù)據(jù)庫。
[0045]較佳的,本發(fā)明實施例中的源端服務(wù)器包括源端中繼服務(wù)器和源端歷史服務(wù)器,因此,具體來說,本發(fā)明實施例中源端中繼服務(wù)器可連接一個源數(shù)據(jù)庫,也可連接多個源數(shù)據(jù)庫。較佳的,源端中繼服務(wù)器可連接一個目標(biāo)端服務(wù)器,也可連接多個目標(biāo)端服務(wù)器。較佳的,本發(fā)明實施例中的源端歷史服務(wù)器,可連接一個源端中繼服務(wù)器,也可連接多個源端中繼服務(wù)器。
[0046]較佳的,本發(fā)明實施例中源端快照服務(wù)器可連接一個源數(shù)據(jù)庫,也可連接多個源數(shù)據(jù)庫。較佳的,源端快照服務(wù)器可連接一個目標(biāo)端服務(wù)器,也可連接多個目標(biāo)端服務(wù)器。
[0047]較佳的,本發(fā)明實施例中的針對相同的源數(shù)據(jù)庫連接的源端中繼服務(wù)器也可布置多個,一方面提高系統(tǒng)的可用性,避免單個源端中繼服務(wù)器出現(xiàn)故障時,整個系統(tǒng)不可用的現(xiàn)象;另一方面,提高系統(tǒng)的擴