一種數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)數(shù)據(jù)一致性的檢測(cè)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)數(shù)據(jù)同步領(lǐng)域,具體涉及一種數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)數(shù)據(jù)一致性的檢測(cè)方法及系統(tǒng),用于判定同步復(fù)制過(guò)程中,源端數(shù)據(jù)和目的端數(shù)據(jù)的一致性,從而確定當(dāng)前數(shù)據(jù)庫(kù)同步系統(tǒng)工作的有效性。
【背景技術(shù)】
[0002]隨著信息化建設(shè)的高速發(fā)展,信息系統(tǒng)已經(jīng)成為企業(yè)維持業(yè)務(wù)運(yùn)轉(zhuǎn)的關(guān)鍵,企業(yè)迫切需要提高信息系統(tǒng)的可用性,保證業(yè)務(wù)的連續(xù)性,最大限度地減少因?yàn)?zāi)難或故障所帶來(lái)的損失。另一方面,多樣化的業(yè)務(wù)類(lèi)型導(dǎo)致數(shù)據(jù)訪(fǎng)問(wèn)需求的日趨復(fù)雜化,數(shù)據(jù)量的急劇攀升也導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器不堪重負(fù),企業(yè)同樣迫切需要提高信息系統(tǒng)的運(yùn)行效率。
[0003]數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)基于成熟的關(guān)系數(shù)據(jù)模型和標(biāo)準(zhǔn)接口,能以極少的系統(tǒng)開(kāi)支實(shí)現(xiàn)秒級(jí)數(shù)據(jù)實(shí)時(shí)同步,可廣泛應(yīng)用于應(yīng)急系統(tǒng)、容災(zāi)備份、負(fù)載均衡、數(shù)據(jù)移植、聯(lián)機(jī)維護(hù)、多業(yè)務(wù)中心等業(yè)務(wù)領(lǐng)域。
[0004]目前數(shù)據(jù)同步一致性檢測(cè)的方法可以簡(jiǎn)單分為離線(xiàn)檢測(cè)和在線(xiàn)檢測(cè)兩大類(lèi)。
[0005]前者技術(shù)思路較為簡(jiǎn)單,即在實(shí)施數(shù)據(jù)一致性檢測(cè)前,停止業(yè)務(wù)系統(tǒng)的工作,通過(guò)比較靜止?fàn)顟B(tài)下的源端和目的端數(shù)據(jù)的一致性從而判定同步系統(tǒng)工作的有效性。這種檢測(cè)方案以犧牲業(yè)務(wù)系統(tǒng)連續(xù)性為代價(jià),因此對(duì)于業(yè)務(wù)連續(xù)性要求較高的數(shù)據(jù)同步系統(tǒng)實(shí)用性不高,往往只是作為補(bǔ)充技術(shù)手段。
[0006]在線(xiàn)檢測(cè)則較為復(fù)雜,表現(xiàn)在兩個(gè)方面。一是業(yè)務(wù)系統(tǒng)工作的連續(xù)性使得源端數(shù)據(jù)可能總是處于變化中,需要確定比對(duì)的基準(zhǔn)點(diǎn)以及相應(yīng)的比對(duì)數(shù)據(jù)。二是數(shù)據(jù)同步的過(guò)程中,源端和目的端數(shù)據(jù)庫(kù)之間存在一個(gè)稱(chēng)之為同步窗口的同步時(shí)間間隔,在這個(gè)窗口期間源庫(kù)與目的庫(kù)數(shù)據(jù)可能會(huì)存在不一致的情況。
[0007]公開(kāi)號(hào)“CN103927313A”、名稱(chēng)為“企業(yè)信息系統(tǒng)數(shù)據(jù)同步核查機(jī)制”的專(zhuān)利文獻(xiàn)公開(kāi)了一種自動(dòng)核查系統(tǒng),通過(guò)對(duì)原始記錄進(jìn)行標(biāo)記來(lái)實(shí)施數(shù)據(jù)同步以及比對(duì)核定數(shù)據(jù)同步的信息一致性。該方法破壞了原始數(shù)據(jù)的固有結(jié)構(gòu),對(duì)應(yīng)用系統(tǒng)的插入、更新操作提出了額外的工作要求。
[0008]公開(kāi)號(hào)“CN200710000456、名稱(chēng)為“一種驗(yàn)證數(shù)據(jù)同步的方法及系統(tǒng)”的專(zhuān)利文獻(xiàn)公開(kāi)的驗(yàn)證方法事先確定了待驗(yàn)證的同步數(shù)據(jù),并且側(cè)重于論述待驗(yàn)證同步數(shù)據(jù)的比對(duì)方法,因此可以歸結(jié)為前述的離線(xiàn)檢測(cè)方法,并不適合于數(shù)據(jù)庫(kù)實(shí)時(shí)數(shù)據(jù)同步的在線(xiàn)檢測(cè)。
【發(fā)明內(nèi)容】
[0009]為了克服現(xiàn)有數(shù)據(jù)庫(kù)同步系統(tǒng)中現(xiàn)有數(shù)據(jù)一致性檢測(cè)技術(shù)的缺陷,本發(fā)明提供一種基于同步數(shù)據(jù)一致性在線(xiàn)檢測(cè)方法及系統(tǒng),其目的在于,在保證應(yīng)用系統(tǒng)業(yè)務(wù)連續(xù)性的同時(shí),提高同步數(shù)據(jù)一致性的檢測(cè)效率,確保數(shù)據(jù)庫(kù)同步系統(tǒng)的正確運(yùn)行。
[0010]—種數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)數(shù)據(jù)一致性的檢測(cè)方法,在源端和目的端分別部署有一個(gè)源端數(shù)據(jù)代理和目的端數(shù)據(jù)代理,該方法具體為:[0011 ]源端數(shù)據(jù)代理對(duì)源數(shù)據(jù)庫(kù)表進(jìn)行鎖表操作,獲取源端數(shù)據(jù)庫(kù)表的操作序列號(hào),將操作序列號(hào)發(fā)送給數(shù)據(jù)庫(kù)同步系統(tǒng);
[0012]數(shù)據(jù)庫(kù)同步系統(tǒng)執(zhí)行數(shù)據(jù)同步到所述操作序列號(hào)并暫停;
[0013]源端數(shù)據(jù)代理在源數(shù)據(jù)庫(kù)表中查詢(xún)所述操作序列號(hào)對(duì)應(yīng)的數(shù)據(jù),目的端數(shù)據(jù)代理在目的數(shù)據(jù)庫(kù)表中查詢(xún)所述操作序列號(hào)對(duì)應(yīng)的數(shù)據(jù);
[0014]對(duì)比工具對(duì)源端數(shù)據(jù)代理和目的端數(shù)據(jù)代理查詢(xún)到的數(shù)據(jù)進(jìn)行對(duì)比,生成一致性對(duì)比報(bào)告。
[0015]—種數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)數(shù)據(jù)一致性的檢測(cè)系統(tǒng),包括:
[0016]源端數(shù)據(jù)代理,用于對(duì)源數(shù)據(jù)庫(kù)表進(jìn)行鎖表操作,獲取源端數(shù)據(jù)庫(kù)表的操作序列號(hào),將操作序列號(hào)發(fā)送給數(shù)據(jù)庫(kù)同步系統(tǒng),在源數(shù)據(jù)庫(kù)表中查詢(xún)所述操作序列號(hào)對(duì)應(yīng)的數(shù)據(jù);
[0017]數(shù)據(jù)庫(kù)同步系統(tǒng),用于執(zhí)行數(shù)據(jù)同步到所述操作序列號(hào)并暫停;
[0018]目的端數(shù)據(jù)代理,用于在目的數(shù)據(jù)庫(kù)表中查詢(xún)所述操作序列號(hào)對(duì)應(yīng)的數(shù)據(jù);
[0019]對(duì)比工具,用于對(duì)源端數(shù)據(jù)代理和目的端數(shù)據(jù)代理查詢(xún)到的數(shù)據(jù)進(jìn)行對(duì)比,生成一致性對(duì)比報(bào)告。
[0020]進(jìn)一步地,所述源端數(shù)據(jù)代理對(duì)源數(shù)據(jù)庫(kù)表進(jìn)行鎖表操作,源數(shù)據(jù)庫(kù)表可繼續(xù)響應(yīng)讀訪(fǎng)問(wèn)請(qǐng)求;所述源端數(shù)據(jù)代理獲取到源端數(shù)據(jù)后,解除鎖表,源端數(shù)據(jù)庫(kù)表恢復(fù)正常工作。
[0021 ]進(jìn)一步地,在源端數(shù)據(jù)代理對(duì)源數(shù)據(jù)庫(kù)表進(jìn)行鎖表操作前,源端數(shù)據(jù)代理首先向數(shù)據(jù)庫(kù)同步系統(tǒng)發(fā)送同步暫停命令,數(shù)據(jù)庫(kù)同步系統(tǒng)暫停數(shù)據(jù)同步。
[0022]進(jìn)一步地,源端數(shù)據(jù)代理將操作序列號(hào)發(fā)送給數(shù)據(jù)庫(kù)同步系統(tǒng),數(shù)據(jù)庫(kù)同步系統(tǒng)執(zhí)行數(shù)據(jù)同步直到所述操作序列號(hào)為止,然后暫停數(shù)據(jù)同步。
[0023]進(jìn)一步地,在生成一致性對(duì)比報(bào)告后,源端數(shù)據(jù)代理斷掉與數(shù)據(jù)庫(kù)同步系統(tǒng)的連接,數(shù)據(jù)庫(kù)同步系統(tǒng)發(fā)現(xiàn)源端數(shù)據(jù)代理的連接斷掉,則結(jié)束暫停,繼續(xù)進(jìn)行數(shù)據(jù)同步。
[0024]本發(fā)明用于檢測(cè)數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng)數(shù)據(jù)同步工作的有效性。在進(jìn)行實(shí)時(shí)同步的時(shí)候,需要了解同步的結(jié)果是否正確,因此需要對(duì)同步的數(shù)據(jù)進(jìn)行對(duì)比,驗(yàn)證其一致性,并生成詳細(xì)的對(duì)比報(bào)告,提供用戶(hù)參考。本發(fā)明涉及的數(shù)據(jù)庫(kù)實(shí)時(shí)同步系統(tǒng),是一種基于日志的結(jié)構(gòu)化數(shù)據(jù)同步軟件,它通過(guò)解析源數(shù)據(jù)庫(kù)在線(xiàn)日志或歸檔日志獲得數(shù)據(jù)的增刪改變化,再將這些變化應(yīng)用到目的數(shù)據(jù)庫(kù),實(shí)現(xiàn)源數(shù)據(jù)庫(kù)與目的數(shù)據(jù)庫(kù)同步。按照本發(fā)明提供的同步一致性檢測(cè)方法,可以隨時(shí)實(shí)施一致性檢測(cè),而不需要中止源端業(yè)務(wù)系統(tǒng)。
【附圖說(shuō)明】
[0025]圖1是本發(fā)明數(shù)據(jù)同步一致性檢測(cè)裝置的結(jié)構(gòu)示意圖
[0026]圖2是按照本發(fā)明的數(shù)據(jù)同步一致性檢測(cè)裝置的結(jié)構(gòu)示意圖,圖中實(shí)線(xiàn)是VERI與AGENT的命令流向,點(diǎn)劃線(xiàn)是數(shù)據(jù)庫(kù)的數(shù)據(jù)流向。
【具體實(shí)施方式】
[0027]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
[0028]本發(fā)明以數(shù)據(jù)庫(kù)表為數(shù)據(jù)一致性檢測(cè)對(duì)象,即每次檢測(cè)只針對(duì)單一數(shù)據(jù)庫(kù)表進(jìn)行。
[0029]本發(fā)明涉及的功能組件包括數(shù)據(jù)代理(AGENT,主要用作對(duì)比數(shù)據(jù)集獲取,并計(jì)算其MD5摘要)、對(duì)比工具(VERI,主要用作數(shù)據(jù)對(duì)比,并且生成對(duì)比報(bào)告)以及被檢測(cè)的數(shù)據(jù)庫(kù)同步系統(tǒng)。
[0030]數(shù)據(jù)庫(kù)同步系統(tǒng)的源端和目的端都部署有一個(gè)AGENT,部署結(jié)構(gòu)如圖1所示。
[0031 ]源端AGENT通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)的封鎖機(jī)制臨時(shí)停止待檢測(cè)表上的更新操作,以獲取該表數(shù)據(jù)一個(gè)穩(wěn)定的最新版本,即通過(guò)對(duì)該表上共享鎖(S鎖)阻止后續(xù)的更新操作,通過(guò)執(zhí)行查詢(xún)語(yǔ)句獲取當(dāng)前表中的全部數(shù)據(jù);源端AGENT計(jì)算出MD5摘要作為源端參與比對(duì)的對(duì)象。
[0032]對(duì)于同步時(shí)間窗口問(wèn)題,本發(fā)明利用數(shù)據(jù)庫(kù)的系統(tǒng)日志序號(hào)(LSN)和數(shù)據(jù)庫(kù)同步系統(tǒng)加以解決,即源端AGENT在鎖表成功后獲取源端數(shù)據(jù)庫(kù)當(dāng)前的系統(tǒng)日志序號(hào)(LSN