主、備數(shù)據(jù)庫及其數(shù)據(jù)一致性檢測、修復方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種主、備數(shù)據(jù)庫及其數(shù)據(jù)一致性檢測、修復方法和裝置,從主數(shù)據(jù)庫導出待檢測的主文件;并從備數(shù)據(jù)庫導出與該主文件對應的備文件;進而將主文件和備文件進行比較,根據(jù)比較結果判斷該主文件和備文件的一致性,且可進一步根據(jù)一致性的檢測結果修復備數(shù)據(jù)庫中的數(shù)據(jù)??梢?,本發(fā)明提供的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法及裝置可實現(xiàn)對主數(shù)據(jù)庫和備數(shù)據(jù)庫中數(shù)據(jù)一致性的檢測;且本發(fā)明提供的主備數(shù)據(jù)庫數(shù)據(jù)一致性修復方法及裝置可根據(jù)檢測結果進一步實現(xiàn)對備數(shù)據(jù)庫中數(shù)據(jù)的修復;當發(fā)生數(shù)據(jù)沖突以后,可及時修復不一致的數(shù)據(jù),提高數(shù)據(jù)質量和復制系統(tǒng)的穩(wěn)定性。
【專利說明】主、備數(shù)據(jù)庫及其數(shù)據(jù)一致性檢測、修復方法和裝置
【技術領域】
[0001] 本發(fā)明涉及電信業(yè)務數(shù)據(jù)庫應用領域,尤其涉及數(shù)據(jù)庫復制過程中,通過對主、備 數(shù)據(jù)庫數(shù)據(jù)一致性檢測和修復,提高數(shù)據(jù)庫復制系統(tǒng)穩(wěn)定性的技術。
【背景技術】
[0002] 在軟件行業(yè),數(shù)據(jù)庫作為存儲中心,各種數(shù)據(jù)庫應用都是在數(shù)據(jù)庫上開展。在電 信業(yè)務數(shù)據(jù)庫軟件行業(yè),人們對數(shù)據(jù)庫要求越來越高。一方面需要在平時提供7 X 24小時 的不間斷服務,保證關鍵數(shù)據(jù)完整性;另一方面,當發(fā)生災難主數(shù)據(jù)庫數(shù)據(jù)遭受損壞時,需 要在不丟失或者少丟失數(shù)據(jù)的前提下,迅速恢復數(shù)據(jù)庫,保證業(yè)務的連續(xù)性。為此,人們發(fā) 明了數(shù)據(jù)庫復制技術,該技術建立主、備兩個數(shù)據(jù)庫,將主數(shù)據(jù)庫數(shù)據(jù)的變化同步到備數(shù)據(jù) 庫,備數(shù)據(jù)庫處于待命狀態(tài)。此外,數(shù)據(jù)庫復制技術還應用于數(shù)據(jù)分發(fā)與集中、負荷分擔等 各種場景。
[0003] 保證主、備數(shù)據(jù)庫數(shù)據(jù)的一致性非常重要。當發(fā)生主數(shù)據(jù)庫發(fā)生故障時,系統(tǒng)發(fā)生 切換,備數(shù)據(jù)庫升級為主用狀態(tài)。這種機制只有在主備數(shù)據(jù)庫的數(shù)據(jù)完全一致時,才能保證 業(yè)務正常進行。如果主備數(shù)據(jù)庫的數(shù)據(jù)不一致,當主數(shù)據(jù)庫數(shù)據(jù)的變化同步到備數(shù)據(jù)庫的 時候,會發(fā)生數(shù)據(jù)沖突。數(shù)據(jù)沖突將使系統(tǒng)穩(wěn)定性降低,需要盡快解決。如果沒有及時解決, 相應的復制進程將暫?;蚪K止,數(shù)據(jù)庫復制功能將失效。
[0004] 在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有的復制技術沒有提供任何有效的措施對 主、備份數(shù)據(jù)的一致性進行檢測和修復,至少存在以下缺點:目前主流數(shù)據(jù)庫廠商提供了數(shù) 據(jù)庫復制技術,但是缺少數(shù)據(jù)一致性檢測、修復功能或產(chǎn)品;在電信業(yè)務數(shù)據(jù)庫應用軟件 領域,由應用軟件實現(xiàn)的主備數(shù)據(jù)庫復制系統(tǒng)缺乏一種快速、有效的主備數(shù)據(jù)庫數(shù)據(jù)比較 方法,不能在線發(fā)現(xiàn)主備數(shù)據(jù)不一致性,當發(fā)生數(shù)據(jù)沖突以后,也不能及時修復不一致的數(shù) 據(jù),造成復制系統(tǒng)穩(wěn)定性下降。
[0005] 所以,主、備數(shù)據(jù)庫數(shù)據(jù)的一致性檢測和修復是一項重要的工作,如何實時地檢測 主、備數(shù)據(jù)庫的數(shù)據(jù)是否一致,在系統(tǒng)不繁忙時,對不一致的數(shù)據(jù)進行修復以使主、備數(shù)據(jù) 庫的數(shù)據(jù)達到一致,成為了一個亟待解決的重要問題。
【發(fā)明內容】
[0006] 本發(fā)明要解決的主要技術問題是,提供一種主、備數(shù)據(jù)庫及其數(shù)據(jù)一致性檢測、修 復方法和裝置。
[0007] 為解決上述技術問題,本發(fā)明提供一種主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,所述方 法包括:
[0008] 從主數(shù)據(jù)庫導出待檢測的主文件;并從備數(shù)據(jù)庫導出與所述主文件對應的備文 件;
[0009] 將所述主文件和所述備文件進行比較,根據(jù)比較結果判斷所述主文件和所述備文 件的一致性。
[0010] 在本發(fā)明的一種實施例中,所述將所述主文件和所述備文件比較包括:
[0011] 比較所述主文件和所述備文件的文件大小是否相同,和/或比較所述主文件和所 述備文件存儲數(shù)據(jù)的行數(shù)是否相同,和/或基于唯一索引比較所述主文件和所述備文件是 否相同,和/或比較所述主文件和所述備文件的摘要值是否相同。
[0012] 在本發(fā)明的一種實施例中,判斷主文件和備文件是否相同包括:
[0013] 分別計算所述主文件和所述備文件的消息摘要得到主文件摘要值和備文件摘要 值;
[0014] 比較所述主文件摘要值和所述備文件摘要值是否一致;如是,則所述主文件和所 述備文件一致;否則,將所述主文件和所述備文件進行進一步比較。
[0015] 在本發(fā)明的一種實施例中,所述從主數(shù)據(jù)庫導出待檢測的主文件包括:
[0016] 確定所述主數(shù)據(jù)庫中待檢測的主數(shù)據(jù)表,所述主數(shù)據(jù)表包括主唯一索引字段;
[0017] 獲取所述主數(shù)據(jù)表的表屬性信息和主唯一索引字段并保存在所述主文件中,并根 據(jù)所述主唯一索引字段從所述主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述主文件中;
[0018] 所述從備數(shù)據(jù)庫導出與所述主文件對應的備文件包括:
[0019] 確定所述備數(shù)據(jù)庫中與所述主數(shù)據(jù)表對應的備數(shù)據(jù)表,所述備數(shù)據(jù)表包括備唯一 索引字段;
[0020] 獲取所述備數(shù)據(jù)表的表屬性信息和備唯一索引字段并保存在所述備文件中,并根 據(jù)所述備唯一索引字段從所述備數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述備文件中。
[0021] 在本發(fā)明的一種實施例中,將所述主文件和所述備文件進行進一步比較為基于唯 一索引比較所述主文件和所述備文件是否相同,包括:
[0022] 分別依次按行讀取所述主文件和所述備文件的數(shù)據(jù);
[0023] 分別獲取所述主文件和所述備文件中當前行數(shù)據(jù)中的主唯一索引列數(shù)據(jù)和備唯 一索引列數(shù)據(jù);
[0024] 將所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)進行比較判斷是否一致,如 否,根據(jù)比較結果生成修復指令;如是,則分別獲取所述主文件和所述備文件中當前行的其 他列數(shù)據(jù)進行比較判斷是否一致,如不一致,根據(jù)比較結果生成修復指令后轉至下一行,如 一致,直接轉至下一行,直至所述主文件或所述備文件的最后一行。
[0025] 在本發(fā)明的一種實施例中,所述主文件和所述備文件中的數(shù)據(jù)分別按照所述主唯 一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)升序排列;
[0026] 當所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)不一致時,生成修復指令包 括:
[0027] 如所述備唯一索引列數(shù)據(jù)比所述主唯一索引數(shù)據(jù)大,生成的修復指令為在所述備 數(shù)據(jù)庫中插入所述主文件中該行的數(shù)據(jù);
[0028] 如所述備唯一索引列數(shù)據(jù)比所述主唯一索引數(shù)據(jù)小,生成的修復指令為在所述備 數(shù)據(jù)庫中刪除所述備文件中該行的數(shù)據(jù);
[0029] 當所述主文件和所述備文件中當前行的其他列數(shù)據(jù)不一致時,生成的修復指令 為:
[0030] 將備數(shù)據(jù)庫中該行的數(shù)據(jù)更新為所述主文件中該行的數(shù)據(jù)。
[0031] 在本發(fā)明的一種實施例中,從主數(shù)據(jù)庫導出待檢測的主文件,并從備數(shù)據(jù)庫導出 與所述主文件對應的備文件之前,還包括:
[0032] 接收檢測流程觸發(fā)指令,所述檢測流程觸發(fā)指令在非業(yè)務高峰期發(fā)送,和/或在 所述主、備數(shù)據(jù)庫數(shù)據(jù)同步后發(fā)送,和/或主、備數(shù)據(jù)庫配置數(shù)據(jù)修改成功后發(fā)送。
[0033] 在本發(fā)明的一種實施例中,根據(jù)所述比較結果判斷所述主文件和所述備文件不一 致時,還包括發(fā)送告警。
[0034] 為了解決上述問題,本發(fā)明還提供了一種主備數(shù)據(jù)庫數(shù)據(jù)一致性修復方法,所述 方法包括:
[0035] 根據(jù)如上所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法檢測所述主數(shù)據(jù)庫和所述備數(shù) 據(jù)庫中待檢測的數(shù)據(jù)是否一致;根據(jù)檢測結果對所述備數(shù)據(jù)庫中相應的數(shù)據(jù)進行修復。
[0036] 為了解決上述問題,本發(fā)明還提供了一種主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,所述 裝置包括文件導出模塊、比較模塊;
[0037] 所述文件導出模塊用于從主數(shù)據(jù)庫導出待檢測的主文件,以及用于從備數(shù)據(jù)庫導 出與所述主文件對應的備文件;
[0038] 所述比較模塊用于將所述主文件和所述備文件進行比較,根據(jù)比較結果判斷所述 主文件和所述備文件的一致性。
[0039] 在本發(fā)明的一種實施例中,所述比較模塊將所述主文件和所述備文件比較包括:
[0040] 比較所述主文件和所述備文件的文件大小是否相同,和/或比較所述主文件和所 述備文件存儲數(shù)據(jù)的行數(shù)是否相同,和/或基于唯一索引比較所述主文件和所述備文件是 否相同,和/或比較所述主文件和所述備文件的摘要值是否相同。
[0041] 在本發(fā)明的一種實施例中,所述比較模塊包括摘要計算子模塊、摘要比較子模 塊;
[0042] 所述摘要計算子模塊用于分別計算所述主文件和所述備文件的消息摘要得到主 文件摘要值和備文件摘要值;
[0043] 所述摘要比較子模塊用于比較所述主文件摘要值和所述備文件摘要值是否一致; 如是,則所述主文件和所述備文件一致。
[0044] 在本發(fā)明的一種實施例中,所述文件導出模塊從主數(shù)據(jù)庫導出待檢測的主文件包 括:
[0045] 確定所述主數(shù)據(jù)庫中待檢測的主數(shù)據(jù)表,所述主數(shù)據(jù)表包括主唯一索引字段;
[0046] 獲取所述主數(shù)據(jù)表的表屬性信息和主唯一索引字段并保存在所述主文件中,并根 據(jù)所述主唯一索引字段從所述主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述主文件中;
[0047] 所述文件導出模塊從備數(shù)據(jù)庫導出與所述主文件對應的備文件包括:
[0048] 確定所述備數(shù)據(jù)庫中與所述主數(shù)據(jù)表對應的備數(shù)據(jù)表,所述備數(shù)據(jù)表包括備唯一 索引字段;
[0049] 獲取所述備數(shù)據(jù)表的表屬性信息和備唯一索引字段并保存在所述備文件中,并根 據(jù)所述備唯一索引字段從所述備數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述備文件中。
[0050] 在本發(fā)明的一種實施例中,所述比較模塊包括文件比較子模塊,所述摘要比較子 模塊比較所述主文件摘要值和所述備文件摘要值是不一致時,通知所述文件比較子模塊;
[0051] 所述文件比較子模塊基于唯一索引比較所述主文件和所述備文件是否相同,包 括:
[0052] 分別依次按行讀取所述主文件和所述備文件的數(shù)據(jù);
[0053] 分別獲取所述主文件和所述備文件中當前行數(shù)據(jù)中的主唯一索引列數(shù)據(jù)和備唯 一索引列數(shù)據(jù);
[0054] 將所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)進行比較判斷是否一致,如 否,根據(jù)比較結果生成修復指令;如是,則分別獲取所述主文件和所述備文件中當前行的其 他列數(shù)據(jù)進行比較判斷是否一致,如不一致,根據(jù)比較結果生成修復指令后轉至下一行,如 一致,直接轉至下一行,直至所述主文件或所述備文件的最后一行。
[0055] 在本發(fā)明的一種實施例中,所述裝置還包括修復指令生成模塊,所述主文件和所 述備文件中的數(shù)據(jù)分別按照所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)升序排列;
[0056] 所述修復指令生成模塊用于當所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù) 不一致時,生成修復指令,包括 :
[0057] 如所述備唯一索引列數(shù)據(jù)比所述主唯一索引數(shù)據(jù)大,生成的修復指令為在所述備 數(shù)據(jù)庫中插入所述主文件中該行的數(shù)據(jù);
[0058] 如所述備唯一索引列數(shù)據(jù)比所述主唯一索引數(shù)據(jù)小,生成的修復指令為在所述備 數(shù)據(jù)庫中刪除所述備文件中該行的數(shù)據(jù);
[0059] 所述修復指令生成模塊還用于當所述主文件和所述備文件中當前行的其他列數(shù) 據(jù)不一致時,生成的修復指令,包括 :
[0060] 將備數(shù)據(jù)庫中該行的數(shù)據(jù)更新為所述主文件中該行的數(shù)據(jù)。
[0061] 為了解決上述問題,本發(fā)明還提供了一種主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置,所述 裝置包括修復模塊和如上所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,所述主備數(shù)據(jù)庫數(shù)據(jù)一 致性檢測裝置用于檢測所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫中待檢測的數(shù)據(jù)是否一致;所述修復 模塊用于根據(jù)所述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的檢測結果對所述備數(shù)據(jù)庫中相應的 數(shù)據(jù)進行修復。
[0062] 為了解決上述問題,本發(fā)明還提供了一種主數(shù)據(jù)庫,所述主數(shù)據(jù)庫包括指令接收 模塊和數(shù)據(jù)發(fā)送模塊,所述指令接收模塊用于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的 文件導出指令,以及用于收到所述文件導出指令后通知所述數(shù)據(jù)發(fā)送模塊向所述主備數(shù)據(jù) 庫數(shù)據(jù)一致性檢測裝置發(fā)送對應的數(shù)據(jù)。
[0063] 為了解決上述問題,本發(fā)明還提供了一種備數(shù)據(jù)庫,所述備數(shù)據(jù)庫包括指令接收 模塊和數(shù)據(jù)發(fā)送模塊,所述指令接收模塊用于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的 文件導出指令,以及用于收到所述文件導出指令后通知所述數(shù)據(jù)發(fā)送模塊向所述主備數(shù)據(jù) 庫數(shù)據(jù)一致性檢測裝置發(fā)送對應的數(shù)據(jù)。
[0064] 本發(fā)明的有益效果是:
[0065] 本發(fā)明提供的主、備數(shù)據(jù)庫及其數(shù)據(jù)一致性檢測、修復方法和裝置可實現(xiàn)對主數(shù) 據(jù)庫和備數(shù)據(jù)庫中數(shù)據(jù)一致性的檢測;且本發(fā)明提供的主備數(shù)據(jù)庫數(shù)據(jù)一致性修復方法及 裝置可根據(jù)檢測結果進一步實現(xiàn)對備數(shù)據(jù)庫中數(shù)據(jù)的修復;當發(fā)生數(shù)據(jù)沖突以后,可及時 修復不一致的數(shù)據(jù),提高數(shù)據(jù)質量和復制系統(tǒng)的穩(wěn)定性。
【專利附圖】
【附圖說明】
[0066] 圖1為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意圖一;
[0067] 圖2為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意圖二;
[0068] 圖3為本發(fā)明實施例一中文件格式示意圖;
[0069] 圖4為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意圖三;
[0070] 圖5為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意圖四;
[0071] 圖6為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意圖五;
[0072] 圖7為本發(fā)明實施例一中主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置的結構示意圖;
[0073] 圖8為本發(fā)明實施例二中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測的流程示意圖一;
[0074] 圖9為本發(fā)明實施例二中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測的流程示意圖二;
[0075] 圖10為本發(fā)明實施例二中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測的流程示意圖三;
[0076] 圖11為本發(fā)明實施例二中比較主、備文件的流程示意圖;
[0077] 圖12為本發(fā)明實施例二中主備數(shù)據(jù)庫數(shù)據(jù)一致性修復過程的流程示意圖。
【具體實施方式】
[0078] 本發(fā)明從主數(shù)據(jù)庫導出待檢測的主文件;并從備數(shù)據(jù)庫導出與該主文件對應的備 文件;進而將主文件和備文件進行比較,根據(jù)比較結果判斷該主文件和備文件的一致性,且 可進一步根據(jù)一致性的檢測結果修復備數(shù)據(jù)庫中的數(shù)據(jù);因此,當發(fā)生數(shù)據(jù)沖突以后,可及 時修復不一致的數(shù)據(jù),提高數(shù)據(jù)質量和復制系統(tǒng)的穩(wěn)定性。為了更好的理解本發(fā)明,下面結 合具體的實施例對本發(fā)明做進一步的說明:
[0079] 實施例一:
[0080] 為了更好的理解本發(fā)明,下面首先對幾個概念進行說明:
[0081] 主數(shù)據(jù)庫:也叫源數(shù)據(jù)庫,指復制前存放被復制數(shù)據(jù)的關系數(shù)據(jù)庫。在電信業(yè)務數(shù) 據(jù)庫應用軟件領域,主數(shù)據(jù)庫是物理數(shù)據(jù)庫,主要保存配置數(shù)據(jù)。配置數(shù)據(jù)包括:系統(tǒng)配置 屬性,包括用戶姓名、身份證號碼、手機號碼、號碼歸屬地區(qū)號等信息。配置數(shù)據(jù)主要通過管 理員在web頁面進行管理。本實施例中的主數(shù)據(jù)庫可包括指令接收模塊和數(shù)據(jù)發(fā)送模塊, 指令接收模塊用于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的文件導出指令,以及用于收 到文件導出指令后通知數(shù)據(jù)發(fā)送模塊向主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送對應的數(shù)據(jù), 以供主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置生成待檢測的主文件。
[0082] 備數(shù)據(jù)庫:也叫目標數(shù)據(jù)庫,指存放復制后的數(shù)據(jù)的關系數(shù)據(jù)庫。在電信業(yè)務數(shù)據(jù) 庫應用軟件領域,備數(shù)據(jù)庫可以是內存數(shù)據(jù)庫,當作為內存數(shù)據(jù)庫時,還保存運行數(shù)據(jù),運 行數(shù)據(jù)是系統(tǒng)運行過程中產(chǎn)生和變化。運行數(shù)據(jù)包括:設備狀態(tài)、用戶狀態(tài)、接通時間、漫游 地點等信息。本實施例中的備數(shù)據(jù)庫包括指令接收模塊和數(shù)據(jù)發(fā)送模塊,指令接收模塊用 于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的文件導出指令,以及用于收到文件導出指令 后通知數(shù)據(jù)發(fā)送模塊向主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送對應的數(shù)據(jù),以供主備數(shù)據(jù)庫 數(shù)據(jù)一致性檢測裝置生成待檢測的備文件。
[0083] 數(shù)據(jù)庫復制:將數(shù)據(jù)從主數(shù)據(jù)庫復制到備數(shù)據(jù)庫,可以是整個數(shù)據(jù)庫復制,也可以 是針對部分表的復制,還可以是針對某些表的部分字段的復制。在電信業(yè)務數(shù)據(jù)庫應用軟 件領域,數(shù)據(jù)包括配置數(shù)據(jù)和業(yè)務數(shù)據(jù),可以復制配置數(shù)據(jù)。本實施例中對數(shù)據(jù)的復制過 程,也即,主、備數(shù)據(jù)庫的同步過程不再進行贅述。本實施例中主要針對主數(shù)據(jù)庫和備數(shù)據(jù) 庫中存儲的數(shù)據(jù)的一致性進行檢測,以及根據(jù)檢測結果修復不一致的數(shù)據(jù)進行說明。
[0084] 請參考圖1,該圖所示為本實施例中主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的結構示意 圖,包括文件導出模塊、比較模塊,其中:
[0085] 文件導出模塊用于從主數(shù)據(jù)庫導出待檢測的主文件,以及用于從備數(shù)據(jù)庫導出與 所述主文件對應的備文件;本實施例中的文件導出模塊可直接與主數(shù)據(jù)庫和備數(shù)據(jù)庫連 接,從而分別從主數(shù)據(jù)庫和備數(shù)據(jù)庫中導出相應的主文件和備文件;
[0086] 比較模塊用于將所述主文件和所述備文件進行比較,根據(jù)比較結果判斷所述主文 件和所述備文件的一致性;本實施例中,將主文件和備文件進行比較的方法的包括但不限 于:
[0087] 比較所述主文件和所述備文件的文件大小是否相同,和/或比較所述主文件和所 述備文件存儲數(shù)據(jù)的行數(shù)是否相同,和/或基于唯一索引比較所述主文件和所述備文件是 否相同,和/或比較所述主文件和所述備文件的摘要值是否相同。
[0088] 也即,本實施例中可采用上述方法中的一種或幾種對主文件和備文件進行比較, 進而判斷二者的一致性;由于主文件和備文件是分別根據(jù)主數(shù)據(jù)庫和備數(shù)據(jù)庫中對應的數(shù) 據(jù)生成的,因此進而可判斷主數(shù)據(jù)和備數(shù)據(jù)庫中對應數(shù)據(jù)的一致性。下面以具體的兩種比 較方法為例對本發(fā)明做進一步說明:
[0089] 本實施例中可先采用摘要值比較主文件和備文件的一致性,當不一致時,然后再 進一步基于唯一索引比較所述主文件和所述備文件是否相同。請參見圖2所示,本實施例 中的比較模塊包括摘要計算子模塊和摘要比較子模塊;
[0090] 摘要計算子模塊用于分別計算主文件和備文件的消息摘要得到主文件摘要值和 備文件摘要值;本實施例中,對主文件和備文件的摘要值的計算具體可采用MD5算法等,在 此不再贅述;
[0091] 摘要比較子模塊用于比較所述主文件摘要值和所述備文件摘要值是否一致;如 是,則所述主文件和所述備文件一致;否則,則不一致,需要進一步判斷主文件和備文件。
[0092] 本實施例中文件導出模塊從主數(shù)據(jù)庫導出待檢測的主文件包括以下過程:
[0093] 確定主數(shù)據(jù)庫中待檢測的主數(shù)據(jù)表,主數(shù)據(jù)表中包括唯一索引字段,為了便于表 述,稱之為主唯一索引字段;
[0094] 獲取并保存所述主數(shù)據(jù)表的表屬性信息和主唯一索引字段在所述主文件中,并根 據(jù)所述主唯一索引字段從所述主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述主文件中;請參見圖 3所示,本實施例中,可優(yōu)選將主數(shù)據(jù)表的屬性信息和主唯一索引字段信息保存在文件的文 件頭中,將根據(jù)主唯一索引字段從主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在主文件的文件體中。
[0095] 本實施例中文件導出模塊從備數(shù)據(jù)庫導出與主文件對應的備文件包括以下過 程:
[0096] 確定備數(shù)據(jù)庫中與上述主數(shù)據(jù)表對應的備數(shù)據(jù)表,備數(shù)據(jù)表包括唯一索引字段, 為了便于表述,稱之為備唯一索引字段;
[0097] 獲取并保存所述備數(shù)據(jù)表的表屬性信息和備唯一索引字段在備文件中,并根據(jù)所 述備唯一索引字段從所述備數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在備文件中,請參見圖3所示, 本實施例中,也可優(yōu)選將主數(shù)據(jù)表的屬性信息和主唯一索引字段信息保存在文件的文件頭 中,將根據(jù)主唯一索引字段從主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在主文件的文件體中。
[0098] 由圖3可知,本實施例中由數(shù)據(jù)庫中的數(shù)據(jù)表導出的文件包括文件頭和文件體, 文件頭包括數(shù)據(jù)表的表屬性信息、以及唯一索引字段信息,文件體則保存該數(shù)據(jù)表中的數(shù) 據(jù)。
[0099] 數(shù)據(jù)表的表屬性信息包括數(shù)據(jù)表的名稱列表,字段之間用間隔隔開,還可用括號 括起來,字段后加空格,緊跟字段類型和字段長度說明,字段長度也用括號括起來。
[0100] 唯一索引字段信息,每張數(shù)據(jù)表包括一個唯一索引,且在對應的主數(shù)據(jù)表和備數(shù) 據(jù)表的唯一索引字段應一致,包括索引名稱,索引列名稱列表,字段之間也可用逗號隔開, 用括號括起來。
[0101] 文件體時保存上述數(shù)據(jù)內容的區(qū)域;本實施例中文件體的格式是:每條數(shù)據(jù)庫記 錄對應一行數(shù)據(jù),字段之間用堅線分隔符" I "隔開。
[0102] 對應的,在本實施例中,在設計數(shù)據(jù)庫時,可設計每張數(shù)據(jù)表具有唯一性索引,數(shù) 據(jù)表的內容不包括回車、換行和堅線分隔符" I "。
[0103] 請參見圖4所示,本實施例中的比較模塊還可進一步包括文件比較子模塊,摘要 比較子模塊比較所述主文件摘要值和所述備文件摘要值是不一致時,通知文件比較子模塊 對主文件和備文件進行進一步比較,本實施例中的比較模塊可基于上述方法中除利用摘要 值進行比較外的任意一種進行進一步比較,下面以文件比較子模塊基于唯一索引比較主文 件和備文件是否相同為例對本發(fā)明做進一步說明,其包括:
[0104] 分別依次按行讀取主文件和所述備文件的數(shù)據(jù);
[0105] 分別獲取主文件和備文件中當前行數(shù)據(jù)中的主唯一索引列數(shù)據(jù)和備唯一索引列 數(shù)據(jù);
[0106] 將主唯一索引列數(shù)據(jù)和備唯一索引列數(shù)據(jù)進行比較判斷是否一致,如否,根據(jù)比 較結果生成修復指令;如是,則分別獲取所述主文件和所述備文件中當前行的其他列數(shù)據(jù) 進行比較判斷是否一致,如不一致,根據(jù)比較結果生成修復指令后轉至下一行,如一致,直 接轉至下一行,直至所述主文件或所述備文件的最后一行;當存在多個主文件和備文件需 要檢測時,則轉至下一個主文件和備文件進行上述比較過程。
[0107] 請參見圖5所示,本實施例中的主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置還可包括修復指 令生成模塊,主文件和備文件中的數(shù)據(jù)分別按照主唯一索引列數(shù)據(jù)和備唯一索引列數(shù)據(jù)升 序排列;
[0108] 修復指令生成模塊用于當主文件的主唯一索引列數(shù)據(jù)和備文件的備唯一索引列 數(shù)據(jù)不一致時,生成修復指令包括:
[0109] 如備唯一索引列數(shù)據(jù)比主唯一索引數(shù)據(jù)大,生成的修復指令為在備數(shù)據(jù)庫中插入 所述主文件中該行的數(shù)據(jù);
[0110] 如備唯一索引列數(shù)據(jù)比主唯一索引數(shù)據(jù)小,生成的修復指令為在備數(shù)據(jù)庫中刪除 所述備文件中該行的數(shù)據(jù);
[0111] 本實施例中的修復指令生成模塊還用于當主文件和備文件中當前行的其他列數(shù) 據(jù)不一致時,生成的修復指令包括:將備數(shù)據(jù)庫中該行的數(shù)據(jù)更新為主文件中該行的數(shù)據(jù); 也即將備數(shù)據(jù)庫中改行的數(shù)據(jù)更新為主數(shù)據(jù)庫中對應行的數(shù)據(jù);因為本實施例中以主數(shù)據(jù) 庫為準。
[0112] 請參見圖6所示,本實施例中的主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置還可進一步包括 告警模塊,該告警模塊用于在判斷主文件和備文件不一致時,發(fā)出告警,具體可為將檢測結 果上報給網(wǎng)絡系統(tǒng)實現(xiàn)告警;本實施例中的告警模塊還可用于在檢測到該告警修復后,恢 復告警。
[0113] 在本實施例中,當檢測出主文件和備文件不一致時,
[0114] 請參見圖7所示,該圖所示為本實施例中的主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置結構 示意圖,其在上述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置基礎上還進一步包括修復模塊,修復模 塊用于根據(jù)主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的檢測結果對備數(shù)據(jù)庫中相應的數(shù)據(jù)進行修 復;具體可根據(jù)修復指令生成模塊生成的修復指令進行修復;且在修復之后,還可進一步 發(fā)送修復通知給告警模塊,告警模塊根據(jù)該通知恢復相應的告警。
[0115] 實施例二:
[0116] 上述實施例一通過主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置和主備數(shù)據(jù)庫數(shù)據(jù)一致性修 復裝置對本發(fā)明進行了說明,下面結合具體的方法流程為例對本發(fā)明做進一步說明,以便 于更好的理解本發(fā)明。
[0117] 請參見圖8所示,主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測的過程包括以下步驟:
[0118] 步驟81 :從主數(shù)據(jù)庫導出待檢測的主文件;并從備數(shù)據(jù)庫導出與該主文件對應的 備文件;
[0119] 步驟82 :將該主文件和該備文件進行比較,根據(jù)比較結果判斷該主文件和該備文 件的一致性。
[0120] 上述圖3示出了主文件和備文件的文件格式示意圖,且由上述分析可知,主數(shù)據(jù) 庫中的一個主數(shù)據(jù)表對應一個主文件,備數(shù)據(jù)庫中的一個備數(shù)據(jù)表則對應一個備文件;本 實施例中以主文件和備文件采用ASII編碼為例進行說明。請參見圖9所示,實現(xiàn)主數(shù)據(jù)庫 和備數(shù)據(jù)庫中的數(shù)據(jù)一致性檢測以及修復的流程如下:
[0121] 步驟801,按照指定的排列順序和格式,分別從主、備數(shù)據(jù)庫導出指定數(shù)據(jù)表中的 指定數(shù)據(jù),并將內容轉換為字符格式,輸出到ASII格式文本文件,也即分別生成待檢測的 主、備文件;優(yōu)選的,本實施例中以數(shù)據(jù)表中的唯一索引字段的順序進行排列;
[0122] 步驟802,依據(jù)摘要算法,分別計算待檢測的主文件和備文件的消息摘要,對于每 張數(shù)據(jù)表表,主、備數(shù)據(jù)庫分別對應一個摘要值;優(yōu)選地,采用MD5算法;
[0123] 步驟803,比較主文件和備文件的摘要值,輸出比較結果;如果主、備數(shù)據(jù)庫中的 每張主數(shù)據(jù)表和備數(shù)據(jù)表對應的主文件和備文件的摘要值都相同,則主、備數(shù)據(jù)庫中的數(shù) 據(jù)一致,如果不同,則采用步驟804進一步比較數(shù)據(jù)不一致的表對應的文件;如比較結果為 相同,則該主、備文件的比較流程結束。
[0124] 步驟804,對于摘要值不同的主文件和備文件,進一步比較這兩個文本文件,進而 輸出比較結果和數(shù)據(jù)修復命令;本實施例中根據(jù)預定的比對算法檢測主文件和備文件是否 一致。其中,有多種比對算法可供選擇,例如:檢測文件大小是否相同,檢測文件行數(shù)是否相 同。優(yōu)選地,提供基于唯一性索引的比較算法。
[0125] 步驟805,如經(jīng)檢測主、備數(shù)據(jù)庫數(shù)據(jù)不一致,發(fā)送告警,上報網(wǎng)管系統(tǒng),還可提醒 管理員修復數(shù)據(jù)。
[0126] 在本實施例中是否自動修復數(shù)據(jù)是可配置的,優(yōu)選地,設置為自動修復。
[0127] 在本實施例中,在上述步驟801之前,還包括接收檢測觸發(fā)消息的步驟,在本實施 例中檢測觸發(fā)消息可以是系統(tǒng)預先設置的,該觸發(fā)消息可以按如下方式設置:非業(yè)務高峰 期觸發(fā),和/或配置數(shù)據(jù)修改成功后觸發(fā),和/或數(shù)據(jù)復制之后觸發(fā);當然該檢測觸發(fā)消息 還可以是上述幾種方式中的兩種或兩種以上的組合,例如:如在非業(yè)務高峰期并配置數(shù)據(jù) 修改成功后觸發(fā)等。
[0128] 另外,本實施例中還可采用手動檢測的方式,由管理員主觀給出檢測結果。例如對 于主、備數(shù)據(jù)是否一致,管理員可以通過執(zhí)行檢測命令直接給出檢測結果,以將數(shù)據(jù)保存成 文件,自行比較兩個配置數(shù)據(jù)文件的差異。手動檢測一般作為自動檢測的輔助手段,用來確 認為什么不一致。
[0129] 經(jīng)上述檢測不一致生成修復命令后,本實施例中還可進一步根據(jù)該修復命令實現(xiàn) 對不一致的數(shù)據(jù)進行修復,包括如下步驟:
[0130] 步驟一,分別連接主、備數(shù)據(jù)庫,根據(jù)修復命令修復相應的數(shù)據(jù);本實施例中可以 主數(shù)據(jù)庫為準,修復備用數(shù)據(jù)庫中與主數(shù)據(jù)庫中不一致的數(shù)據(jù);
[0131] 步驟二,將數(shù)據(jù)修復結果通知告警模塊,如果修復成功,告警模塊發(fā)送恢復告警。
[0132] 另外,本實施例中數(shù)據(jù)恢復還可采用手動方式,由管理員手工進行。管理員根據(jù)檢 測結果,找到需要修復的數(shù)據(jù),向備數(shù)據(jù)庫發(fā)出sql命令,修改數(shù)據(jù)。手工恢復配置數(shù)據(jù)分 為以下兩種情況:
[0133] 如果主數(shù)據(jù)庫比備數(shù)據(jù)庫多幾條記錄,管理員需要在備數(shù)據(jù)庫上執(zhí)行命令,插入 缺少的數(shù)據(jù)。
[0134] 如果備數(shù)據(jù)庫比主數(shù)據(jù)庫多幾條記錄,則需要根據(jù)實際情況選擇合適的方式:如 果備數(shù)據(jù)庫上多的數(shù)據(jù)是有效的,則管理員在主數(shù)據(jù)庫上執(zhí)行命令,插入缺少的數(shù)據(jù);如果 備數(shù)據(jù)庫上多的數(shù)據(jù)是無效的,則管理員在備數(shù)據(jù)庫上執(zhí)行命令,刪除多余的數(shù)據(jù)。當以主 數(shù)據(jù)庫為準時,則直接刪除備數(shù)據(jù)庫中多余的數(shù)據(jù)。
[0135] 如果備數(shù)據(jù)庫與主數(shù)據(jù)庫某些的部分字段內容不同,則管理員在備數(shù)據(jù)庫上執(zhí)行 修復命令,修改不同的數(shù)據(jù)
[0136] 下面結合完整的檢測、以及修復流程為例對本發(fā)明做進一步說明:
[0137] 請參考圖10所示,該圖是本實施例提供的主、備數(shù)據(jù)庫數(shù)據(jù)一致性檢測處理流程 示意圖,主要包括以下步驟:
[0138] 步驟900,確定主、備數(shù)據(jù)庫中需要檢測的數(shù)據(jù)表,由于數(shù)據(jù)庫對大小寫不敏感的 情況,要協(xié)調一致。找到待比較的所有數(shù)據(jù)表后,按照升序排列,得到待比較數(shù)據(jù)表的列表, 后續(xù)根據(jù)該列表依次處理;從該列表中的第一張數(shù)據(jù)表開始,進行步驟901 ;
[0139] 步驟901,分別登陸主、備數(shù)據(jù)庫,導出對應的待比較的主文件和備文件,優(yōu)選地, 由于每張表都有唯一性索引,所以導出的數(shù)據(jù)按照唯一性列升序排列。數(shù)據(jù)內容轉換為字 符格式,輸出到ASII格式文本文件,每條記錄輸出一行數(shù)據(jù),字段之間用分隔符號" | "隔 開;
[0140] 步驟902,根據(jù)摘要算法,分別計算主文件和備文件的消息摘要,輸出摘要值,優(yōu)選 地,本實施例中采用MD5算法;
[0141] 步驟903,采用字符串比較方法,比較主文件和備文件的摘要值;
[0142] 步驟904,判斷主文件和備文件的摘要值是否一致,如果一致,則主、備數(shù)據(jù)庫中當 前數(shù)據(jù)表中的數(shù)據(jù)一致;轉至步驟907 ;如果不一致,則當前數(shù)據(jù)表中的數(shù)據(jù)不一致,需進 一步比較該主文件和備文件,轉至步驟905 ;
[0143] 步驟905,比較主文件和備文件,輸出比較結果,并在比較結果為不一致時,生成并 輸出修復命令;本實施例中根據(jù)預定的比對算法檢測該主文件和備文件是否一致,其中,有 多種比對算法可供選擇,例如:檢測文件大小是否相同,檢測文件行數(shù)是否相同,基于唯一 性索引的比較算法,也可結合上述幾種方法進行比較,例如,先檢測文件大小是否相同,然 后再基于唯一性索引的比較算法進行比較等等;
[0144] 步驟906,判斷主文件和備文件比較結果,如比較結果一致,轉至步驟907 ;如不一 致,表明當前表數(shù)據(jù)需要修復,轉至步驟908 ;
[0145] 步驟907,判斷當前比較的主、備文件是否是上述列表中最后一對待比較的主、備 文件;如是,轉至步驟910 ;否則,轉至步驟909 ;
[0146] 步驟908,發(fā)送告警,轉至步驟907 ;
[0147] 步驟909,換上述列表中的下一數(shù)據(jù)表,轉至901 ;
[0148] 步驟910,輸出經(jīng)分析和整理的比較結果和修復指令。
[0149] 請參見圖11所示,上述步驟905中涉及到的主文件和備文件進一步比較的過程如 下:
[0150] 步驟1001,分別打開主、備文件,準備讀取;
[0151] 步驟1002,分別讀取兩個文件的文件頭,分析文件頭內容,準備后續(xù)處理;分析出 以下內容:待讀取的字段是哪些;唯一性字段是哪些,每一行數(shù)據(jù)按照唯一性索引字段的 順序排列,比較算法基于唯一性索引字段來進;每個字段的數(shù)據(jù)類型是什么,如果不是字符 類型,找到與字符類型互相轉換的函數(shù)或者方法;
[0152] 步驟1003,分別依次按行讀取兩個文件的數(shù)據(jù),得到兩行待比較的主、備數(shù)據(jù);
[0153] 步驟1004,根據(jù)上述唯一性列定義和上述排列順序,從主、備文件中提取唯一性列 數(shù)據(jù),采用字符串比較方式,比較唯一性列數(shù)據(jù),得到比較結果;
[0154] 步驟1005,判斷該行中的主、備唯一性列是否相等;分為以下三種情況:
[0155] 如果備唯一性列大于主唯一性列,轉至步驟1006,由于數(shù)據(jù)按照唯一性列升序排 列,所以當前行主文件數(shù)據(jù)在備數(shù)據(jù)庫中不存在,生成的修復指令為需要在備數(shù)據(jù)庫中插 入該行數(shù)據(jù),轉至步驟1007;
[0156] 如果備唯一性列小于主唯一性列,轉至步驟1008,由于數(shù)據(jù)按照唯一性列升序排 列,所以當前行備文件數(shù)據(jù)在主數(shù)據(jù)庫中不存在,數(shù)據(jù)以主數(shù)據(jù)庫為準,生成的修復指令為 需要在備數(shù)據(jù)庫中刪除該行數(shù)據(jù),轉至步驟1009 ;
[0157] 如果主、備文件的唯一性列相等,則轉至步驟1010 ;
[0158] 步驟1006,生成修復指令,需要在備數(shù)據(jù)庫中插入當前行行數(shù)據(jù),根據(jù)步驟1002 分析結果,如果字段非字符類型,采用對應的轉換函數(shù)或者方法對字段數(shù)據(jù)進行必要的轉 換,輸出在備數(shù)據(jù)庫中執(zhí)行的insert修復命令,轉至步驟1007 ;
[0159] 步驟1007,讀取主文件下一行數(shù)據(jù);
[0160] 步驟1008,生成修復指令,需要在備數(shù)據(jù)庫中刪除該行數(shù)據(jù)。根據(jù)步驟1002分析 結果,如果字段非字符類型,采用對應的轉換函數(shù)或者方法對字段數(shù)據(jù)進行必要的轉換,輸 出在備數(shù)據(jù)庫執(zhí)行的delete修復命令,轉至步驟1009 ;
[0161] 步驟1009,讀取備文件下一行數(shù)據(jù);
[0162] 步驟1010,采用字符串比較方式,繼續(xù)比較該行其它所有剩余數(shù)據(jù)列;
[0163] 步驟1011,判斷其他數(shù)據(jù)列是否一致,如是,轉至步驟1012 ;否則,轉至步驟 1013 ;
[0164] 步驟1012,判斷當前行是否是主文件和/或本文件的最后一行,通過判斷讀取是 否為空,判斷是否其中某個文件結束。分為以下兩種情況 :
[0165] 如果主備文件都沒有結束,則說明還需要繼續(xù)比較,轉至步驟1014 ;
[0166] 當其中任何一個文件結束,則說明不需要繼續(xù)比較了,轉至步驟1015 ;
[0167] 步驟1013,生成修復指令,需要在備數(shù)據(jù)庫中更新該行數(shù)據(jù),根據(jù)步驟1002分析 結果,如果字段非字符類型,采用對應的轉換函數(shù)或者方法對字段數(shù)據(jù)進行必要的轉換,輸 出在備數(shù)據(jù)庫執(zhí)行的update修復命令,然后轉至步驟1012 ;
[0168] 步驟1014,分別讀取主備文件下一行數(shù)據(jù),轉至步驟1004 ;
[0169] 步驟1015,輸出生成的修復指令;當主、備文件中的至少一個文件讀取為空,則說 明不再需要比較可能需要。在結束之前,根據(jù)是否有文件內容為空,判斷是否有剩余數(shù)據(jù)需 要修復。由于數(shù)據(jù)按照唯一性列升序排列,所以具有以下三種情況:
[0170] 如果主文件內容非空,說明當前主文件剩余數(shù)據(jù)在備數(shù)據(jù)庫中不存在,需要在備 數(shù)據(jù)庫中插入這些數(shù)據(jù)。根據(jù)步驟1002分析結果,如果字段非字符類型,采用對應的轉換 函數(shù)或者方法對字段數(shù)據(jù)進行必要的轉換,輸出在備數(shù)據(jù)庫中執(zhí)行的insert修復命令。
[0171] 如果備文件內容非空,說明當前備文件數(shù)據(jù)在主數(shù)據(jù)庫中不存在。數(shù)據(jù)以主數(shù)據(jù) 庫為主,需要在備數(shù)據(jù)庫中刪除這些數(shù)據(jù)。根據(jù)步驟1002分析結果,如果字段非字符類型, 采用對應的轉換函數(shù)或者方法對字段數(shù)據(jù)進行必要的轉換,輸出在備數(shù)據(jù)庫執(zhí)行的delete 修復命令。
[0172] 如果主備文件內容都為空,則不需要修復,最后完成處理,得到比較結果和數(shù)據(jù)修 復命令。
[0173] 請參見圖12所示,該圖所示為根據(jù)上述步驟所生成的修復指令對相應數(shù)據(jù)進行 修復的流程示意圖,具體包括:
[0174] 步驟1100,根據(jù)上述主、備數(shù)據(jù)庫數(shù)據(jù)一致性檢測結果,修復模塊首先分析需要修 復哪些數(shù)據(jù)表,轉至步驟1101。
[0175] 步驟1101,登陸主、備數(shù)據(jù)庫,準備修復;
[0176] 步驟1102,根據(jù)當前數(shù)據(jù)表中表數(shù)據(jù)一致性檢測結果,選擇對應的數(shù)據(jù)庫執(zhí)行對 應的修復命令;在業(yè)務軟件數(shù)據(jù)庫應用領域,優(yōu)選地,配置數(shù)據(jù)以主數(shù)據(jù)庫為準,數(shù)據(jù)不一 致時修復備數(shù)據(jù)庫;運行數(shù)據(jù)以備數(shù)據(jù)庫為準,數(shù)據(jù)不一致時修復主數(shù)據(jù)庫;
[0177] 步驟1103,判斷修復當前數(shù)據(jù)表是否成功。分以下兩種情況:
[0178] 如果當前數(shù)據(jù)表修復成功,則需要恢復當前表的告警,轉至步驟1104 ;
[0179] 如果當前數(shù)據(jù)表修復不成功,則轉至步驟1105 ;
[0180] 步驟1104,告警模塊發(fā)送恢復告警通知;
[0181] 步驟1105,判斷當前數(shù)據(jù)表是否是最后一張待修復的數(shù)據(jù)表,如否,轉至步驟 1106 ;否則,修復結束。
[0182] 步驟1106 :數(shù)修復模塊選擇下一張待修復的數(shù)據(jù)表,轉至步驟1102。
[0183] 可見,本發(fā)明在不影響業(yè)務的前提下,從主數(shù)據(jù)庫導出待檢測的主文件;并從備數(shù) 據(jù)庫導出與該主文件對應的備文件;進而將主文件和備文件進行比較,根據(jù)比較結果判斷 該主文件和備文件的一致性,且可進一步根據(jù)一致性的檢測結果修復備數(shù)據(jù)庫中的數(shù)據(jù); 因此,當數(shù)據(jù)發(fā)生沖突時,能及時發(fā)現(xiàn)沖突,還能修復不一致的數(shù)據(jù),提高數(shù)據(jù)質量,進一步 提高復制系統(tǒng)的穩(wěn)定性。
[0184] 進一步的,本發(fā)明在對主、備文件進行比較時,先采用摘要值比較方法,相對于直 接比較文件的方式,所需的網(wǎng)絡流量更小,對網(wǎng)絡帶寬要求更低,檢測速度更快,不會對生 產(chǎn)系統(tǒng)性能產(chǎn)生不良影響。
[0185] 以上內容是結合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā) 明的具體實施只局限于這些說明。對于本發(fā)明所屬【技術領域】的普通技術人員來說,在不脫 離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護 范圍。
【權利要求】
1. 一種主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于,所述方法包括: 向主數(shù)據(jù)庫發(fā)送文件導出指令從該主數(shù)據(jù)庫中導出待檢測的主文件;并向備數(shù)據(jù)庫發(fā) 送文件導出指令從該備數(shù)據(jù)庫中導出與所述主文件對應的備文件; 將所述主文件和所述備文件進行比較,根據(jù)比較結果判斷所述主文件和所述備文件的 一致性。
2. 如權利要求1所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于,將所述主文件 和所述備文件進行比較包括: 比較所述主文件和所述備文件的文件大小是否相同,和/或比較所述主文件和所述備 文件存儲數(shù)據(jù)的行數(shù)是否相同,和/或基于唯一索引比較所述主文件和所述備文件是否相 同,和/或比較所述主文件和所述備文件的摘要值是否相同。
3. 如權利要求2所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于, 比較所述主文件和所述備文件的摘要值是否相同,包括: 分別計算所述主文件和所述備文件的消息摘要,得到主文件摘要值和備文件摘要值; 比較所述主文件摘要值和所述備文件摘要值是否一致;如是,則所述主文件和所述備 文件一致;否則,將所述主文件和所述備文件進行進一步比較。
4. 如權利要求3所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于, 從主數(shù)據(jù)庫導出待檢測的主文件包括: 確定所述主數(shù)據(jù)庫中待檢測的主數(shù)據(jù)表,所述主數(shù)據(jù)表包括主唯一索引字段; 獲取所述主數(shù)據(jù)表的表屬性信息和主唯一索引字段并保存在所述主文件中,并根據(jù)所 述主唯一索引字段從所述主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述主文件中; 所述從備數(shù)據(jù)庫導出與所述主文件對應的備文件包括: 確定所述備數(shù)據(jù)庫中與所述主數(shù)據(jù)表對應的備數(shù)據(jù)表,所述備數(shù)據(jù)表包括備唯一索引 字段; 獲取所述備數(shù)據(jù)表的表屬性信息和備唯一索引字段并保存在所述備文件中,并根據(jù)所 述備唯一索引字段從所述備數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述備文件中。
5. 如權利要求4所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于, 將所述主文件和所述備文件進行進一步比較為基于唯一索引比較所述主文件和所述 備文件是否相同,包括: 分別依次按行讀取所述主文件和所述備文件的數(shù)據(jù); 分別獲取所述主文件和所述備文件中當前行數(shù)據(jù)中的主唯一索引列數(shù)據(jù)和備唯一索 引列數(shù)據(jù); 將所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)進行比較判斷是否一致,如否,根 據(jù)比較結果生成修復指令;如是,則分別獲取所述主文件和所述備文件中當前行的其他列 數(shù)據(jù)進行比較判斷是否一致,如不一致,根據(jù)比較結果生成修復指令后轉至下一行,如一 致,直接轉至下一行,直至所述主文件或所述備文件的最后一行。
6. 如權利要求5所述的主備數(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ù); 當所述主文件和所述備文件中當前行的其他列數(shù)據(jù)不一致時,生成的修復指令為: 將備數(shù)據(jù)庫中該行的數(shù)據(jù)更新為所述主文件中該行的數(shù)據(jù)。
7. 如權利要求1或2所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于,從主數(shù)據(jù)庫 導出待檢測的主文件,并從備數(shù)據(jù)庫導出與所述主文件對應的備文件之前,還包括: 接收檢測流程觸發(fā)指令,所述檢測流程觸發(fā)指令在非業(yè)務高峰期發(fā)送,和/或在所述 主、備數(shù)據(jù)庫數(shù)據(jù)同步后發(fā)送,和/或主、備數(shù)據(jù)庫配置數(shù)據(jù)修改成功后發(fā)送。
8. 如權利要求1或2所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法,其特征在于,根據(jù)所述比 較結果判斷所述主文件和所述備文件不一致時,還包括發(fā)送告警。
9. 一種主備數(shù)據(jù)庫數(shù)據(jù)一致性修復方法,其特征在于,所述方法包括: 根據(jù)權利要求1-8任一項所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測方法檢測所述主數(shù)據(jù)庫 和所述備數(shù)據(jù)庫中待檢測的數(shù)據(jù)是否一致;根據(jù)檢測結果對所述備數(shù)據(jù)庫中相應的數(shù)據(jù)進 行修復。
10. -種主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,其特征在于,所述裝置包括文件導出模塊、 比較模塊; 所述文件導出模塊用于向主數(shù)據(jù)庫發(fā)送文件導出指令從該主數(shù)據(jù)庫中導出待檢測的 主文件;并向備數(shù)據(jù)庫發(fā)送文件導出指令從該備數(shù)據(jù)庫中導出與所述主文件對應的備文 件; 所述比較模塊用于將所述主文件和所述備文件進行比較,根據(jù)比較結果判斷所述主文 件和所述備文件的一致性。
11. 如權利要求10所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,其特征在于,所述比較模 塊將所述主文件和所述備文件比較進行包括: 比較所述主文件和所述備文件的文件大小是否相同,和/或比較所述主文件和所述備 文件存儲數(shù)據(jù)的行數(shù)是否相同,和/或基于唯一索引比較所述主文件和所述備文件是否相 同,和/或比較所述主文件和所述備文件的摘要值是否相同。
12. 如權利要求11所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,其特征在于, 所述比較模塊包括摘要計算子模塊、摘要比較子模塊; 所述摘要計算子模塊用于分別計算所述主文件和所述備文件的消息摘要得到主文件 摘要值和備文件摘要值; 所述摘要比較子模塊用于比較所述主文件摘要值和所述備文件摘要值是否一致;如 是,則所述主文件和所述備文件一致。
13. 如權利要求12所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,其特征在于, 所述文件導出模塊從主數(shù)據(jù)庫導出待檢測的主文件包括: 確定所述主數(shù)據(jù)庫中待檢測的主數(shù)據(jù)表,所述主數(shù)據(jù)表包括主唯一索引字段; 獲取所述主數(shù)據(jù)表的表屬性信息和主唯一索引字段并保存在所述主文件中,并根據(jù)所 述主唯一索引字段從所述主數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述主文件中; 所述文件導出模塊從備數(shù)據(jù)庫導出與所述主文件對應的備文件包括: 確定所述備數(shù)據(jù)庫中與所述主數(shù)據(jù)表對應的備數(shù)據(jù)表,所述備數(shù)據(jù)表包括備唯一索引 字段; 獲取所述備數(shù)據(jù)表的表屬性信息和備唯一索引字段并保存在所述備文件中,并根據(jù)所 述備唯一索引字段從所述備數(shù)據(jù)表中導出對應的數(shù)據(jù)保存在所述備文件中。
14. 如權利要求13所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,其特征在于, 所述比較模塊包括文件比較子模塊,所述摘要比較子模塊比較所述主文件摘要值和所 述備文件摘要值是不一致時,通知所述文件比較子模塊; 所述文件比較子模塊基于唯一索引比較所述主文件和所述備文件是否相同,包括: 分別依次按行讀取所述主文件和所述備文件的數(shù)據(jù); 分別獲取所述主文件和所述備文件中當前行數(shù)據(jù)中的主唯一索引列數(shù)據(jù)和備唯一索 引列數(shù)據(jù); 將所述主唯一索引列數(shù)據(jù)和所述備唯一索引列數(shù)據(jù)進行比較判斷是否一致,如否,根 據(jù)比較結果生成修復指令;如是,則分別獲取所述主文件和所述備文件中當前行的其他列 數(shù)據(jù)進行比較判斷是否一致,如不一致,根據(jù)比較結果生成修復指令后轉至下一行,如一 致,直接轉至下一行,直至所述主文件或所述備文件的最后一行。
15. 如權利要求14所述的主備數(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ù); 所述修復指令生成模塊還用于當所述主文件和所述備文件中當前行的其他列數(shù)據(jù)不 一致時,生成的修復指令,包括: 將備數(shù)據(jù)庫中該行的數(shù)據(jù)更新為所述主文件中該行的數(shù)據(jù)。
16. -種主備數(shù)據(jù)庫數(shù)據(jù)一致性修復裝置,其特征在于,所述裝置包括修復模塊和如 權利要求10-15所述的主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置,所述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測 裝置用于檢測所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫中待檢測的數(shù)據(jù)是否一致;所述修復模塊用于 根據(jù)所述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置的檢測結果對所述備數(shù)據(jù)庫中相應的數(shù)據(jù)進行 修復。
17. -種主數(shù)據(jù)庫,其特征在于,所述主數(shù)據(jù)庫包括指令接收模塊和數(shù)據(jù)發(fā)送模塊,所 述指令接收模塊用于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的文件導出指令,以及用于 收到所述文件導出指令后通知所述數(shù)據(jù)發(fā)送模塊向所述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置 發(fā)送對應的數(shù)據(jù)。
18. -種備數(shù)據(jù)庫,其特征在于,所述備數(shù)據(jù)庫包括指令接收模塊和數(shù)據(jù)發(fā)送模塊,所 述指令接收模塊用于接收主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置發(fā)送的文件導出指令,以及用于 收到所述文件導出指令后通知所述數(shù)據(jù)發(fā)送模塊向所述主備數(shù)據(jù)庫數(shù)據(jù)一致性檢測裝置 發(fā)送對應的數(shù)據(jù)。
【文檔編號】G06F17/30GK104111937SQ201310135758
【公開日】2014年10月22日 申請日期:2013年4月18日 優(yōu)先權日:2013年4月18日
【發(fā)明者】謝東, 喻紅宇 申請人:中興通訊股份有限公司