本發(fā)明涉及數(shù)據(jù)庫管理,尤其涉及一種集群間數(shù)據(jù)庫實時同步的系統(tǒng)、方法、設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、隨著信息技術(shù)的快速發(fā)展,數(shù)據(jù)庫集群同步技術(shù)在確保數(shù)據(jù)一致性和實時性方面扮演著至關(guān)重要的角色。然而,現(xiàn)有的數(shù)據(jù)庫集群間同步技術(shù)在處理跨節(jié)點的實時數(shù)據(jù)同步時,常常在效率上面臨著一些挑戰(zhàn)。
2、具體來說,現(xiàn)有的數(shù)據(jù)庫集群間同步技術(shù)通常依賴于固定的同步模式和數(shù)據(jù)傳輸協(xié)議。在處理數(shù)據(jù)庫集群間數(shù)據(jù)同步問題時,業(yè)界常用的一種方法是“導(dǎo)出-導(dǎo)入”的同步方法。這種方法雖然可以保證數(shù)據(jù)的安全性,但是其效率顯然會大打折扣。
3、另一種業(yè)界常用的方法是通過對數(shù)據(jù)庫日志文件的提取、推送的方法。這種同步方法適用于大多數(shù)使用日志文件保存數(shù)據(jù)信息的數(shù)據(jù)庫,并且可以做到實時同步。但是隨著數(shù)據(jù)量的增大,這種方法逐漸顯露出一些不足之處,例如,大量的數(shù)據(jù)傳輸協(xié)議在處理大規(guī)模數(shù)據(jù)同步時可能會遇到性能瓶頸。此外,這種同步方法在數(shù)據(jù)傳播流程發(fā)生變更時往往采用單一的通信路徑,這在節(jié)點數(shù)量增多或數(shù)據(jù)流量增大的情況下,難以有效保持高性能。最后,這種同步方法在將源端數(shù)據(jù)推送至目標(biāo)端的過程中,一般會產(chǎn)生并保留一部分的緩存數(shù)據(jù)文件(例如oracle?goldengate在同步過程中產(chǎn)生的trails文件)。這部分緩存數(shù)據(jù)文件通常是專用的,即一個進程會對應(yīng)產(chǎn)生一份數(shù)據(jù)文件。如果多個同步進程根據(jù)同一個數(shù)據(jù)源進行數(shù)據(jù)同步,那么,它們就會對應(yīng)產(chǎn)生多份緩存數(shù)據(jù)文件。雖然同步平臺通常都會進行定時或定量的緩存數(shù)據(jù)清理,但是對同一個數(shù)據(jù)源的數(shù)據(jù)進行多次緩存依然會造成一定程度上的資源浪費。
技術(shù)實現(xiàn)思路
1、發(fā)明目的:本發(fā)明提供一種集群間數(shù)據(jù)庫實時同步的系統(tǒng)、方法、設(shè)備及存儲介質(zhì),通過優(yōu)化數(shù)據(jù)同步算法、增強緩存數(shù)據(jù)利用率等,實現(xiàn)了在不同數(shù)據(jù)庫節(jié)點之間快速、準(zhǔn)確且安全的數(shù)據(jù)同步。
2、技術(shù)方案:本發(fā)明所述的一種集群間數(shù)據(jù)庫實時同步的系統(tǒng),包括:采集器、執(zhí)行器和管理平臺;一個管理平臺有多個采集器,分別部署在不同的源端數(shù)據(jù)庫集群,一個管理平臺有多個執(zhí)行器。
3、進一步的,采集器檢查源端主庫的數(shù)據(jù)狀態(tài),監(jiān)控源端主庫的數(shù)據(jù)文件變更,上傳源端主庫的變更數(shù)據(jù)至執(zhí)行器。
4、進一步的,執(zhí)行器接收采集器上傳的數(shù)據(jù)流,緩存采集器上傳的數(shù)據(jù)流信息,將數(shù)據(jù)流解析成目標(biāo)端可識別的執(zhí)行命令,將執(zhí)行命令發(fā)送至目標(biāo)端主庫進行命令重放,將緩存的數(shù)據(jù)文件發(fā)送至目標(biāo)端主庫。
5、進一步的,管理平臺記錄平臺內(nèi)部各組件的狀態(tài)信息,接收外部用戶命令并給出響應(yīng),調(diào)度執(zhí)行器以達到數(shù)據(jù)同步的負(fù)載均衡。
6、相應(yīng)的,一種集群間數(shù)據(jù)庫實時同步的方法,包括如下步驟:
7、步驟1、平臺正常上線運行后,各組件進行初始化,管理平臺負(fù)責(zé)記錄平臺內(nèi)部各組件的狀態(tài)信息;
8、步驟2、主動同步模式下,采集器主動、持續(xù)地監(jiān)控源端主庫的數(shù)據(jù)文件狀態(tài)信息并進行數(shù)據(jù)提取、數(shù)據(jù)上傳,然后經(jīng)由執(zhí)行器進行數(shù)據(jù)投送;
9、步驟3、當(dāng)管理平臺檢測到某采集器的心跳停止時,那么管理平臺將會通知相應(yīng)的執(zhí)行器開始被動同步模式流程;
10、步驟4、執(zhí)行器接收到數(shù)據(jù)后,首先將該部分?jǐn)?shù)據(jù)緩存一份,接著根據(jù)配置文件的設(shè)定信息決定是否對接收到的數(shù)據(jù)進行解析;若解析,則將接收到的數(shù)據(jù)解析為執(zhí)行命令,然后將執(zhí)行命令發(fā)送給目標(biāo)端主庫進行命令重放;若不解析,則將數(shù)據(jù)文件直接發(fā)送至目標(biāo)端主庫。
11、進一步的,步驟2中,主動同步模式下,采集器主動、持續(xù)地監(jiān)控源端主庫的數(shù)據(jù)文件狀態(tài)信息并進行數(shù)據(jù)提取、數(shù)據(jù)上傳,然后經(jīng)由執(zhí)行器進行數(shù)據(jù)投送具體包括如下步驟:
12、步驟21、采集器上線后,向管理平臺發(fā)起注冊申請,管理平臺接收到注冊申請后記錄下該采集器所攜帶的源端數(shù)據(jù)庫信息,然后分配給該采集器一個內(nèi)部遞增的seq_id;
13、步驟22、執(zhí)行器上線后,向管理平臺發(fā)起注冊申請,管理平臺接收到注冊申請后記錄下該執(zhí)行器所攜帶的服務(wù)信息,然后分配給該執(zhí)行器一個內(nèi)部遞增的seq_id;
14、步驟23、首次開始同步時,采集器接收到命令,然后采集當(dāng)前源端主庫全部數(shù)據(jù)文件的數(shù)據(jù)并記錄數(shù)據(jù)的采集進度,包括已采集的持久化數(shù)據(jù)偏移量extract_offset和已采集的日志數(shù)據(jù)序列號extract_lsn,然后調(diào)用執(zhí)行器的數(shù)據(jù)上傳接口,將數(shù)據(jù)發(fā)送至執(zhí)行器,發(fā)送成功后采集器收到執(zhí)行器返回的接收進度,包括已接收的持久化數(shù)據(jù)偏移量cache_offset和已接收的日志數(shù)據(jù)序列號cache_lsn;
15、步驟24、當(dāng)采集進度與接收進度一致時,結(jié)束本輪次的數(shù)據(jù)采集上傳;否則,采集器繼續(xù)上傳增量數(shù)據(jù),直至采集進度與接收進度一致;
16、步驟25、非首次同步時,采集器會持續(xù)監(jiān)控主庫的mainest文件或其它記錄主庫數(shù)據(jù)狀態(tài)的文件;當(dāng)監(jiān)控到數(shù)據(jù)文件發(fā)生變化,采集器將自身記錄的數(shù)據(jù)采集進度和當(dāng)前源端主庫實際存儲的數(shù)據(jù)量即持久化數(shù)據(jù)偏移量offset和日志數(shù)據(jù)序列號lsn進行比對,然后進行下一步的數(shù)據(jù)提取動作;
17、步驟26、增量數(shù)據(jù)提取完成后,發(fā)送數(shù)據(jù)至執(zhí)行器,發(fā)送成功后更新數(shù)據(jù)的采集進度;當(dāng)執(zhí)行器接收到采集器上傳的數(shù)據(jù)后,首先根據(jù)數(shù)據(jù)源信息將數(shù)據(jù)緩存在磁盤的指定目錄下,記錄或更新數(shù)據(jù)源信息(采集器seq_id等)和緩存進度(已緩存的持久化數(shù)據(jù)偏移量cache_offset和已緩存的日志數(shù)據(jù)序列號cache_lsn),接著將緩存進度返回給采集器,在采集器的視角下緩存進度即接收進度。
18、進一步的,步驟3中,在被動同步模式下,執(zhí)行器模擬源端從庫的握手邏輯,向源端主庫發(fā)送一系列交互命令以建立主從連接;主從連接建立完成后,執(zhí)行器處于待機狀態(tài),等待源端主庫發(fā)送來的數(shù)據(jù);當(dāng)執(zhí)行器接收到源端主庫推送來的數(shù)據(jù)后,首先根據(jù)數(shù)據(jù)源信息將數(shù)據(jù)緩存在磁盤的指定目錄下,記錄或更新數(shù)據(jù)源信息(源端主庫的集群信息等)和緩存進度(已緩存的持久化數(shù)據(jù)偏移量cache_offset和已緩存的日志數(shù)據(jù)序列號cache_lsn)。
19、進一步的,步驟4中,在主動同步模式下,執(zhí)行器接收采集器上傳的源端主庫數(shù)據(jù);在被動同步模式下,執(zhí)行器接收源端主庫推送的數(shù)據(jù);執(zhí)行器將來自不同源端的數(shù)據(jù)標(biāo)記并分別緩存下來,緩存的數(shù)據(jù)供多個同步任務(wù)重復(fù)利用,以節(jié)省反復(fù)從源端獲取數(shù)據(jù)的資源消耗。
20、有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明具有如下顯著優(yōu)點:緩存共用機制,現(xiàn)有技術(shù)在將源端數(shù)據(jù)推送至目標(biāo)端的過程中,一般會產(chǎn)生并保留一部分的緩存數(shù)據(jù)文件。這部分緩存數(shù)據(jù)文件通常是專用的,即一個進程會對應(yīng)產(chǎn)生一份數(shù)據(jù)文件,多進程或者多任務(wù)之間無法共享緩存數(shù)據(jù)。當(dāng)新的任務(wù)有數(shù)據(jù)同步需求時,執(zhí)行端需要重新從源端數(shù)據(jù)庫獲取。本發(fā)明通過共享緩存數(shù)據(jù),有效減少了多任務(wù)情況下從源端數(shù)據(jù)庫重復(fù)獲取數(shù)據(jù)的資源消耗;多任務(wù)并行處理機制,現(xiàn)有技術(shù)在處理多任務(wù)場景時,往往由于同步組件間的配合度、負(fù)載的均衡度等原因?qū)е滦实拖?,本發(fā)明優(yōu)化了同步組件間的配合邏輯、優(yōu)化了均衡負(fù)載的方法,進而可以有效處理高數(shù)據(jù)并發(fā)、多任務(wù)并發(fā)的問題;兩種數(shù)據(jù)庫同步模式,兩種模式既可以單獨運行,也可以相互配合工作,進而具有較高的數(shù)據(jù)庫集群環(huán)境適應(yīng)度。