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