專利名稱:一種分布式數(shù)據(jù)庫同步系統(tǒng)、同步方法和節(jié)點(diǎn)管理方法
技術(shù)領(lǐng)域:
本方案涉及到分布式數(shù)據(jù)庫或云數(shù)據(jù)庫同步模型的設(shè)計,提供ー種低開銷、松耦合、基于Web服務(wù)的自主同步方案。
背景技術(shù):
當(dāng)前,將數(shù)據(jù)副本存放在同一個機(jī)房或同一個區(qū)域的數(shù)據(jù)庫服務(wù)器中,并不能安全地保護(hù)數(shù)據(jù),尤其是遇到區(qū)域性的突發(fā)問題,例如地區(qū)供電中斷,或是自然災(zāi)害等突發(fā)情況。因此,越來越多的數(shù)據(jù)庫服務(wù)系統(tǒng)選擇在全球范圍設(shè)置數(shù)據(jù)庫的副本存放,最大程度的保證數(shù)據(jù)的安全。日益激増的并發(fā)訪問量和龐大的數(shù)據(jù)存取量都要求構(gòu)建ー個分布式數(shù)據(jù)庫系統(tǒng)。
分布式數(shù)據(jù)庫不僅解決了傳統(tǒng)數(shù)據(jù)庫在存儲空間上難以擴(kuò)展的問題以及高度并發(fā)訪問的瓶頸問題,同時通過數(shù)據(jù)冗余的方法,很好的確保了數(shù)據(jù)的完整性和安全性,提供了強(qiáng)大的容災(zāi)措施,在出現(xiàn)重大問題后,可以很快地進(jìn)行數(shù)據(jù)恢復(fù)。支持這些功能最核心的技術(shù)之一就是分布式數(shù)據(jù)庫同步技木。通過高效、完善的分布式數(shù)據(jù)庫同步技木,能夠及時地將數(shù)據(jù)庫中的數(shù)據(jù)副本同步到異地數(shù)據(jù)庫服務(wù)器中,一旦本地數(shù)據(jù)出現(xiàn)問題,能夠通過同步技術(shù)進(jìn)行數(shù)據(jù)恢復(fù)。本發(fā)明在此背景下提出ー種分布式數(shù)據(jù)庫同步方案。
發(fā)明內(nèi)容
為了讓分布式數(shù)據(jù)庫之間的同步活動避開數(shù)據(jù)庫負(fù)載高峰期,減少數(shù)據(jù)庫同步活動開銷,本發(fā)明提出了ー種低開銷、松耦合、基于Web服務(wù)的分布式數(shù)據(jù)庫同步系統(tǒng)、同步方法和節(jié)點(diǎn)管理方法??梢燥@著降低同步活動在維護(hù)連接以及身份認(rèn)證的開銷,利用數(shù)據(jù)庫服務(wù)器空閑時間進(jìn)行同步,從而很大程度上降低了對數(shù)據(jù)庫服務(wù)器性能的影響。本發(fā)明所采用的技術(shù)方案是—種分布式數(shù)據(jù)庫同步系統(tǒng),包括數(shù)據(jù)庫節(jié)點(diǎn)和管理節(jié)點(diǎn),所述數(shù)據(jù)庫節(jié)點(diǎn)對外提供基于Web服務(wù)的分布式數(shù)據(jù)庫存取、更新與查詢服務(wù);各數(shù)據(jù)庫節(jié)點(diǎn)之間無主從之分,獨(dú)立擔(dān)負(fù)提供分布式數(shù)據(jù)庫服務(wù)的功能;各數(shù)據(jù)庫節(jié)點(diǎn)之間沒有直接關(guān)系,定期從管理節(jié)點(diǎn)獲取同步配置表、網(wǎng)絡(luò)成員配置表,與其它數(shù)據(jù)庫節(jié)點(diǎn)建立同步關(guān)系;各數(shù)據(jù)庫節(jié)點(diǎn)中采用基于Web服務(wù)的同步模塊,利用該同步模塊將傳統(tǒng)數(shù)據(jù)庫封裝起來,對外提供ー組API接ロ函數(shù);所述同步模塊包括應(yīng)用接ロ子模塊、同步接ロ子模塊以及數(shù)據(jù)轉(zhuǎn)換子模塊,并且維護(hù)著ー組同步事務(wù)日志表;管理節(jié)點(diǎn)用于管理集群中數(shù)據(jù)庫節(jié)點(diǎn)的添加、刪除、認(rèn)證、同步配置和心跳監(jiān)聽;管理節(jié)點(diǎn)維護(hù)網(wǎng)絡(luò)成員配置表、同步配置表與心跳信息表,定期與各數(shù)據(jù)庫節(jié)點(diǎn)通信更新相關(guān)信息。所述的分布式數(shù)據(jù)庫同步系統(tǒng),所述同步事務(wù)日志表包括本地日志表和同步日志表;本地日志表記錄對本數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行的各種更新操作日志,同步日志表記錄本數(shù)據(jù)庫節(jié)點(diǎn)同其它數(shù)據(jù)庫節(jié)點(diǎn)的同步操作日志。
所述的分布式數(shù)據(jù)庫同步系統(tǒng),所述管理節(jié)點(diǎn)維護(hù)三張配置信息表網(wǎng)絡(luò)成員配置表用來管理合法數(shù)據(jù)庫節(jié)點(diǎn)信息,同時為每個數(shù)據(jù)庫節(jié)點(diǎn)配置同步分組,處于同一個分組中的數(shù)據(jù)庫節(jié)點(diǎn)互為副本和備份;同步配置表用來確定各數(shù)據(jù)庫節(jié)點(diǎn)和其它數(shù)據(jù)庫節(jié)點(diǎn)的同步策略;心跳信息表用來記錄和維護(hù)各數(shù)據(jù)庫節(jié)點(diǎn)發(fā)來的心跳信息。所述分布式數(shù)據(jù)庫同步系統(tǒng)的數(shù)據(jù)庫同步方法,包括以下步驟H1、數(shù)據(jù)庫節(jié)點(diǎn)A與管理節(jié)點(diǎn)M通信,獲取最新的同步配置表、網(wǎng)絡(luò)成員配置表;H2、數(shù)據(jù)庫節(jié)點(diǎn)A根據(jù)同步配置表中相關(guān)的同步策略,定期向數(shù)據(jù)庫節(jié)點(diǎn)B發(fā)送同步請求,同步請求包含數(shù)據(jù)庫節(jié)點(diǎn)B的KEY和上次與數(shù)據(jù)庫節(jié)點(diǎn)B同步更新的時間標(biāo)簽;H3、數(shù)據(jù)庫節(jié)點(diǎn)B在接收到此同步請求之后,檢驗(yàn)收到KEY值的合法性,通過檢索本地日志表,將上次同步更新時間標(biāo)簽后的増量數(shù)據(jù)信息返回給數(shù)據(jù)庫節(jié)點(diǎn)A ;H4、數(shù)據(jù)庫節(jié)點(diǎn)A在接收到數(shù)據(jù)庫節(jié)點(diǎn)B返回的同步數(shù)據(jù)后,更新自己數(shù)據(jù)庫相關(guān)信息,并在同步日志表中追加與數(shù)據(jù)庫節(jié)點(diǎn)B本次同步的時間標(biāo)簽日
O 所述分布式數(shù)據(jù)庫同步系統(tǒng)的節(jié)點(diǎn)管理方法,包括添加節(jié)點(diǎn)、刪除節(jié)點(diǎn)、和故障節(jié)點(diǎn)處理;所述添加節(jié)點(diǎn)的方法為一個新節(jié)點(diǎn)加入網(wǎng)絡(luò),先向管理節(jié)點(diǎn)提出申請,管理節(jié)點(diǎn)對該節(jié)點(diǎn)的申請信息進(jìn)行審查,將其相關(guān)信息添加到管理節(jié)點(diǎn)的網(wǎng)絡(luò)成員配置表中;新節(jié)點(diǎn)利用管理節(jié)點(diǎn)的網(wǎng)絡(luò)成員配置表獲取相關(guān)同步策略,與相關(guān)目標(biāo)進(jìn)行同步;其它節(jié)點(diǎn)通過心跳信息方式與管理節(jié)點(diǎn)通信,獲取與這個新節(jié)點(diǎn)的同步策略;所述刪除節(jié)點(diǎn)的方法為管理節(jié)點(diǎn)首先停止該節(jié)點(diǎn)對外的數(shù)據(jù)庫服務(wù),檢索與被刪除節(jié)點(diǎn)同步的相關(guān)數(shù)據(jù)庫節(jié)點(diǎn),向它們發(fā)出立即同步的緊急消息,相關(guān)節(jié)點(diǎn)接收到此緊急消息后會立即同步將被刪除節(jié)點(diǎn)上的數(shù)據(jù),并在完成同步之后向管理節(jié)點(diǎn)返回確認(rèn)消息;當(dāng)所有相關(guān)節(jié)點(diǎn)都同步之后,管理節(jié)點(diǎn)在適當(dāng)時候?qū)⒃摴?jié)點(diǎn)的相關(guān)信息從網(wǎng)絡(luò)成員配置表中刪除,完成刪除節(jié)點(diǎn)的工作;所述故障節(jié)點(diǎn)處理的方法為管理節(jié)點(diǎn)時刻監(jiān)聽各數(shù)據(jù)庫節(jié)點(diǎn)的心跳信息,在一定時間段之內(nèi),如果管理節(jié)點(diǎn)沒有接收到某一個數(shù)據(jù)庫節(jié)點(diǎn)的心跳信息,則認(rèn)為該數(shù)據(jù)庫節(jié)點(diǎn)出現(xiàn)故障;假設(shè)數(shù)據(jù)庫節(jié)點(diǎn)A出現(xiàn)故障,管理節(jié)點(diǎn)將按照一定的策略,選擇ー個合適的數(shù)據(jù)庫節(jié)點(diǎn)B暫時接手故障節(jié)點(diǎn)數(shù)據(jù)庫節(jié)點(diǎn)A的工作,將數(shù)據(jù)庫節(jié)點(diǎn)A的Working-area字段內(nèi)容添加到B的相應(yīng)信息中;同時將網(wǎng)絡(luò)成員配置表中同步目標(biāo)為數(shù)據(jù)庫節(jié)點(diǎn)A的相關(guān)數(shù)據(jù)庫節(jié)點(diǎn)的信息進(jìn)行更新,使原先同歩數(shù)據(jù)庫節(jié)點(diǎn)A的數(shù)據(jù)庫節(jié)點(diǎn)現(xiàn)在能夠同步數(shù)據(jù)庫節(jié)點(diǎn)B上的相關(guān)數(shù)據(jù);當(dāng)A恢復(fù)正常,管理節(jié)點(diǎn)將先讓數(shù)據(jù)庫節(jié)點(diǎn)A與數(shù)據(jù)庫節(jié)點(diǎn)B同步,使數(shù)據(jù)庫節(jié)點(diǎn)A獲得在故障期間轉(zhuǎn)移到數(shù)據(jù)庫節(jié)點(diǎn)B上的増量數(shù)據(jù),最后修改網(wǎng)絡(luò)成員配置表,使相關(guān)節(jié)點(diǎn)恢復(fù)對數(shù)據(jù)庫節(jié)點(diǎn)A的同步策略。本發(fā)明可應(yīng)用于分布式數(shù)據(jù)庫或云數(shù)據(jù)庫系統(tǒng)中,利用Web服務(wù)執(zhí)行數(shù)據(jù)同步功能,代替?zhèn)鹘y(tǒng)數(shù)據(jù)庫原有數(shù)據(jù)同步機(jī)制;優(yōu)化同步活動的連接建立方式,降低同步的開銷,提升數(shù)據(jù)庫服務(wù)器的性能;同時利用Web服務(wù)的SOAP協(xié)議進(jìn)行數(shù)據(jù)傳輸,能夠適應(yīng)各種復(fù)雜的異構(gòu)網(wǎng)絡(luò),解決各種傳統(tǒng)數(shù)據(jù)庫相互間數(shù)據(jù)不兼容且不能相互同步的問題。
圖I是發(fā)明的基于Web服務(wù)的同步模塊結(jié)構(gòu)。圖2是發(fā)明的分布式數(shù)據(jù)庫整體結(jié)構(gòu)。圖3是發(fā)明的同步分組及節(jié)點(diǎn)功能示意圖。
圖4是發(fā)明的同步過程示意圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例,對本發(fā)明進(jìn)行詳細(xì)說明。參考圖2和圖3,分布式數(shù)據(jù)庫同步系統(tǒng)包括數(shù)據(jù)庫節(jié)點(diǎn)和管理節(jié)點(diǎn),所有數(shù)據(jù)庫節(jié)點(diǎn)都對外提供基于Web服務(wù)的分布式數(shù)據(jù)庫存取、更新與查詢服務(wù)。各數(shù)據(jù)庫節(jié)點(diǎn)之間無主從之分,獨(dú)立擔(dān)負(fù)提供分布式數(shù)據(jù)庫服務(wù)的功能。同步分組中各數(shù)據(jù)庫節(jié)點(diǎn)互相同步,互為副本和備份。各數(shù)據(jù)庫節(jié)點(diǎn)之間沒有直接關(guān)系,定期從管理節(jié)點(diǎn)獲取同步配置表、網(wǎng)絡(luò)成員配置表的相關(guān)信息,與其它數(shù)據(jù)庫節(jié)點(diǎn)建立同步關(guān)系。管理節(jié)點(diǎn)主要負(fù)責(zé)管理集群中數(shù)據(jù)庫節(jié)點(diǎn)的添加、刪除、認(rèn)證、同步配置和心跳監(jiān)聽等工作。管理節(jié)點(diǎn)維護(hù)網(wǎng)絡(luò)成員配置表、同步配置表與心跳信息表,定期與各數(shù)據(jù)庫節(jié)點(diǎn)通信,以便更新相關(guān)信息,是整個數(shù)據(jù)庫集群正常運(yùn)轉(zhuǎn)的核心。 參考圖1,各數(shù)據(jù)庫節(jié)點(diǎn)中采用基于Web服務(wù)的同步模塊,利用該同步模塊將傳統(tǒng)數(shù)據(jù)庫封裝起來,對外提供一組API接口函數(shù),無論是對數(shù)據(jù)的操作,還是對數(shù)據(jù)的同步,都將通過Web服務(wù)提供的API接口函數(shù)完成。這樣,傳統(tǒng)數(shù)據(jù)庫被封裝成為一個Web數(shù)據(jù)庫,被封裝的傳統(tǒng)數(shù)據(jù)庫我們稱為底層數(shù)據(jù)庫,底層數(shù)據(jù)庫具有很好的獨(dú)立性,對外是透明的(即看不見的),底層數(shù)據(jù)庫可為同構(gòu)數(shù)據(jù)庫,也可為各種類型的異構(gòu)數(shù)據(jù)庫。通過Web服務(wù)和同步模塊封裝底層數(shù)據(jù)庫,解決各種傳統(tǒng)數(shù)據(jù)庫相互間數(shù)據(jù)異構(gòu)不兼容、且不能相互同步的問題。。該同步模塊包括應(yīng)用接口子模塊、同步接口子模塊以及數(shù)據(jù)轉(zhuǎn)換子模塊,并且維護(hù)著一組同步事務(wù)日志表。(D應(yīng)用接口子模塊應(yīng)用接口子模塊將各種應(yīng)用程序和底層數(shù)據(jù)庫隔離開,使應(yīng)用程序不用關(guān)心連接的是何種類型的底層數(shù)據(jù)庫,使用何種數(shù)據(jù)庫語言;可編程實(shí)現(xiàn)對多種底層數(shù)據(jù)庫的訪問操作,若需要更換底層數(shù)據(jù)庫,只需修改配置文件,即可改變所支持?jǐn)?shù)據(jù)庫的類型。該模塊將應(yīng)用程序?qū)?shù)據(jù)庫進(jìn)行的插入、刪除以及更新等基本操作記錄到同步事務(wù)日志表中,以提供給其它數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行同步,查詢操作不對數(shù)據(jù)庫內(nèi)容進(jìn)行更新改動,所以不記錄到同步事務(wù)日志表中。(2)同步接口子模塊該模塊主要負(fù)責(zé)發(fā)送和接收數(shù)據(jù)庫同步的請求。它用一個配置文件設(shè)定本數(shù)據(jù)庫節(jié)點(diǎn)與某些數(shù)據(jù)庫節(jié)點(diǎn)的同步時間,判斷發(fā)出同步請求數(shù)據(jù)庫節(jié)點(diǎn)的合法性。當(dāng)本節(jié)點(diǎn)需要同步數(shù)據(jù)時,該模塊向特定的目標(biāo)數(shù)據(jù)庫節(jié)點(diǎn)發(fā)出同步請求,并將得到的同步信息遞交給數(shù)據(jù)轉(zhuǎn)換子模塊;當(dāng)本節(jié)點(diǎn)收到同步請求的時候,該模塊首先判斷來源數(shù)據(jù)庫節(jié)點(diǎn)是否合法,隨后通知數(shù)據(jù)轉(zhuǎn)換子模塊,將同步數(shù)據(jù)進(jìn)行編碼,生成同步數(shù)據(jù)文件,發(fā)送給同步請求方。(3)數(shù)據(jù)轉(zhuǎn)換子模塊該模塊負(fù)責(zé)將同步事務(wù)日志表中記錄的相應(yīng)增量操作與特定XML格式的同步文件進(jìn)行相互轉(zhuǎn)換,增量操作主要包括插入操作、刪除操作以及更新操作。被同步節(jié)點(diǎn)接收到同步請求后,數(shù)據(jù)轉(zhuǎn)換模塊將同步事務(wù)日志表中存儲的增量操作記錄進(jìn)行篩選,將符合時間范圍之內(nèi)的增量操作記錄提取出來,按照下述存儲方式將增量操作按時間順序存儲到XML同步文件中。增量操作轉(zhuǎn)換XML文件的步驟為數(shù)據(jù)轉(zhuǎn)換模塊創(chuàng)建XML同步文件,并在此同步文件中創(chuàng)建根節(jié)點(diǎn);根節(jié)點(diǎn)下的每棵子樹存儲一條增量操作,子樹的根屬性為該操作名以及操作時間;子樹中包含若干分支,分別為操作的表名、變更內(nèi)容以及變更條件,其中變更內(nèi)容包括本次操作涉及到的列以及所改動的數(shù)據(jù)。發(fā)起同步的節(jié)點(diǎn)收到被同步節(jié)點(diǎn)返回的XML同步文件之后,進(jìn)行逆操作,將XML同步文件轉(zhuǎn)換成增量操作語句,對本地數(shù)據(jù)庫進(jìn)行相應(yīng)操作,完成同步。(4)同步事務(wù)日志表數(shù)據(jù)庫節(jié)點(diǎn)上維護(hù)一組同步事務(wù)日志表,存放著對數(shù)據(jù)庫的更新操作日志。同步 事務(wù)日志表包括本地日志表和同步日志表。本地日志表記錄對本數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行的各種更新操作日志,同步日志表記錄本數(shù)據(jù)庫節(jié)點(diǎn)同其它數(shù)據(jù)庫節(jié)點(diǎn)的同步操作日志。管理節(jié)點(diǎn)維護(hù)三張配置信息表網(wǎng)絡(luò)成員配置表用來管理合法數(shù)據(jù)庫節(jié)點(diǎn)信息,同時為每個數(shù)據(jù)庫節(jié)點(diǎn)配置同步分組,處于同一個分組中的數(shù)據(jù)庫節(jié)點(diǎn)互為副本和備份;同步配置表用來確定各數(shù)據(jù)庫節(jié)點(diǎn)和其它數(shù)據(jù)庫節(jié)點(diǎn)的同步策略;心跳信息表用來記錄和維護(hù)各數(shù)據(jù)庫節(jié)點(diǎn)發(fā)來的心跳信息。每個正常工作的數(shù)據(jù)庫節(jié)點(diǎn)都會定期向管理節(jié)點(diǎn)發(fā)送心跳消息,包含了自己的同步驗(yàn)證碼KEY以及本數(shù)據(jù)庫節(jié)點(diǎn)當(dāng)前的負(fù)載情況,管理節(jié)點(diǎn)將心跳消息記錄到相應(yīng)的心跳信息表中。(I)網(wǎng)絡(luò)成員配置表⑴表結(jié)構(gòu)
權(quán)利要求
1.一種分布式數(shù)據(jù)庫同步系統(tǒng),其特征在于,包括數(shù)據(jù)庫節(jié)點(diǎn)和管理節(jié)點(diǎn),所述數(shù)據(jù)庫節(jié)點(diǎn)對外提供基于Web服務(wù)的分布式數(shù)據(jù)庫存取、更新與查詢服務(wù);各數(shù)據(jù)庫節(jié)點(diǎn)之間無主從之分,獨(dú)立擔(dān)負(fù)提供分布式數(shù)據(jù)庫服務(wù)的功能;各數(shù)據(jù)庫節(jié)點(diǎn)之間沒有直接關(guān)系,定期從管理節(jié)點(diǎn)獲取同步配置表、網(wǎng)絡(luò)成員配置表,與其它數(shù)據(jù)庫節(jié)點(diǎn)建立同步關(guān)系;各數(shù)據(jù)庫節(jié)點(diǎn)中采用基于Web服務(wù)的同步模塊,利用該同步模塊將傳統(tǒng)數(shù)據(jù)庫封裝起來,對外提供一組API接口函數(shù);所述同步模塊包括應(yīng)用接口子模塊、同步接口子模塊以及數(shù)據(jù)轉(zhuǎn)換子模塊,并且維護(hù)著一組同步事務(wù)日志表;管理節(jié)點(diǎn)用于管理集群中數(shù)據(jù)庫節(jié)點(diǎn)的添加、刪除、認(rèn)證、同步配置和心跳監(jiān)聽;管理節(jié)點(diǎn)維護(hù)網(wǎng)絡(luò)成員配置表、同步配置表與心跳信息表, 定期與各數(shù)據(jù)庫節(jié)點(diǎn)通信更新相關(guān)信息。
2.根據(jù)權(quán)利要求I所述的分布式數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述同步事務(wù)日志表包括本地日志表和同步日志表;本地日志表記錄對本數(shù)據(jù)庫節(jié)點(diǎn)進(jìn)行的各種更新操作日志,同步日志表記錄本數(shù)據(jù)庫節(jié)點(diǎn)同其它數(shù)據(jù)庫節(jié)點(diǎn)的同步操作日志。
3.根據(jù)權(quán)利要求I所述的分布式數(shù)據(jù)庫同步系統(tǒng),其特征在于,所述管理節(jié)點(diǎn)維護(hù)三張配置信息表網(wǎng)絡(luò)成員配置表用來管理合法數(shù)據(jù)庫節(jié)點(diǎn)信息,同時為每個數(shù)據(jù)庫節(jié)點(diǎn)配置同步分組,處于同一個分組中的數(shù)據(jù)庫節(jié)點(diǎn)互為副本和備份;同步配置表用來確定各數(shù)據(jù)庫節(jié)點(diǎn)和其它數(shù)據(jù)庫節(jié)點(diǎn)的同步策略;心跳信息表用來記錄和維護(hù)各數(shù)據(jù)庫節(jié)點(diǎn)發(fā)來的心跳f目息。
4.根據(jù)權(quán)利要求I至3任一所述分布式數(shù)據(jù)庫同步系統(tǒng)的數(shù)據(jù)庫同步方法,其特征在于,包括以下步驟H1、數(shù)據(jù)庫節(jié)點(diǎn)A與管理節(jié)點(diǎn)M通信,獲取最新的同步配置表、網(wǎng)絡(luò)成員配置表;H2、數(shù)據(jù)庫節(jié)點(diǎn)A根據(jù)同步配置表中相關(guān)的同步策略,定期向數(shù)據(jù)庫節(jié)點(diǎn)B發(fā)送同步請求,同步請求包含數(shù)據(jù)庫節(jié)點(diǎn)B的KEY和上次與數(shù)據(jù)庫節(jié)點(diǎn)B同步更新的時間標(biāo)簽; H3、數(shù)據(jù)庫節(jié)點(diǎn)B在接收到此同步請求之后,檢驗(yàn)收到KEY值的合法性,通過檢索本地日志表,將上次同步更新時間標(biāo)簽后的增量數(shù)據(jù)信息返回給數(shù)據(jù)庫節(jié)點(diǎn)A ;H4、數(shù)據(jù)庫節(jié)點(diǎn)A在接收到數(shù)據(jù)庫節(jié)點(diǎn)B返回的同步數(shù)據(jù)后,更新自己數(shù)據(jù)庫相關(guān)信息,并在同步日志表中追加與數(shù)據(jù)庫節(jié)點(diǎn)B本次同步的時間標(biāo)簽日志。
5.根據(jù)權(quán)利要求I至3任一所述分布式數(shù)據(jù)庫同步系統(tǒng)的節(jié)點(diǎn)管理方法,其特征在于,包括添加節(jié)點(diǎn)、刪除節(jié)點(diǎn)、和故障節(jié)點(diǎn)處理;所述添加節(jié)點(diǎn)的方法為一個新節(jié)點(diǎn)加入網(wǎng)絡(luò),先向管理節(jié)點(diǎn)提出申請,管理節(jié)點(diǎn)對該節(jié)點(diǎn)的申請信息進(jìn)行審查,將其相關(guān)信息添加到管理節(jié)點(diǎn)的網(wǎng)絡(luò)成員配置表中;新節(jié)點(diǎn)利用管理節(jié)點(diǎn)的網(wǎng)絡(luò)成員配置表獲取相關(guān)同步策略,與相關(guān)目標(biāo)進(jìn)行同步;其它節(jié)點(diǎn)通過心跳信息方式與管理節(jié)點(diǎn)通信,獲取與這個新節(jié)點(diǎn)的同步策略;所述刪除節(jié)點(diǎn)的方法為管理節(jié)點(diǎn)首先停止該節(jié)點(diǎn)對外的數(shù)據(jù)庫服務(wù),檢索與被刪除節(jié)點(diǎn)同步的相關(guān)數(shù)據(jù)庫節(jié)點(diǎn),向它們發(fā)出立即同步的緊急消息,相關(guān)節(jié)點(diǎn)接收到此緊急消息后會立即同步將被刪除節(jié)點(diǎn)上的數(shù)據(jù),并在完成同步之后向管理節(jié)點(diǎn)返回確認(rèn)消息;當(dāng)所有相關(guān)節(jié)點(diǎn)都同步之后,管理節(jié)點(diǎn)在適當(dāng)時候?qū)⒃摴?jié)點(diǎn)的相關(guān)信息從網(wǎng)絡(luò)成員配置表中刪除,完成刪除節(jié)點(diǎn)的工作;所述故障節(jié)點(diǎn)處理的方法為管理節(jié)點(diǎn)時刻監(jiān)聽各數(shù)據(jù)庫節(jié)點(diǎn)的心跳信息,在一定時間段之內(nèi),如果管理節(jié)點(diǎn)沒有接收到某一個數(shù)據(jù)庫節(jié)點(diǎn)的心跳信息,則認(rèn)為該數(shù)據(jù)庫節(jié)點(diǎn)出現(xiàn)故障;假設(shè)數(shù)據(jù)庫節(jié)點(diǎn)A出現(xiàn)故障,管理節(jié)點(diǎn)將按照一定的策略,選擇一個合適的數(shù)據(jù)庫節(jié)點(diǎn)B暫時接手故障節(jié)點(diǎn)數(shù)據(jù)庫節(jié)點(diǎn)A的工作,將數(shù)據(jù)庫節(jié)點(diǎn)A的Working-area字段內(nèi)容添加到B的相應(yīng)信息中;同時將網(wǎng)絡(luò)成員配置表中同步目標(biāo)為數(shù)據(jù)庫節(jié)點(diǎn)A的相關(guān)數(shù)據(jù)庫節(jié)點(diǎn)的信息進(jìn)行更新,使原先同步數(shù)據(jù)庫節(jié)點(diǎn)A的數(shù)據(jù)庫節(jié)點(diǎn)現(xiàn)在能夠同步數(shù)據(jù)庫節(jié)點(diǎn)B上的相關(guān)數(shù)據(jù);當(dāng)A恢復(fù)正常,管理節(jié)點(diǎn)將先讓數(shù)據(jù)庫節(jié)點(diǎn)A與數(shù)據(jù)庫節(jié)點(diǎn)B同步,使數(shù)據(jù)庫節(jié)點(diǎn)A獲得在故障期間轉(zhuǎn)移到數(shù)據(jù)庫節(jié)點(diǎn)B上的增量數(shù)據(jù),最后修改網(wǎng)絡(luò)成員配置表, 使相關(guān)節(jié)點(diǎn)恢復(fù)對數(shù)據(jù)庫節(jié)點(diǎn)A的同步策略。
全文摘要
本發(fā)明公開了一種分布式數(shù)據(jù)庫同步系統(tǒng),包括數(shù)據(jù)庫節(jié)點(diǎn)和管理節(jié)點(diǎn),所述數(shù)據(jù)庫節(jié)點(diǎn)對外提供基于Web服務(wù)的分布式數(shù)據(jù)庫存取、更新與查詢服務(wù);各數(shù)據(jù)庫節(jié)點(diǎn)之間無主從之分,獨(dú)立擔(dān)負(fù)提供分布式數(shù)據(jù)庫服務(wù)的功能;各數(shù)據(jù)庫節(jié)點(diǎn)之間沒有直接關(guān)系,定期從管理節(jié)點(diǎn)獲取同步配置表、網(wǎng)絡(luò)成員配置表,與其它數(shù)據(jù)庫節(jié)點(diǎn)建立同步關(guān)系;各數(shù)據(jù)庫節(jié)點(diǎn)中采用基于Web服務(wù)的同步模塊,利用該同步模塊將傳統(tǒng)數(shù)據(jù)庫封裝起來,對外提供一組API接口函數(shù)。利用Web服務(wù)的SOAP協(xié)議進(jìn)行數(shù)據(jù)傳輸,能夠適應(yīng)各種復(fù)雜的異構(gòu)網(wǎng)絡(luò),解決各種傳統(tǒng)數(shù)據(jù)庫相互間數(shù)據(jù)不兼容且不能相互同步的問題。
文檔編號G06F17/30GK102693324SQ20121019066
公開日2012年9月26日 申請日期2012年6月4日 優(yōu)先權(quán)日2012年1月9日
發(fā)明者于菊珍, 王凱東, 胡繼磊 申請人:西安電子科技大學(xué)