專利名稱::一種數(shù)據(jù)庫復(fù)制方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種數(shù)據(jù)庫復(fù)制方法和裝置,屬于數(shù)據(jù)通信
技術(shù)領(lǐng)域:
。
背景技術(shù):
:數(shù)據(jù)庫引擎是用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù),它提供了受控訪問和快速事務(wù)處理,以滿足企業(yè)內(nèi)最苛刻的數(shù)據(jù)消費(fèi)應(yīng)用程序的要求。數(shù)據(jù)庫引擎還提供了大量的支持以保持高可用性。結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,筒稱SQL)服務(wù)器是典型的數(shù)據(jù)庫引擎之一,由微軟公司提供。事務(wù)是作為單個(gè)邏輯工作單元執(zhí)行的一系列搡作。一個(gè)邏輯工作單元必須有四個(gè)屬性,稱為原子性、一致性、隔離性和持久性,只有這樣才能成為一個(gè)事務(wù)。原子性事務(wù)必須是原子工作單元;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。一致性事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如雙向鏈表)都必須是正確的。隔離由并發(fā)事務(wù)所做的修改必須與任何其他并發(fā)事務(wù)所做的修改隔離。事務(wù)識(shí)別數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一并發(fā)事務(wù)修改它之后的狀態(tài),事務(wù)不會(huì)識(shí)別中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。持久性事務(wù)完成之后,它對(duì)于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。例如銀行轉(zhuǎn)帳業(yè)務(wù),需要首先從A帳戶里減去IOO元,然后再到B帳戶里加上100元。如果不將這個(gè)過程定義為事務(wù),則可能發(fā)生這樣的情況從A帳戶里減去100元,操作成功;再在B帳戶里加上100元,突然停電,操作不成功;恢復(fù)供電后會(huì)發(fā)現(xiàn)A帳戶里少了100元,但B帳戶里沒有多出100元,業(yè)務(wù)就出錯(cuò)了。如果將這個(gè)過程定義為事務(wù),由于事務(wù)具有原子性,從B帳戶里加錢失敗后,前面的操作即從A帳戶里減去IOO元也會(huì)被取消。最后結(jié)果是轉(zhuǎn)帳不成功,但A帳戶并沒有損失。數(shù)據(jù)庫復(fù)制是在數(shù)據(jù)庫之間對(duì)數(shù)據(jù)和數(shù)據(jù)庫對(duì)象進(jìn)行復(fù)制和分發(fā),然后在數(shù)據(jù)庫之間進(jìn)行同步以保持一致性的一組技術(shù)。使用復(fù)制可以將數(shù)據(jù)通過局域網(wǎng)、廣域網(wǎng)、撥號(hào)連接、無線連4妄和因特網(wǎng)(Internet)分發(fā)到不同位置以及分發(fā)給遠(yuǎn)程用戶或移動(dòng)用戶。例如某網(wǎng)站在中國和美國都設(shè)有數(shù)據(jù)庫服務(wù)器,中國的數(shù)據(jù)庫服務(wù)器主要管理來自中國的數(shù)據(jù),美國的數(shù)據(jù)庫服務(wù)器主要管理來自美國的數(shù)據(jù)。由于是同一個(gè)網(wǎng)站,需要做到資源共享,往往可以選擇使用數(shù)據(jù)庫復(fù)制技術(shù),以達(dá)到保持?jǐn)?shù)據(jù)庫一致性的目的。數(shù)據(jù)庫復(fù)制技術(shù)會(huì)涉及以下幾種服務(wù)器發(fā)布服務(wù)器數(shù)據(jù)庫復(fù)制拓樸里數(shù)據(jù)的主要來源。在一個(gè)復(fù)制模型里,發(fā)布服務(wù)器只能有一臺(tái)。分發(fā)服務(wù)器發(fā)布服務(wù)器將要發(fā)布的數(shù)據(jù)告訴分發(fā)服務(wù)器,由分發(fā)服務(wù)器負(fù)責(zé)將這些要發(fā)布的數(shù)據(jù)分發(fā)給各訂閱服務(wù)器。在一個(gè)復(fù)制模型里,分發(fā)服務(wù)器只能有一臺(tái)。訂閱服務(wù)器數(shù)據(jù)庫復(fù)制拓樸里數(shù)據(jù)傳輸?shù)闹饕邮拯c(diǎn)。訂閱服務(wù)器接受來自分發(fā)服務(wù)器的數(shù)據(jù),以達(dá)到與發(fā)布服務(wù)器的數(shù)據(jù)保持同步的目的。在一個(gè)復(fù)制模型里,分發(fā)服務(wù)器可以有多臺(tái)。微軟的SQL服務(wù)器提供了三種復(fù)制類型,分別為快照復(fù)制、事務(wù)性復(fù)制和合并復(fù)制,每種復(fù)制類型都適合于不同應(yīng)用程序的要求。其中,事務(wù)性復(fù)制又分為普通事務(wù)性復(fù)制、對(duì)等事務(wù)性復(fù)制和可更新訂閱的事務(wù)性復(fù)制??筛掠嗛喌氖聞?wù)性復(fù)制中,訂閱的更新方式有兩種立即更新和排隊(duì)更新。本發(fā)明適用于使用排隊(duì)更新模式的可更新訂閱的事務(wù)性復(fù)制。下面是可更新訂閱的事務(wù)性復(fù)制的原理概述通常的數(shù)據(jù)庫復(fù)制都是單向的,即只有發(fā)布服務(wù)器向訂閱服務(wù)器傳遞數(shù)據(jù)庫,訂閱服務(wù)器不產(chǎn)生數(shù)據(jù)。然而實(shí)際應(yīng)用環(huán)境中,往往需要參與服務(wù)器的多臺(tái)數(shù)據(jù)庫服務(wù)器都有更新,且可以互相同步數(shù)據(jù)庫。使用可更新訂閱的事務(wù)性復(fù)制可以滿足上述需求。使用可更新訂閱的事務(wù)性復(fù)制時(shí),不僅發(fā)布服務(wù)器可以將數(shù)據(jù)修改以事務(wù)的形式傳遞給訂閱服務(wù)器,訂閱服務(wù)器也同樣能夠?qū)⒆陨頂?shù)據(jù)的修改同步到發(fā)布服務(wù)器。訂閱服務(wù)器進(jìn)行數(shù)據(jù)同步的過程如下訂閱服務(wù)器上所做的數(shù)據(jù)更新以事務(wù)的形式由訂閱服務(wù)器存放到訂閱服務(wù)器上一個(gè)隊(duì)列表里。服務(wù)器上的數(shù)據(jù)更新,然后使用復(fù)制存儲(chǔ)過程將排隊(duì)事務(wù)提交給發(fā)布服務(wù)器。存儲(chǔ)過程是一種使用SQL語言寫成的程序,通常用于對(duì)數(shù)據(jù)庫的各個(gè)對(duì)象進(jìn)行操作。處理排隊(duì)事務(wù)時(shí),發(fā)布服務(wù)器在存在沖突的情況下根據(jù)創(chuàng)建發(fā)布時(shí)設(shè)置的沖突解決策略檢測(cè)和解決沖突。發(fā)布服務(wù)器在完成訂閱服務(wù)器上數(shù)據(jù)更新的同步之后,會(huì)將這些數(shù)據(jù)更新發(fā)布給其他的訂閱服務(wù)器,原理和發(fā)布自身的數(shù)據(jù)更新一致先將這些更新轉(zhuǎn)化成事務(wù)日志,委托分發(fā)服務(wù)器傳遞給各個(gè)訂閱服務(wù)器,包括產(chǎn)生此數(shù)據(jù)更新的訂閱服務(wù)器。事務(wù)日志是發(fā)布服務(wù)器上的數(shù)據(jù)更新記錄。目前的訂閱服務(wù)器數(shù)據(jù)同步進(jìn)行如下操作例如某網(wǎng)站的數(shù)據(jù)庫里有一張數(shù)據(jù)表ONLINE-USER,用于記錄當(dāng)前時(shí)間登錄該網(wǎng)站的用戶的一些在線數(shù)據(jù),如用戶的上線時(shí)間、IP地址等。當(dāng)用戶A登錄該網(wǎng)站后,網(wǎng)站后臺(tái)程序就往數(shù)據(jù)表ONLINE—USER添加一條記錄,記錄當(dāng)前有用戶A登錄該網(wǎng)站,并記錄上線時(shí)間和IP地址。當(dāng)用戶A注銷時(shí),網(wǎng)站后臺(tái)程序就會(huì)刪除數(shù)據(jù)表ONLINE—USER中用戶A的相關(guān)數(shù)據(jù)記錄。如果用戶A登錄時(shí),ONLINE—USER表中已經(jīng)存在用戶A的記錄,則更新上線時(shí)間為本次上線的時(shí)間。用戶在訪問此網(wǎng)站的任何頁面時(shí),網(wǎng)站后臺(tái)程序都要查詢此數(shù)據(jù)表,以確定此用戶沒有離開,且沒有使用其他的IP地址訪問。如果用戶訪問此網(wǎng)站的某頁面時(shí),后臺(tái)程序^r測(cè)到ONLINE-USER表中已經(jīng)沒有此用戶的相關(guān)數(shù)據(jù)記錄了,說明這個(gè)用戶已經(jīng)下線,則會(huì)拒絕這個(gè)用戶訪問網(wǎng)站。正常的數(shù)據(jù)同步過程如下1、用戶A通過訂閱服務(wù)器B登錄網(wǎng)站,訂閱服務(wù)器B的數(shù)據(jù)庫中的數(shù)據(jù)表ONLINE—USER上添加此用戶A的相關(guān)數(shù)據(jù)記錄。2、訂閱服務(wù)器B上的數(shù)據(jù)更新通過隊(duì)列讀取器代理傳遞給了發(fā)布服務(wù)器C。3、發(fā)布服務(wù)器C完成訂閱服務(wù)器B發(fā)送的數(shù)據(jù)更新的同步后,會(huì)將此數(shù)據(jù)更新發(fā)布給所有的訂閱服務(wù)器。訂閱服務(wù)器在接收到發(fā)布服務(wù)器C發(fā)來的數(shù)據(jù)更新時(shí),會(huì)判斷是否已經(jīng)存在相應(yīng)數(shù)據(jù)的記錄,如果存在,就不添加,否則就添加。這樣可以避免在訂閱服務(wù)器上添加重復(fù)的記錄。下述的數(shù)據(jù)同步過程則會(huì)出現(xiàn)錯(cuò)誤情況1、用戶A登錄網(wǎng)站。訂閱服務(wù)器B的數(shù)據(jù)庫中的數(shù)據(jù)表ONLINE-USER上會(huì)添加此用戶A的相關(guān)數(shù)據(jù)記錄。2、訂閱服務(wù)器B上的數(shù)據(jù)更新通過隊(duì)列讀取器代理傳遞給了發(fā)布服務(wù)器C。3、發(fā)布服務(wù)器C完成訂閱服務(wù)器發(fā)送的數(shù)據(jù)更新的同步后,需要將此數(shù)據(jù)更新發(fā)布給所有的訂閱服務(wù)器。由于發(fā)布服務(wù)器C上還有許多之前其他的數(shù)據(jù)更新需要發(fā)布給訂閱服務(wù)器,因此,發(fā)布服務(wù)器從訂閱服務(wù)器B獲取的數(shù)據(jù)更新會(huì)排隊(duì)等待進(jìn)行數(shù)據(jù)更新的分發(fā)。4、此時(shí)用戶A進(jìn)行了注銷操作,訂閱服務(wù)器B上的ONLINE—USER表會(huì)刪除用戶A的相關(guān)數(shù)據(jù)記錄5、經(jīng)過一^a時(shí)間的等待后,發(fā)布服務(wù)器C將"添加用戶A的在線紀(jì)錄"的這一數(shù)據(jù)更新發(fā)布到所有訂閱服務(wù)器上由上述過程可以看出,第5步的數(shù)據(jù)更新出現(xiàn)了錯(cuò)誤用戶A已經(jīng)下線,卻仍然在所有的訂閱服務(wù)器上添加了A用戶的在線記錄,特別是在訂閱服務(wù)器上B添加了已經(jīng)不存在的數(shù)據(jù)。盡管在發(fā)布服務(wù)器收到訂閱服務(wù)器B的刪除用戶A的操作之后,也會(huì)將這個(gè)更新再發(fā)布給所有的訂閱服務(wù)器,最終發(fā)布服務(wù)器和訂閱服務(wù)器上都沒有用戶A的相關(guān)數(shù)據(jù)記錄,數(shù)據(jù)狀態(tài)趨于正常;但是在此之前的這段時(shí)間內(nèi),數(shù)據(jù)狀態(tài)一直是不正確的,特別是存在大量需要復(fù)制的數(shù)據(jù)時(shí)(例如計(jì)費(fèi)運(yùn)營系統(tǒng)在用戶集團(tuán)上下線、系統(tǒng)管理員在界面上做批量操作等),會(huì)造成數(shù)據(jù)庫復(fù)制性能降低,也就會(huì)擴(kuò)大數(shù)據(jù)狀態(tài)不正常的時(shí)間,這段時(shí)間通??梢赃_(dá)到5分鐘以上,此時(shí)由于數(shù)據(jù)狀態(tài)不正確而引發(fā)錯(cuò)誤的業(yè)務(wù)邏輯的可能性就比較大。上述錯(cuò)誤情況往往會(huì)造成諸多業(yè)務(wù)問題,例如1、用戶每天登錄次數(shù)的統(tǒng)計(jì)可能會(huì)出錯(cuò),例如上述例子中,訂閱服務(wù)器B上用戶A的上線記錄被添加了兩次。2、如果用戶再次登錄該網(wǎng)站,后臺(tái)程序會(huì)發(fā)現(xiàn)0NLINE-USER表中已經(jīng)有了這條記錄,則會(huì)更新用戶的登錄時(shí)間;然而隨后,由于排隊(duì)等待而延遲發(fā)布的"刪除用戶A的在線記錄"的數(shù)據(jù)更新后會(huì)發(fā)布給所有的訂閱服務(wù)器,訂閱服務(wù)器會(huì)刪除這條記錄由于訂閱服務(wù)器上已經(jīng)沒有用戶A的在線用戶記錄,而A用戶其實(shí)才剛剛登錄過的,會(huì)引發(fā)許多業(yè)務(wù)問題,例如當(dāng)用戶A訪問任何頁面時(shí),由于后臺(tái)程序已經(jīng)找不到A用戶的在線用戶記錄了,所以會(huì)拒絕用戶A訪問網(wǎng)站。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種數(shù)據(jù)庫復(fù)制方法和裝置,用于解決在現(xiàn)有數(shù)據(jù)庫復(fù)制技術(shù)中,頻繁進(jìn)行數(shù)據(jù)更新會(huì)導(dǎo)致數(shù)據(jù)同步錯(cuò)誤的問題。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)庫復(fù)制方法,所述方法包括步驟Sl,將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;步驟S2,接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;步驟S3,根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。為了實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種數(shù)據(jù)庫復(fù)制裝置,所述裝置包括記錄保存模塊、臨時(shí)保存表、數(shù)據(jù)接收模塊和操作選擇模塊,所述記錄保存模塊用于將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;所述臨時(shí)保存表與記錄保存模塊連接,用于存儲(chǔ)本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息;所述數(shù)據(jù)接收才莫塊用于接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;所述操作選擇模塊與臨時(shí)保存表與數(shù)據(jù)接收模塊連接,用于根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。'本發(fā)明通過根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息選擇性地執(zhí)行接收到的數(shù)據(jù)庫操作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。圖1為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例一示意圖圖2為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例二示意圖圖3為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例三示意圖圖4為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例四示意圖圖5為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例五示意圖圖6為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例一示意圖圖7為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例二示意圖圖8為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例三示意圖圖9為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例六示意圖圖IO為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例七示意圖圖11為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例八示意圖圖12為本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例九示意圖圖13為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例四示意圖圖14為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例五示意圖圖15為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例六示意圖具體實(shí)施例方式本發(fā)明提供了一種數(shù)據(jù)庫復(fù)制方法,圖1給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例一示意圖,所述方法包括以下步驟步驟Sl,將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;所述本節(jié)點(diǎn)可以為訂閱服務(wù)器,在訂閱服務(wù)器的數(shù)據(jù)庫中可以添加一張或幾張數(shù)據(jù)表,即臨時(shí)保存表,訂閱服務(wù)器刪除本機(jī)數(shù)據(jù)庫中的數(shù)據(jù)后,可以將刪除的數(shù)據(jù)記錄的相關(guān)信息存儲(chǔ)在臨時(shí)保存表中。臨時(shí)保存表的設(shè)計(jì)可以是多種多樣的,只要能夠存放唯一表示某條已經(jīng)刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息即可,所述數(shù)據(jù)記錄信息可以包括數(shù)據(jù)記錄的原始表名和主鍵,也可以包括數(shù)據(jù)記錄的部分表項(xiàng),還可以包括數(shù)據(jù)記錄的全部表項(xiàng)。原始表名就是數(shù)據(jù)記錄所在數(shù)據(jù)庫中數(shù)據(jù)表的表名,主4逸即主關(guān)鍵字(primarykey),是被挑選出來,唯一標(biāo)識(shí)數(shù)據(jù)表的一行的候選關(guān)鍵字。一個(gè)數(shù)據(jù)表只有一個(gè)主關(guān)鍵字。主鍵可以根據(jù)訂閱服務(wù)器的IP地址生成,例如可以為訂閱服務(wù)器的IP地址+訂閱服務(wù)器的介質(zhì)訪問控制(MediaAcceTControl,簡稱MAC)地址+記錄生成時(shí)間+隨機(jī)值;也可以為順序編號(hào),如1、2、3、4.......自增序列。臨時(shí)保存表的設(shè)計(jì)可以是整個(gè)應(yīng)用程序的數(shù)據(jù)庫共用一張表,也可以是對(duì)每一張數(shù)據(jù)庫需要復(fù)制的表都生成一張對(duì)應(yīng)的臨時(shí)保存表。步驟S2,接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;所述數(shù)據(jù)庫操作可以包括數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作。所述分發(fā)節(jié)點(diǎn)可以為分發(fā)服務(wù)器。某個(gè)訂閱服務(wù)器進(jìn)行的數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作,以及相應(yīng)的數(shù)據(jù)記錄,會(huì)通過分發(fā)服務(wù)器同步到發(fā)布服務(wù)器,發(fā)布服務(wù)器會(huì)將所述數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作以及相應(yīng)的數(shù)據(jù)記錄,通過分發(fā)服務(wù)器復(fù)制到所有的訂閱服務(wù)器,因此每個(gè)訂閱服務(wù)器都會(huì)接收到分發(fā)服務(wù)器發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作。步驟S3,根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。由于數(shù)據(jù)記錄信息可以唯一表示某條已經(jīng)刪除的數(shù)據(jù)記錄,因此在接收到分發(fā)數(shù)據(jù)記錄時(shí),可以才艮據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,只有在收到的分發(fā)數(shù)據(jù)記錄不是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄時(shí),才會(huì)去執(zhí)^f于數(shù)據(jù)庫^t喿作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。圖2給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例二示意圖,本實(shí)施例在方法實(shí)施例一的基礎(chǔ)上進(jìn)行了擴(kuò)展,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名和主鍵;所述步-驟S3具體可以分為步驟S311,從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名和主鍵;步驟S312,以所述分發(fā)數(shù)據(jù)記錄的原始表名和主鍵為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。例如主鍵可以根據(jù)訂閱服務(wù)器的IP地址生成,例如可以為訂閱服務(wù)器的IP地址+訂閱服務(wù)器的MAC地址+記錄生成時(shí)間+隨機(jī)值,這種情況下主鍵可以唯一表示某個(gè)數(shù)據(jù)表中已經(jīng)刪除的數(shù)據(jù)記錄。由于刪除數(shù)據(jù)記錄的原始表名和主鍵可以唯一表示某條已經(jīng)刪除的數(shù)據(jù)記錄,因此在接收到分發(fā)數(shù)據(jù)記錄時(shí),可以根據(jù)分發(fā)數(shù)據(jù)記錄的原始表名和主鍵查找臨時(shí)保存表,如果查找到,則說明收到的分發(fā)數(shù)據(jù)記錄是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,此時(shí)不執(zhí)行數(shù)據(jù)庫操作,只有在沒有查找到時(shí),即收到的分發(fā)數(shù)據(jù)記錄不是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄時(shí),才會(huì)去執(zhí)行數(shù)據(jù)庫操作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。圖3給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例三示意圖,本實(shí)施例在方法實(shí)施例一的基礎(chǔ)上進(jìn)行了擴(kuò)展,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名、主4建和創(chuàng)建時(shí)間;所述步驟S3具體可以分為步驟S321,從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間;步驟S322,以所述分發(fā)數(shù)據(jù)記錄的原始表名、主^T建和創(chuàng)建時(shí)間為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫#/(乍,否則執(zhí)行所述數(shù)據(jù)庫操作。例如主4建可以為順序編號(hào),如l、2、3、4.......自增序列,這種情況下一般來說數(shù)據(jù)刪除后添加數(shù)據(jù)表項(xiàng)時(shí)會(huì)使用自增序列的后續(xù)值作為主鍵,但不排除一些系統(tǒng)會(huì)在添加數(shù)據(jù)表項(xiàng)時(shí)使用之前被刪除數(shù)據(jù)的主4建,此時(shí)主鍵:可能不能唯一表示某個(gè)數(shù)據(jù)表中已經(jīng)刪除的數(shù)據(jù)記錄,因此可以使用主鍵和創(chuàng)建時(shí)間共同唯一表示某個(gè)數(shù)據(jù)表中已經(jīng)刪除的數(shù)據(jù)記錄。由于刪除數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間可以唯一表示某條已經(jīng)刪除的數(shù)據(jù)記錄,因此在接收到分發(fā)數(shù)據(jù)記錄時(shí),可以根據(jù)分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間查找臨時(shí)保存表,如果查找到,則說明收到的分發(fā)數(shù)據(jù)記錄是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,此時(shí)不執(zhí)行數(shù)據(jù)庫操作,只有在沒有查找到時(shí),即收到的分發(fā)數(shù)據(jù)記錄不是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄時(shí),才會(huì)去執(zhí)行數(shù)據(jù)庫操作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。圖4給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例四示意圖,本實(shí)施例在方法實(shí)施例一的基礎(chǔ)上進(jìn)行了擴(kuò)展,所述數(shù)據(jù)記錄信息為刪除數(shù)據(jù)記錄的全部表項(xiàng)信息;所述步驟S3具體可以為步驟S331,以分發(fā)數(shù)據(jù)記錄的全部表項(xiàng)信息為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫搡作。由于刪除數(shù)據(jù)記錄的全部表項(xiàng)信息可以唯一表示某條已經(jīng)刪除的數(shù)據(jù)記錄,因此在接收到分發(fā)數(shù)據(jù)記錄時(shí),可以根據(jù)分發(fā)數(shù)據(jù)記錄的全部表項(xiàng)信息查找臨時(shí)保存表,如果查找到,則說明收到的分發(fā)數(shù)據(jù)記錄是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,此時(shí)不執(zhí)行數(shù)據(jù)庫操作,只有在沒有查找到時(shí),即收到的分發(fā)數(shù)據(jù)記錄不是本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄時(shí),才會(huì)去執(zhí)行數(shù)據(jù)庫操作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。圖5給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例五示意圖,本實(shí)施例在方法實(shí)施例一的基礎(chǔ)上進(jìn)行了擴(kuò)展,所述數(shù)據(jù)記錄信息包括所述刪除數(shù)據(jù)記錄的數(shù)據(jù)清除時(shí)間;所述方法還包括步驟S4:根據(jù)所述數(shù)據(jù)清除時(shí)間來清除臨時(shí)保存表中的數(shù)據(jù)記錄信息。通過在臨時(shí)保存表中為刪除數(shù)據(jù)記錄設(shè)定數(shù)據(jù)清除時(shí)間,并根據(jù)數(shù)據(jù)清除時(shí)間來清除臨時(shí)保存表的數(shù)據(jù)記錄信息,使得臨時(shí)保存表中的數(shù)據(jù)記錄信息不會(huì)過多而占用存儲(chǔ)空間,防止臨時(shí)保存表過大影響系統(tǒng)正常工作。本實(shí)施例除了可以在方法實(shí)施例一的基礎(chǔ)上進(jìn)行上述擴(kuò)展外,還可以在方法實(shí)施例二、方法實(shí)施例三或方法實(shí)施例四的基礎(chǔ)上進(jìn)4亍上述擴(kuò)展。下面通過本發(fā)明一較優(yōu)實(shí)施例對(duì)發(fā)明方案進(jìn)行進(jìn)一步的說明。本發(fā)明可以按照如下步驟完成基于排隊(duì)更新的可更新訂閱事務(wù)復(fù)制功能—1、數(shù)據(jù)庫復(fù)制的配置按照標(biāo)準(zhǔn)的基于排隊(duì)更新的可更新訂閱事務(wù)復(fù)制的手冊(cè)來配置。2、在訂閱服務(wù)器的數(shù)據(jù)庫中可以添加一張或幾張數(shù)據(jù)表,即臨時(shí)保存表,訂閱服務(wù)器刪除數(shù)據(jù)本機(jī)數(shù)據(jù)庫中的數(shù)據(jù)后,可以將刪除的數(shù)據(jù)記錄的相關(guān)信息存儲(chǔ)在臨時(shí)保存表中。臨時(shí)保存表的設(shè)計(jì)可以是多種多樣的,只要能夠存放唯一表示某條已經(jīng)刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息即可,所述數(shù)據(jù)記錄信息可以包括數(shù)據(jù)記錄的原始表名和主鍵,也可以包括數(shù)據(jù)記錄的部分表項(xiàng),還可以包括數(shù)據(jù)記錄的全部表項(xiàng)。臨時(shí)保存表的設(shè)計(jì)可以是整個(gè)應(yīng)用程序的數(shù)據(jù)庫共用一張表,也可以是對(duì)每一張數(shù)據(jù)庫需要復(fù)制的表都生成一張對(duì)應(yīng)的臨時(shí)保存表。下面舉例i兌明方法一,假定數(shù)據(jù)庫復(fù)制表的記錄里的主鍵是唯一的,則可以按照如下的方式設(shè)計(jì)臨時(shí)保存表,為了便于描述將臨時(shí)保存表命名為HAS—DELETED。臨時(shí)數(shù)據(jù)表HAS-DELETED里有兩個(gè)關(guān)4走的字^殳原始表名TABLE—NAME和主4定R0W-UUID,這兩個(gè)字,殳可以唯一確定一條數(shù)據(jù)記錄。臨時(shí)保存表HAS-DELETED<table>tableseeoriginaldocumentpage16</column></row><table><table>tableseeoriginaldocumentpage17</column></row><table>方法三,使用數(shù)據(jù)記錄的全部表項(xiàng)信息表示被刪除的數(shù)據(jù)記錄:臨時(shí)保存表HAS-DELETED<table>tableseeoriginaldocumentpage17</column></row><table>3、訂閱服務(wù)器在接收到分發(fā)服務(wù)器發(fā)來的數(shù)據(jù)庫操作時(shí),判斷是否應(yīng)該將所述數(shù)據(jù)庫操作應(yīng)用到本訂閱服務(wù)器。例如訂閱服務(wù)器產(chǎn)生的數(shù)據(jù)刪除操作,會(huì)通過分發(fā)服務(wù)器傳遞給每一臺(tái)訂閱服務(wù)器,包括產(chǎn)生此數(shù)據(jù)刪除操作的原始訂閱服務(wù)器,這樣就會(huì)產(chǎn)生
背景技術(shù):
中提到的問題。因此,只要訂閱服務(wù)器僅接受其它節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)刪除操作,但不重復(fù)應(yīng)用本機(jī)產(chǎn)生而又被分發(fā)服務(wù)器分發(fā)回來的數(shù)據(jù)刪除操作,就不會(huì)存在
背景技術(shù):
中的問題。訂閱服務(wù)器首先會(huì)收到分發(fā)服務(wù)器發(fā)來的數(shù)據(jù)記錄和相應(yīng)的數(shù)據(jù)刪除操作,從中取出數(shù)據(jù)記錄的原始表名和主鍵,然后在本訂閱服務(wù)器上的臨時(shí)保存表HAS-DELETED中以原始表名和主4建為索引,查詢是否存在相應(yīng)的凄t據(jù)記錄,如果存在,則說明這條數(shù)據(jù)記錄是在此之前由本訂閱服務(wù)器刪除,它再次被分發(fā)服務(wù)器傳回來,于是不將此數(shù)據(jù)庫刪除操作再次應(yīng)用到本訂閱服務(wù)器;如果不存在,說明此數(shù)據(jù)庫刪除操作不是本訂閱服務(wù)器產(chǎn)生的,而是其它節(jié)點(diǎn)產(chǎn)生的,于是會(huì)將此數(shù)據(jù)庫刪除操作應(yīng)用到本訂閱服務(wù)器。4、根據(jù)系統(tǒng)的需要,可以定期清除HAS-DELETED表中的數(shù)據(jù),例如可以在將刪除的數(shù)據(jù)記錄的相關(guān)信息保存到HAS-DELETED表時(shí),設(shè)定該表項(xiàng)的數(shù)據(jù)清除時(shí)間DELETED-TIME為當(dāng)前時(shí)間加上一周,通過數(shù)據(jù)庫系統(tǒng)的定期檢測(cè)刪除,HAS-DELETED表中存放的數(shù)據(jù)在一周后將會(huì)自動(dòng)刪除。本發(fā)明還提供了一種數(shù)據(jù)庫復(fù)制裝置,圖6給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例一示意圖,所述裝置包括記錄保存模塊M1、臨時(shí)保存表M2、數(shù)據(jù)接收模塊M3和操作選擇模塊M4,所述記錄保存才莫塊Ml用于將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;所述臨時(shí)保存表M2與記錄保存模塊Ml連接,用于存儲(chǔ)本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息;所述數(shù)據(jù)接收模塊M3用于接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;所述操作選擇模塊M4與臨時(shí)保存表M2與數(shù)據(jù)接收模塊M3連接,用于根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。才乘作選擇一莫塊的實(shí)現(xiàn),包括但不限于下面的方法1、修改用于接收分發(fā)數(shù)據(jù)記錄的訂閱服務(wù)器上的復(fù)制存儲(chǔ)過程。2、使用報(bào)文攔截等方式,將分發(fā)數(shù)據(jù)記錄的報(bào)文截獲,并判斷是否應(yīng)該將所述分發(fā)數(shù)據(jù)記錄的報(bào)文轉(zhuǎn)發(fā)給訂閱服務(wù)器的數(shù)據(jù)庫。所述操作選擇模塊具體可以用于以分發(fā)數(shù)據(jù)記錄的全部表項(xiàng)信息為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作;此時(shí)所述數(shù)據(jù)記錄信息為刪除數(shù)據(jù)記錄的全部表項(xiàng)信息。所述數(shù)據(jù)庫復(fù)制裝置可以位于訂閱服務(wù)器上。圖7為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例二示意圖,本實(shí)施例除了包括裝置實(shí)施例一的結(jié)構(gòu)特征外,所述操作選擇模塊M4具體包括信息提取單元M41和查詢選擇單元M42;所述數(shù)據(jù)記錄信息可以包括刪除數(shù)據(jù)記錄的原始表名和主鍵;所述信息提取單元M41用于從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名和主4建;所述查詢選擇單元M42與信息提取單元M41連接,用于以所述分發(fā)數(shù)據(jù)記錄的原始表名和主鍵為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。所述數(shù)據(jù)記錄信息也可以包括刪除數(shù)據(jù)記錄的原始表名、主4建和創(chuàng)建時(shí)間;所述信息提取單元M41還可以用于從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間;所述查詢選才奪單元M42還可以用于以所述分發(fā)教:據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作;圖8為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例三示意圖,本實(shí)施例除了包括裝置實(shí)施例一的結(jié)構(gòu)特征外,所述數(shù)據(jù)庫復(fù)制裝置還包括數(shù)據(jù)清除模塊M5;所述數(shù)據(jù)記錄信息包括所述刪除數(shù)據(jù)記錄的數(shù)據(jù)清除時(shí)間;所述數(shù)據(jù)清除模塊M5與臨時(shí)保存表M2連接,用于根據(jù)所述數(shù)據(jù)清除時(shí)間來清除臨時(shí)保存表中的數(shù)據(jù)記錄信息。本實(shí)施例除了可以在裝置實(shí)施例一的基礎(chǔ)上進(jìn)行上述擴(kuò)展外,還可以在裝置實(shí)施例二的基礎(chǔ)上進(jìn)行上述擴(kuò)展。本發(fā)明通過根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息選擇性地執(zhí)行接收到的數(shù)據(jù)庫操作,避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)在收到分發(fā)節(jié)點(diǎn)發(fā)來的數(shù)據(jù)庫操作時(shí),重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)數(shù)據(jù)庫中的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。本發(fā)明改進(jìn)了現(xiàn)有的基于排隊(duì)更新的可更新訂閱事務(wù)性復(fù)制,解決了在訂閱服務(wù)器上頻繁添加刪除數(shù)據(jù)時(shí),可能引發(fā)的重大數(shù)據(jù)邏輯同步錯(cuò)誤的問題,從而提高了可更新訂閱的事務(wù)性復(fù)制方法的可用性,提高產(chǎn)品的客戶滿意度。本發(fā)明不需要改變?cè)瓟?shù)據(jù)庫復(fù)制的總體架構(gòu),降低了解決問題的架構(gòu)成本;本發(fā)明不需要改變?cè)紤?yīng)用程序的業(yè)務(wù)邏輯,降低了解決問題的開發(fā)成本。本發(fā)明又提供了另一種數(shù)據(jù)庫復(fù)制方法,圖9給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例六示意圖,所述方法包括以下步驟步驟Tl,獲取需要分發(fā)的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;所述數(shù)據(jù)庫操作可以是數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作。步驟T2,選擇需要進(jìn)行分發(fā)的目的節(jié)點(diǎn);步驟T3,判斷所述目的節(jié)點(diǎn)是否為產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn),如果是則不分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作,否則分發(fā)所迷分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作。所述判斷所述目的節(jié)點(diǎn)是否為產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn)具體可以為根據(jù)節(jié)點(diǎn)標(biāo)記判斷所述目的節(jié)點(diǎn)是否為產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn);所述節(jié)點(diǎn)標(biāo)記用于唯一標(biāo)記所述節(jié)點(diǎn)。即如果目的節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記與產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記相同,則判斷所述目的節(jié)點(diǎn)為產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn),否則判斷為否。所述節(jié)點(diǎn)標(biāo)記可以為節(jié)點(diǎn)的名稱、節(jié)點(diǎn)的IP地址,或者其他能夠唯一標(biāo)記節(jié)點(diǎn)的屬性等。所述目的節(jié)點(diǎn)可以為訂閱服務(wù)器,所述源節(jié)點(diǎn)可以為發(fā)布服務(wù)器或訂閱服務(wù)器。例如可以由發(fā)布服務(wù)器對(duì)數(shù)據(jù)庫中的數(shù)據(jù)記錄進(jìn)行操作,形成分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作,再由發(fā)布服務(wù)器將分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作發(fā)布到所有的訂閱服務(wù)器上;也可以由某個(gè)源訂閱服務(wù)器對(duì)數(shù)據(jù)庫中的數(shù)據(jù)記錄進(jìn)行操作,形成分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫纟喿作,再通過發(fā)布服務(wù)器將分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作發(fā)布到除所述源訂閱服務(wù)器的其它訂閱服務(wù)器上。圖IO給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例七示意圖,本實(shí)施例除了包括方法實(shí)施例六的步驟外,還包括步驟T4,在所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作中添加產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記。例如所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作可以為由發(fā)布服務(wù)器或訂閱服務(wù)器對(duì)數(shù)據(jù)庫中的數(shù)據(jù)表進(jìn)行數(shù)據(jù)添加操作或數(shù)據(jù)刪除操作,這些數(shù)據(jù)表需要在訂閱服務(wù)器和發(fā)布服務(wù)器之間進(jìn)行同步更新??梢栽谶@些需要同步更新的數(shù)據(jù)表中添加產(chǎn)生數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作的源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記,并在分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作中攜帶所述節(jié)點(diǎn)標(biāo)記。節(jié)點(diǎn)標(biāo)記可以是節(jié)點(diǎn)的名稱、節(jié)點(diǎn)的IP地址,或者其他能夠唯一標(biāo)記節(jié)點(diǎn)的屬性等,如果數(shù)據(jù)庫表項(xiàng)中已經(jīng)包含所述節(jié)點(diǎn)標(biāo)記,則可以不用添加節(jié)點(diǎn)標(biāo)記。圖11給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例八示意圖,本實(shí)施例除了包括方法實(shí)施例六的步驟外,還包括步驟T5,判斷是否存在需要分發(fā)的目的節(jié)點(diǎn),如果是則執(zhí)行步驟T2,否則結(jié)束操作。即判斷是否仍有未被分發(fā)的目的節(jié)點(diǎn),如果有,則繼續(xù)執(zhí)行數(shù)據(jù)更新分發(fā)的搡作。本實(shí)施例除了可以在方法實(shí)施例六的基礎(chǔ)上進(jìn)行上述擴(kuò)展,也可以在方法實(shí)施例七的基礎(chǔ)上進(jìn)行上述擴(kuò)展。圖12給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制方法實(shí)施例九示意圖,本實(shí)施例為本發(fā)明的4交優(yōu)實(shí)施例。數(shù)據(jù)庫復(fù)制的配置按照標(biāo)準(zhǔn)的基于排隊(duì)更新的可更新訂閱事務(wù)性復(fù)制的手冊(cè)來配置。為數(shù)據(jù)庫中每一個(gè)需要進(jìn)行同步更新的數(shù)據(jù)表添加一個(gè)數(shù)據(jù)列,該列用于節(jié)點(diǎn)標(biāo)記,表示對(duì)數(shù)據(jù)表的添加或刪除操作是由某個(gè)節(jié)點(diǎn)產(chǎn)生的,例如是由發(fā)布服務(wù)器或者某臺(tái)訂閱服務(wù)器產(chǎn)生的。節(jié)點(diǎn)標(biāo)記可以是節(jié)點(diǎn)的名稱、節(jié)點(diǎn)的IP地址,或者其他能夠唯一標(biāo)記節(jié)點(diǎn)的屬性等。本實(shí)施例以節(jié)點(diǎn)的IP地址作為節(jié)點(diǎn)標(biāo)記為例進(jìn)行描述。具體步驟如下步驟101,從發(fā)布服務(wù)器上獲取需要分發(fā)的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;步驟102,從數(shù)據(jù)表中獲取產(chǎn)生所迷分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn)的IP地址IP—A,即源訂閱力1務(wù)器的IP地址,或發(fā)布服務(wù)器的IP地址;步驟103,選擇需要進(jìn)行分發(fā)的目的訂閱服務(wù)器,并獲取目的訂閱服務(wù)器的IP地址IP—B;步驟104,判斷IP-A與IP-B是否相同,如果是則執(zhí)行步驟106,否則執(zhí)行步驟105;步驟105,向所述目的訂閱服務(wù)器分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;步驟106,判斷是否存在需要分發(fā)的目的訂閱服務(wù)器,如果是則執(zhí)行步驟103,否則^L行步驟107;步驟1Q7,結(jié)束操作。根據(jù)本發(fā)明的方法,發(fā)布服務(wù)器在根據(jù)來自源訂閱服務(wù)器A的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作進(jìn)行數(shù)據(jù)更新后,只將分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作發(fā)布給除了源訂閱服務(wù)器A的其它訂閱服務(wù)器,而不是發(fā)給所有的訂閱服務(wù)器。由于不會(huì)將來自源訂閱服務(wù)器A的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作回傳給A,源訂閱服務(wù)器A上就不會(huì)出現(xiàn)
背景技術(shù):
所述的錯(cuò)誤情況,例如在用戶下線時(shí)錯(cuò)誤地添加用戶的上線記錄,或者在用戶在線時(shí)錯(cuò)誤地刪除用戶的在線記錄。本發(fā)明還提供了一種數(shù)據(jù)庫復(fù)制裝置,圖13給出了本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例四示意圖,所述裝置包括分發(fā)數(shù)據(jù)獲取4莫塊Nl和分發(fā)選擇才莫塊N2,所述分發(fā)數(shù)據(jù)獲取模塊Nl用于獲取需要分發(fā)的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作,并發(fā)送給分發(fā)選擇模塊N2;所述分發(fā)選擇模塊N2與分發(fā)數(shù)據(jù)獲取模塊Nl連接,用于選擇需要進(jìn)行分發(fā)的目的節(jié)點(diǎn),并判斷所述目的節(jié)點(diǎn)是否為產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的源節(jié)點(diǎn),如果是則不分發(fā)所述分發(fā)^:據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作,否則分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作。例如,分發(fā)選擇一莫塊N2首先會(huì)從分發(fā)數(shù)據(jù)獲取f莫塊Nl收到需要分發(fā)的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作,如從進(jìn)行了數(shù)據(jù)添加或刪除操作的數(shù)據(jù)表中獲取相應(yīng)的數(shù)據(jù)記錄和相應(yīng)的數(shù)據(jù)庫操作,從數(shù)據(jù)表中取出產(chǎn)生此數(shù)據(jù)庫操作的源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記,如節(jié)點(diǎn)IP地址IP-A,所迷源節(jié)點(diǎn)可以為源訂閱服務(wù)器或發(fā)布服務(wù)器。在向每一臺(tái)目的訂閱服務(wù)器分發(fā)數(shù)據(jù)之前,判斷所述目的訂閱服務(wù)器的IP地址IP-B是否與IP-A是否相同。如果相同,則不向所述目的訂閱服務(wù)器分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;如果不相同,則向所述目的訂閱服務(wù)器分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作。圖14為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例五示意圖,本實(shí)施例除了包括裝置實(shí)施例四的結(jié)構(gòu)特征外,還包括節(jié)點(diǎn)標(biāo)記添加模塊N3,與分發(fā)選擇模塊N2連接,用于在所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫才喿作中添加產(chǎn)生所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫才喿作的源節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)記,并將所述節(jié)點(diǎn)標(biāo)記告知分發(fā)選擇模塊N2。圖15為本發(fā)明一種數(shù)據(jù)庫復(fù)制裝置實(shí)施例六示意圖,本實(shí)施例除了包括裝置實(shí)施例四的結(jié)構(gòu)特征外,還包括節(jié)點(diǎn)判斷模塊N4,與分發(fā)選擇模塊N2連接,用于判斷是否存在需要分發(fā)的目的節(jié)點(diǎn),如果是則調(diào)用分發(fā)選擇模塊N2,否則結(jié)束"t喿作。本實(shí)施例除了可以在裝置實(shí)施例四的基礎(chǔ)上進(jìn)行上述擴(kuò)展外,也可以在裝置實(shí)施例五的基礎(chǔ)上進(jìn)行上述擴(kuò)展。所述分發(fā)選擇^t塊N2可以位于發(fā)布服務(wù)器上。當(dāng)發(fā)布服務(wù)器需要發(fā)布分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作時(shí),先由分發(fā)選擇模塊進(jìn)行檢測(cè),判斷這些需要發(fā)布的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的來源如果來源是發(fā)布服務(wù)器,則分發(fā)給所有的訂閱服務(wù)器;如果來源是訂閱服務(wù)器A,則僅分發(fā)給除了訂閱服務(wù)器A之外的其他訂閱服務(wù)器。這樣就避免了產(chǎn)生數(shù)據(jù)庫操作的源訂閱服務(wù)器重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源訂閱服務(wù)器上的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。所述分發(fā)選擇^f莫塊N2也可以位于訂閱服務(wù)器上。當(dāng)訂閱服務(wù)器收到發(fā)布服務(wù)器分發(fā)的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作后,先由分發(fā)選擇才莫塊進(jìn)行檢測(cè),判斷這些需要發(fā)布的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的來源如果來源不是本訂閱服務(wù)器,則會(huì)將所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作發(fā)送給本訂閱服務(wù)器以完成數(shù)據(jù)同步;如果來源是本訂閱服務(wù)器,則會(huì)拒絕將所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫#:作發(fā)送給本訂閱服務(wù)器。因此可以避免產(chǎn)生數(shù)據(jù)庫操作的源訂閱服務(wù)器重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源訂閱服務(wù)器上的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。實(shí)際的分發(fā)選擇模塊的實(shí)現(xiàn),包括但不限于下面的方法1、修改用于分發(fā)所述分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的發(fā)布服務(wù)器上的復(fù)制存儲(chǔ)過程,即分發(fā)選擇模塊部署在發(fā)布服務(wù)器上。2、修改用于接受分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作的訂閱服務(wù)器上的復(fù)制存儲(chǔ)過程,即分發(fā)選擇^^塊部署在訂閱服務(wù)器上。例如,要訂閱的某個(gè)表結(jié)構(gòu)為<table>tableseeoriginaldocumentpage25</column></row><table>數(shù)據(jù)表USER用于存儲(chǔ)用戶信息,其中USER-ID表示用戶的標(biāo)識(shí)符,USER_NAME表示用戶名。按照本發(fā)明的方法,需要在數(shù)據(jù)表增加一個(gè)表項(xiàng)CREATE_H0ST,用于標(biāo)記分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作是由哪個(gè)節(jié)點(diǎn)產(chǎn)生的,例如由發(fā)布服務(wù)器或某臺(tái)訂閱服務(wù)器產(chǎn)生,所述數(shù)據(jù)庫操作可以為數(shù)據(jù)添加操作和數(shù)據(jù)刪除^t喿作等。例如表項(xiàng)CREATE-H0ST中用于存〗渚節(jié)點(diǎn)的IP地址。上述數(shù)據(jù)表USER的結(jié)構(gòu)如下<table>tableseeoriginaldocumentpage25</column></row><table>當(dāng)配置好訂閱服務(wù)器后,訂閱服務(wù)器上會(huì)對(duì)每一個(gè)要訂閱的數(shù)據(jù)表生成一個(gè)存儲(chǔ)過程。這個(gè)存儲(chǔ)過程是由SQL服務(wù)器的復(fù)制配置功能自動(dòng)生成的。這里存儲(chǔ)過程的功能是當(dāng)訂閱服務(wù)器接收到發(fā)布服務(wù)器發(fā)布的在數(shù)據(jù)表USER上新增數(shù)據(jù)行時(shí),如果本訂閱服務(wù)器上已經(jīng)有了相同的數(shù)據(jù)行,則不去添加;如果本訂閱服務(wù)器上沒有相同的數(shù)據(jù)行,則進(jìn)行添加,以便能和發(fā)布服務(wù)器保持同步。上述操作在正常情況下沒有問題,但是在訂閱服務(wù)器上添加某行數(shù)據(jù),隨后快速刪除此行數(shù)據(jù)時(shí),就有可能出現(xiàn)產(chǎn)生數(shù)據(jù)庫操作的源訂閱服務(wù)器重復(fù)地同步數(shù)據(jù)庫操作,從而導(dǎo)致源訂閱服務(wù)器上的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。這種問題通常會(huì)帶來業(yè)務(wù)上錯(cuò)誤。例如,數(shù)據(jù)表USER本來有9999條記錄,也就是9999個(gè)用戶。如果管理員在本訂閱服務(wù)器的此表上添加了一個(gè)用戶test,隨后很快將此用戶刪除。于是添加test用戶的操作和刪除test用戶的操作先后同步到發(fā)布服務(wù)器上,發(fā)布服務(wù)器上添加了test用戶,然后將這一操作發(fā)布給所有的訂閱服務(wù)器。產(chǎn)生數(shù)據(jù)庫操作的源訂閱服務(wù)器此時(shí)已經(jīng)沒有test用戶的相關(guān)數(shù)據(jù)了,但在收到發(fā)布服務(wù)器發(fā)布的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作后,根據(jù)上述存儲(chǔ)過程的邏輯判斷,會(huì)再次將test用戶添加到數(shù)據(jù)表USER中,由于實(shí)際上只存在9999個(gè)用戶,而源訂閱服務(wù)器上卻顯示有10000個(gè)用戶,因此影響了數(shù)據(jù)統(tǒng)計(jì)的正確性。如果管理員沒有注意到這個(gè)問題,為所有用戶充值10元,則用戶賬務(wù)數(shù)目也不正確。這里只給出了一些筒單的業(yè)務(wù)邏輯問題,如果將數(shù)據(jù)表USER與其他數(shù)據(jù)表進(jìn)行關(guān)聯(lián),則會(huì)產(chǎn)生更多的邏輯問題。本發(fā)明可以將上述存儲(chǔ)過程增加以下操作如果產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)的IP地址就是本訂閱服務(wù)器的IP地址,則不會(huì)在本訂閱服務(wù)器上進(jìn)行相應(yīng)的數(shù)據(jù)庫操作。上述存儲(chǔ)過程的功能是,當(dāng)訂閱服務(wù)器接收到發(fā)布服務(wù)器發(fā)布的在數(shù)據(jù)表USER上新增數(shù)據(jù)行時(shí),如果本訂閱服務(wù)器上已經(jīng)有了相同的數(shù)據(jù)行,則不去添加;如果本訂閱服務(wù)器上沒有相同的數(shù)據(jù)行,判斷產(chǎn)生該行數(shù)據(jù)的源節(jié)點(diǎn)的IP地址是否為本訂閱服務(wù)器的IP地址,如果是則不去添加;如果不是,說明此行數(shù)據(jù)是由發(fā)布服務(wù)器或者其他訂閱服務(wù)器產(chǎn)生的,需要在本訂閱服務(wù)器上進(jìn)行添加,以便同步數(shù)據(jù)。本發(fā)明通過判斷需要進(jìn)行分發(fā)的目的節(jié)點(diǎn)是否為產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn),避免了產(chǎn)生數(shù)據(jù)庫操作的源節(jié)點(diǎn)重復(fù)地執(zhí)行數(shù)據(jù)庫操作,從而導(dǎo)致源節(jié)點(diǎn)上的數(shù)據(jù)與實(shí)際數(shù)據(jù)不一致的問題。本發(fā)明改進(jìn)了現(xiàn)有的基于排隊(duì)更新的可更新訂閱事務(wù)性復(fù)制,解決了在訂閱服務(wù)器上頻繁添加刪除數(shù)據(jù)時(shí),可能引發(fā)的重大數(shù)據(jù)邏輯同步錯(cuò)誤的問題,從而提高了可更新訂閱的事務(wù)性復(fù)制方法的可用性,提高產(chǎn)品的客戶滿意度。本發(fā)明不需要改變?cè)瓟?shù)據(jù)庫復(fù)制的總體架構(gòu),降低了解決問題的架構(gòu)成本;本發(fā)明不需要改變?cè)紤?yīng)用程序的業(yè)務(wù)邏輯,降低了解決問題的開發(fā)成本。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的才支術(shù)方案進(jìn)4亍修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。權(quán)利要求1.一種數(shù)據(jù)庫復(fù)制方法,其特征在于,包括步驟S1,將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;步驟S2,接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;步驟S3,根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述數(shù)據(jù)庫操作包括數(shù)據(jù)添加操作和數(shù)據(jù)刪除操作。3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名和主鍵;所述步驟S3具體為從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名和主鍵,并以所述分發(fā)數(shù)據(jù)記錄的原始表名和主鍵為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。4.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名、主4建和創(chuàng)建時(shí)間;所述步驟S3具體為從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間,并以所述分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。5.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述數(shù)據(jù)記錄信息為刪除數(shù)據(jù)記錄的全部表項(xiàng)信息;所述步驟S3具體為以分發(fā)數(shù)據(jù)記錄的全部表項(xiàng)信息為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。6.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述數(shù)據(jù)記錄信息包括所述刪除數(shù)據(jù)記錄的數(shù)據(jù)清除時(shí)間,根據(jù)所述數(shù)據(jù)清除時(shí)間來清除臨時(shí)保存表中的數(shù)據(jù)記錄信息。7.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)庫復(fù)制方法,其特征在于,所述本節(jié)點(diǎn)為訂閱服務(wù)器,所述分發(fā)節(jié)點(diǎn)為分發(fā)服務(wù)器。8.—種數(shù)據(jù)庫復(fù)制裝置,其特征在于,包括記錄保存模塊、臨時(shí)保存表、數(shù)據(jù)接收模塊和操作選擇模塊,所述記錄保存模塊用于將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;所述臨時(shí)保存表與記錄保存模塊連接,用于存儲(chǔ)本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息;所述數(shù)據(jù)接收模塊用于接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;所述操作選擇模塊與臨時(shí)保存表與數(shù)據(jù)接收模塊連接,用于根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫復(fù)制裝置,其特征在于,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名和主鍵;所述操作選擇模塊具體包括信息提取單元和查詢選擇單元;所述信息提取單元用于從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名和主鍵;所述查詢選擇單元與信息提取單元連接,用于以所迷分發(fā)數(shù)據(jù)記錄的原始表名和主鍵為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。10.根據(jù)權(quán)利要求8所述的數(shù)據(jù)庫復(fù)制裝置,其特征在于,所述數(shù)據(jù)記錄信息包括刪除數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間;所述操作選擇模塊具體包括信息提取單元和查詢選擇單元;所述信息提取單元用于從分發(fā)數(shù)據(jù)記錄中提取分發(fā)數(shù)據(jù)記錄的原始表名、主4走和創(chuàng)建時(shí)間;所述查詢選擇單元與信息提取單元連接,用于以所述分發(fā)數(shù)據(jù)記錄的原始表名、主鍵和創(chuàng)建時(shí)間為索引在臨時(shí)保存表中查詢,如果查詢到則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。11.根據(jù)權(quán)利要求8-IO所述的任一數(shù)據(jù)庫復(fù)制裝置,其特征在于,所述數(shù)據(jù)記錄信息包括所述刪除數(shù)據(jù)記錄的數(shù)據(jù)清除時(shí)間,所述數(shù)據(jù)庫復(fù)制裝置還包括數(shù)據(jù)清除才莫塊,與臨時(shí)保存表連接,用于才艮據(jù)所述數(shù)據(jù)清除時(shí)間來清除臨時(shí)保存表中的數(shù)據(jù)記錄信息。全文摘要本發(fā)明提供了一種數(shù)據(jù)庫復(fù)制方法和裝置。所述方法包括步驟S1,將本節(jié)點(diǎn)刪除的數(shù)據(jù)庫中的刪除數(shù)據(jù)記錄的數(shù)據(jù)記錄信息保存在臨時(shí)保存表中;步驟S2,接收分發(fā)節(jié)點(diǎn)發(fā)來的分發(fā)數(shù)據(jù)記錄和相應(yīng)數(shù)據(jù)庫操作;步驟S3,根據(jù)臨時(shí)保存表中的數(shù)據(jù)記錄信息判斷所述分發(fā)數(shù)據(jù)記錄是否為本節(jié)點(diǎn)刪除的刪除數(shù)據(jù)記錄,如果是則不執(zhí)行所述數(shù)據(jù)庫操作,否則執(zhí)行所述數(shù)據(jù)庫操作。本發(fā)明可以解決在現(xiàn)有數(shù)據(jù)庫復(fù)制技術(shù)中,頻繁進(jìn)行數(shù)據(jù)更新會(huì)導(dǎo)致數(shù)據(jù)同步錯(cuò)誤的問題。文檔編號(hào)G06F11/14GK101551822SQ20091008489公開日2009年10月7日申請(qǐng)日期2009年5月27日優(yōu)先權(quán)日2009年5月27日發(fā)明者孟若君申請(qǐng)人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司