一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng)的制作方法【專利摘要】本發(fā)明公開了一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其包括有管理平臺、掃描引擎和執(zhí)行引擎,其中:所述管理平臺用于對掃描引擎和執(zhí)行引擎進(jìn)行操控;所述掃描引擎用于根據(jù)用戶在管理平臺的配置,到源數(shù)據(jù)庫訂閱指定表中指定字段的變化數(shù)據(jù);所述執(zhí)行引擎用于將掃描引擎掃描到的變化數(shù)據(jù)同步到指定的目標(biāo)數(shù)據(jù)庫。本發(fā)明解決了大量日志文件在網(wǎng)絡(luò)間傳遞帶來的消耗,提供了個性化地訂閱自己需要的變化數(shù)據(jù),并且屏蔽了各種數(shù)據(jù)庫協(xié)議的差別,支持同步到多種類型的目標(biāo)數(shù)據(jù)庫,包括MYSQL、DB2、oracle等?!緦@f明】一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng)
技術(shù)領(lǐng)域:
[0001]本發(fā)明涉及數(shù)據(jù)同步系統(tǒng),尤其涉及一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng)。【
背景技術(shù):
】[0002]由于電信系統(tǒng)的交易數(shù)據(jù)量非常龐大,并且單個oracle數(shù)據(jù)庫難于承受這么大的數(shù)據(jù)交易量,所以為了提高性能,通常會部署成分布式數(shù)據(jù)庫,即在不同機(jī)房部署多個數(shù)據(jù)庫,按省份或者地市進(jìn)行分配。這樣勢必會導(dǎo)致某些存在于各個數(shù)據(jù)庫表的數(shù)據(jù)存在差異性。為了保證這些表在不同數(shù)據(jù)庫之間的一致性或者能夠在某個數(shù)據(jù)庫備份另外一個數(shù)據(jù)庫某些表的數(shù)據(jù),需要一種數(shù)據(jù)同步技術(shù)達(dá)到在不同數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)同步的目的。[0003]在現(xiàn)有技術(shù)中,GoldenGate是一種基于于日志的結(jié)構(gòu)化數(shù)據(jù)復(fù)制方式,它通過解析源數(shù)據(jù)庫在線日志或歸檔日志獲得數(shù)據(jù)的增刪改變化,再將這些變化應(yīng)用到目標(biāo)數(shù)據(jù)庫,實現(xiàn)源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫同步、雙活。這種同步技術(shù)有以下問題:首先數(shù)據(jù)庫日志需要在網(wǎng)絡(luò)之間通過TCP/IP進(jìn)行網(wǎng)絡(luò)傳輸,對帶寬要求高。其次,需要同時在源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫安裝部署配套的goldengate,操作繁瑣。此外,對于整個數(shù)據(jù)復(fù)制過程沒有很好的監(jiān)控平臺,復(fù)制出錯的話需要人為去查看源端或者目標(biāo)端的日志來定位問題。再次,無法做個個性化同步,因為某些目標(biāo)數(shù)據(jù)庫可能只需要同步其中幾張表的數(shù)據(jù)而不是同步全部表數(shù)據(jù),而商業(yè)版相對于oracle是獨(dú)立收費(fèi)的,需要支付額外的費(fèi)用。【
發(fā)明內(nèi)容】[0004]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的不足,提供一種能夠在不同數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)同步的系統(tǒng)。[0005]為解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案。[0006]—種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其包括有管理平臺、掃描引擎和執(zhí)行引擎,其中:所述管理平臺用于對掃描引擎和執(zhí)行引擎進(jìn)行操控;所述掃描引擎用于根據(jù)用戶在管理平臺的配置,到源數(shù)據(jù)庫訂閱指定表中指定字段的變化數(shù)據(jù);所述執(zhí)行引擎用于將掃描引擎掃描到的變化數(shù)據(jù)同步到指定的目標(biāo)數(shù)據(jù)庫。[0007]進(jìn)一步地,在利用sql腳本文件作為交互方式的條件下,當(dāng)所述掃描引擎掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)按照順序生成一條條可執(zhí)行的sql語句并保存到sql文件中,再將所述sql文件保存到用戶配置的指定目錄。[0008]進(jìn)一步地,包括有臨時目錄,并且當(dāng)所述掃描引擎掃描到一批變化數(shù)據(jù)時,將這些變化數(shù)據(jù)按順序在臨時目錄生成一個獨(dú)立的sql文件,所述sql文件生成完之后再移動到用戶配置的指定目錄。[0009]進(jìn)一步地,所述執(zhí)行引擎定時到指定目錄掃描是否有可執(zhí)行的sql文件生成,若有,則讀取sql文件的sql語句,然后將所述sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。[0010]進(jìn)一步地,在利用消息中間件作為交互方式的條件下,所述掃描引擎掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)生成一條條可執(zhí)行的sql語句并發(fā)送到消息中間件的隊列中。[0011]進(jìn)一步地,所述執(zhí)行引擎定時到消息中間件的隊列中獲取消息,若獲取到消息,則將消息中的sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。[0012]進(jìn)一步地,所述目標(biāo)數(shù)據(jù)庫為Mysql、DB2、SQLSERVER或oracle數(shù)據(jù)庫。[0013]本發(fā)明相比現(xiàn)有技術(shù)而言的有益效果在于,首先,本發(fā)明只捕獲需要同步的表的變化數(shù)據(jù),并且每個目標(biāo)數(shù)據(jù)庫可以根據(jù)需要個性化訂閱某個表的某些字段的變化數(shù)據(jù),甚至可以有選擇地同步某些dml操作;其次,在不同類型的數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)同步,如可支持DB2、MYSQL、SQLSERVER等流行數(shù)據(jù)庫;此外,通過配置中心可以進(jìn)行可視化的配置,無需登錄到數(shù)據(jù)庫機(jī)器進(jìn)行配置,方便快捷。本發(fā)明無需在目標(biāo)數(shù)據(jù)庫進(jìn)行任何配置或者安裝其他工具,只需要部署一個數(shù)據(jù)同步系統(tǒng)作為中間層程序即可,同時無需在源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫之間傳遞日志文件,較好地實現(xiàn)了在不同數(shù)據(jù)庫之間實現(xiàn)數(shù)據(jù)同步?!靖綀D說明】[0014]圖1為本發(fā)明數(shù)據(jù)同步系統(tǒng)的組成框圖?!揪唧w實施方式】[0015]下面結(jié)合附圖和實施例對本發(fā)明作更加詳細(xì)的描述。[0016]本發(fā)明公開了一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),如圖1所示,其包括有管理平臺1、掃描引擎2和執(zhí)行引擎3,其中:[0017]所述管理平臺I用于對掃描引擎2和執(zhí)行引擎3進(jìn)行操控;[0018]所述掃描引擎2用于根據(jù)用戶在管理平臺I的配置,到源數(shù)據(jù)庫訂閱指定表中指定字段的變化數(shù)據(jù);[0019]所述執(zhí)行引擎3用于將掃描引擎2掃描到的變化數(shù)據(jù)同步到指定的目標(biāo)數(shù)據(jù)庫。[0020]本發(fā)明根據(jù)交互方式的不同,有如下實施例:[0021]實施例1[0022]在利用sql腳本文件作為交互方式的條件下,當(dāng)所述掃描引擎2掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)按照順序生成一條條可執(zhí)行的sql語句并保存到sql文件中,再將所述sql文件保存到用戶配置的指定目錄。[0023]本實施例中,系統(tǒng)包括有臨時目錄,并且當(dāng)所述掃描引擎2掃描到一批變化數(shù)據(jù)時,將這些變化數(shù)據(jù)按順序在臨時目錄生成一個獨(dú)立的sql文件,所述sql文件生成完之后再移動到用戶配置的指定目錄。通過上述方式可以避免sql文件還沒有生成完成就被執(zhí)行引擎3執(zhí)行的問題,同時,還可以避免添加文件鎖。[0024]所述執(zhí)行引擎3定時到指定目錄掃描是否有可執(zhí)行的sql文件生成,若有,則讀取sql文件的sql語句,然后將所述sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。[0025]實施例2[0026]在利用消息中間件作為交互方式的條件下,所述掃描引擎2掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)生成一條條可執(zhí)行的sql語句并發(fā)送到消息中間件的隊列中。所述執(zhí)行引擎3定時到消息中間件的隊列中獲取消息,若獲取到消息,則將消息中的sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。[0027]使用消息中間件作為交互方式可以將掃描引擎和執(zhí)行引擎完全解耦,達(dá)到異步。掃描引擎和執(zhí)行引擎可以部署到不同的機(jī)器,要求另外部署消息中間件作為支撐。[0028]上述實施例中,所述目標(biāo)數(shù)據(jù)庫包括但不限于Mysql、DB2、SQLSERVER或oracIe數(shù)據(jù)庫。[0029]本發(fā)明在運(yùn)行過程中,通過開啟oracle源數(shù)據(jù)庫的changedatacapture組件的功能列表進(jìn)行變化日志的捕獲并保存到changtable里,由同步程序作為訂閱者去訂閱changtable的數(shù)據(jù),獲取到變化數(shù)據(jù)后生成可執(zhí)行的sql腳本文件,并直接在不同類型的目標(biāo)數(shù)據(jù)庫執(zhí)行這些sql腳本文件從而達(dá)到數(shù)據(jù)同步的目的,本發(fā)明解決了大量日志文件在網(wǎng)絡(luò)間傳遞帶來的消耗,提供了個性化地訂閱自己需要的變化數(shù)據(jù),并且屏蔽了各種數(shù)據(jù)庫協(xié)議的差別,支持同步到多種類型的目標(biāo)數(shù)據(jù)庫,包括MYSQL、DB2、oracIe等。此外,本發(fā)明還配備了配置中心和監(jiān)控中心,從而實現(xiàn)配置簡單方便、監(jiān)控同步數(shù)據(jù)量、失敗重做等功能。[0030]以上所述只是本發(fā)明較佳的實施例,并不用于限制本發(fā)明,凡在本發(fā)明的技術(shù)范圍內(nèi)所做的修改、等同替換或者改進(jìn)等,均應(yīng)包含在本發(fā)明所保護(hù)的范圍內(nèi)?!局鳈?quán)項】1.一種分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,包括有管理平臺(I)、掃描引擎(2)和執(zhí)行引擎(3),其中:所述管理平臺(I)用于對掃描引擎(2)和執(zhí)行引擎(3)進(jìn)行操控;所述掃描引擎(2)用于根據(jù)用戶在管理平臺(I)的配置,到源數(shù)據(jù)庫訂閱指定表中指定字段的變化數(shù)據(jù);所述執(zhí)行引擎(3)用于將掃描引擎(2)掃描到的變化數(shù)據(jù)同步到指定的目標(biāo)數(shù)據(jù)庫。2.如權(quán)利要求1所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,在利用sql腳本文件作為交互方式的條件下,當(dāng)所述掃描引擎(2)掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)按照順序生成一條條可執(zhí)行的sql語句并保存到sql文件中,再將所述sql文件保存到用戶配置的指定目錄。3.如權(quán)利要求2所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,包括有臨時目錄,并且當(dāng)所述掃描引擎(2)掃描到一批變化數(shù)據(jù)時,將這些變化數(shù)據(jù)按順序在臨時目錄生成一個獨(dú)立的sql文件,所述sql文件生成完之后再移動到用戶配置的指定目錄。4.如權(quán)利要求3所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,所述執(zhí)行引擎(3)定時到指定目錄掃描是否有可執(zhí)行的sql文件生成,若有,則讀取sql文件的sql語句,然后將所述sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。5.如權(quán)利要求1所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,在利用消息中間件作為交互方式的條件下,所述掃描引擎(2)掃描到變化數(shù)據(jù)后,將變化數(shù)據(jù)生成一條條可執(zhí)行的sql語句并發(fā)送到消息中間件的隊列中。6.如權(quán)利要求5所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,所述執(zhí)行引擎(3)定時到消息中間件的隊列中獲取消息,若獲取到消息,則將消息中的sql語句逐條向目標(biāo)數(shù)據(jù)庫執(zhí)行,進(jìn)而實現(xiàn)數(shù)據(jù)同步。7.如權(quán)利要求1至6任一項所述的分布式數(shù)據(jù)庫間數(shù)據(jù)同步系統(tǒng),其特征在于,所述目標(biāo)數(shù)據(jù)庫為Mysq1、DB2、SQLSERVER或oracIe數(shù)據(jù)庫。【文檔編號】G06F17/30GK105824865SQ201510905939【公開日】2016年8月3日【申請日】2015年12月9日【發(fā)明人】馬仲文,鐘堅,廖小文,曹建平【申請人】廣東億迅科技有限公司