一種數(shù)據(jù)庫同步方法、同步設(shè)備及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種數(shù)據(jù)庫同步方法、同步設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002]由于大數(shù)據(jù)和云計算的發(fā)展,在互聯(lián)網(wǎng)行業(yè)中,往往將數(shù)據(jù)庫進(jìn)行跨機房特別是異地跨機房部署,各機房的數(shù)據(jù)庫進(jìn)行鏡像或者同步,以進(jìn)行容災(zāi)備份,來防止意外事件引起的數(shù)據(jù)損失,保障業(yè)務(wù)連續(xù)性。同時,在進(jìn)行大數(shù)據(jù)分析時會遇到源數(shù)據(jù)信息分布在不同的機房數(shù)據(jù)庫中,無法進(jìn)行實時統(tǒng)一的數(shù)據(jù)分析和計算。
[0003]針對跨機房特別是異地跨機房的數(shù)據(jù)庫同步,現(xiàn)有技術(shù)中,一種方法是定時下載源數(shù)據(jù)庫的數(shù)據(jù)并且通過網(wǎng)絡(luò)傳輸在跨機房的目的數(shù)據(jù)庫上進(jìn)行同步。另一種通用方法是基于數(shù)據(jù)庫自有的同步功能,通過數(shù)據(jù)庫DML(英文全稱:data manipulat1n language,中文:數(shù)據(jù)操縱語言)/DDL(英文全稱:data definit1n language,中文:數(shù)據(jù)控制語句)變更日志解析來同步數(shù)據(jù),即每當(dāng)源機房的數(shù)據(jù)庫發(fā)生DML/DDL變更,即將該變更相關(guān)數(shù)據(jù)發(fā)送給目的機房的數(shù)據(jù)庫,由目的機房的數(shù)據(jù)庫相應(yīng)地執(zhí)行一次DML/DDL變更,以達(dá)到源機房的數(shù)據(jù)庫和目的機房的數(shù)據(jù)庫保持一致的目的。上述數(shù)據(jù)庫同步方法均是針對相同類型的跨機房數(shù)據(jù)庫之間的數(shù)據(jù)同步。
[0004]但是,在大數(shù)據(jù)分析處理領(lǐng)域中,所針對的往往是不同類型的數(shù)據(jù)庫,需要將不同類型的源機房數(shù)據(jù)庫上的數(shù)據(jù)同步到位于異地機房的大數(shù)據(jù)分析系統(tǒng)的數(shù)據(jù)庫上。目前,上述基于相同類型的跨機房數(shù)據(jù)庫的同步方法無法解決該問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實施例提供一種數(shù)據(jù)庫同步方法、同步設(shè)備及系統(tǒng),用于解決不能將不同類型的源機房的數(shù)據(jù)庫上的數(shù)據(jù)同步到目的機房的數(shù)據(jù)庫的問題。
[0006]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0007]第一方面,提供一種數(shù)據(jù)庫同步方法,應(yīng)用于至少一個源機房設(shè)備與目的機房設(shè)備之間的同步設(shè)備,包括:
[0008]同步設(shè)備模擬源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點;
[0009 ]同步設(shè)備向源機房設(shè)備發(fā)送同步請求;
[0010]同步設(shè)備接收源機房設(shè)備根據(jù)同步請求發(fā)送的同步數(shù)據(jù);
[0011 ]同步設(shè)備將同步數(shù)據(jù)發(fā)送至目的機房設(shè)備。
[0012]第二方面,提供一種同步設(shè)備,應(yīng)用于至少一個源機房設(shè)備與目的機房設(shè)備之間,包括:
[0013]處理單元,用于模擬源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點;
[0014]發(fā)送單元,用于向源機房設(shè)備發(fā)送同步請求;
[0015]接收單元,用于接收由源機房設(shè)備根據(jù)同步請求發(fā)送的同步數(shù)據(jù);
[0016]發(fā)送單元,還用于將同步數(shù)據(jù)發(fā)送至目的機房設(shè)備。
[0017]第三方面,提供一種數(shù)據(jù)庫系統(tǒng),包括:至少一個源機房設(shè)備,目的機房設(shè)備和同步設(shè)備,其中目的機房設(shè)備通過同步設(shè)備連接至至少一個源機房設(shè)備;
[0018]該同步設(shè)備為以上所述的同步設(shè)備。
[0019]本發(fā)明的實施例提供的數(shù)據(jù)庫同步方法、同步設(shè)備及系統(tǒng),通過使用設(shè)置在至少一個源機房設(shè)備與目的機房設(shè)備之間的同步設(shè)備分別模擬至少一個源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點,從而實現(xiàn)了同步設(shè)備與源機房設(shè)備的數(shù)據(jù)交互,同步設(shè)備通過同步請求獲取向源機房設(shè)備請求的同步數(shù)據(jù)后發(fā)送至目的機房設(shè)備,解決不能將不同類型的源機房的數(shù)據(jù)庫上的數(shù)據(jù)同步到目的機房的數(shù)據(jù)庫的問題。
【附圖說明】
[0020]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0021]圖1為本發(fā)明的實施例提供的一種數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)示意圖;
[0022]圖2為本發(fā)明的實施例提供的一種數(shù)據(jù)庫同步方法的流程示意圖;
[0023]圖3為本發(fā)明的實施例提供的另一種數(shù)據(jù)庫同步方法的流程示意圖;
[0024]圖4為本發(fā)明的實施例提供的一種同步設(shè)備的結(jié)構(gòu)示意圖。
【具體實施方式】
[0025]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0026]本發(fā)明在源數(shù)據(jù)庫所在的至少一個源機房設(shè)備與目的數(shù)據(jù)庫所在的目的機房設(shè)備之間添加同步設(shè)備,該同步設(shè)備根據(jù)源數(shù)據(jù)庫的業(yè)務(wù)數(shù)據(jù)類型,模擬各源數(shù)據(jù)庫的從屬節(jié)點,此時該同步設(shè)備相當(dāng)于與各源數(shù)據(jù)庫類型相同的數(shù)據(jù)庫,由同步設(shè)備向源數(shù)據(jù)庫發(fā)送同步請求用以請求同步數(shù)據(jù),源數(shù)據(jù)庫收到該同步請求后將該源數(shù)據(jù)庫的同步數(shù)據(jù)發(fā)送給同步設(shè)備,同步設(shè)備獲取同步數(shù)據(jù)之后發(fā)送給目的數(shù)據(jù)庫。其中,同步數(shù)據(jù)通常是指源數(shù)據(jù)庫的全部數(shù)據(jù)或者源數(shù)據(jù)庫的更新數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)庫是指存儲一定類型的業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫。
[0027]本發(fā)明的實施例提供一種數(shù)據(jù)庫系統(tǒng),參照圖1所示,包括至少一個源機房設(shè)備
10、同步設(shè)備20、目的機房設(shè)備30,其中,源機房設(shè)備10中存儲源數(shù)據(jù)庫,目的機房設(shè)備20中存儲目的數(shù)據(jù)庫,每一個源機房設(shè)備10均通過同步設(shè)備20與目的機房設(shè)備30連接。本發(fā)明的數(shù)據(jù)庫系統(tǒng)用于將源機房設(shè)備10中的數(shù)據(jù)庫同步至目的機房設(shè)備30中的數(shù)據(jù)庫。
[0028]本發(fā)明的實施例提供一種數(shù)據(jù)庫同步方法,應(yīng)用于上述數(shù)據(jù)庫系統(tǒng),具體參照圖2所示,包括以下步驟:
[0029]201、同步設(shè)備模擬源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點。
[0030]同步設(shè)備模擬源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點,以建立源機房設(shè)備與同步設(shè)備的主從數(shù)據(jù)庫關(guān)系,其目的在于,將同步設(shè)備偽裝成源機房設(shè)備中的數(shù)據(jù)庫的從屬節(jié)點,以利用相同類型的數(shù)據(jù)庫同步技術(shù)來獲取源數(shù)據(jù)庫的同步數(shù)據(jù)。其中,同步數(shù)據(jù)通常為:源數(shù)據(jù)庫的全部數(shù)據(jù),或者源數(shù)據(jù)庫的更新數(shù)據(jù)。
[0031]202、同步設(shè)備向源機房設(shè)備發(fā)送同步請求。
[0032 ] 203、同步設(shè)備接收源機房設(shè)備根據(jù)同步請求發(fā)送的同步數(shù)據(jù)。
[0033]由于同步設(shè)備模擬了源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點,當(dāng)源機房設(shè)備接收到來自同步設(shè)備的同步請求之后,會將該源機房設(shè)備上的數(shù)據(jù)庫的同步數(shù)據(jù)反饋給同步設(shè)備,然后由同步設(shè)備接收該同步數(shù)據(jù)。
[0034]204、同步設(shè)備將同步數(shù)據(jù)發(fā)送至目的機房設(shè)備。
[0035]上述實施例提供的數(shù)據(jù)庫同步方法,通過使用設(shè)置在至少一個源機房設(shè)備與目的機房設(shè)備之間的同步設(shè)備分別模擬至少一個源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點,從而實現(xiàn)了同步設(shè)備與源機房設(shè)備的數(shù)據(jù)交互,同步設(shè)備通過同步請求獲取向源機房設(shè)備請求的同步數(shù)據(jù)后發(fā)送至目的機房設(shè)備,解決不能將不同類型的源機房的數(shù)據(jù)庫上的數(shù)據(jù)同步到目的機房的數(shù)據(jù)庫的問題。
[0036]本發(fā)明的實施例提供了另一種數(shù)據(jù)庫同步方法,參照圖3,包括以下步驟:
[0037]301、同步設(shè)備根據(jù)源機房設(shè)備的數(shù)據(jù)庫從屬節(jié)點協(xié)議與源機房設(shè)備建立同步管道。
[0038]示例性的,在MySQL(—種關(guān)系型數(shù)據(jù)庫管理系統(tǒng))數(shù)據(jù)庫系統(tǒng)框架下,該從屬節(jié)點協(xié)議為My SQlJtlMaster-Slave (主-從)協(xié)議。
[0039]302、同步設(shè)備通過數(shù)據(jù)庫私有協(xié)議向源機房設(shè)備發(fā)送同步請求。
[0040]進(jìn)一步可選的,同步請求包括:數(shù)據(jù)庫日志文件名和對應(yīng)數(shù)據(jù)庫日志文件的起始位置(英文名稱:posit1n)信息,其中,數(shù)據(jù)庫日志文件記錄對數(shù)據(jù)發(fā)生或潛在發(fā)生更改的SQL語句,起始位置信息包括數(shù)據(jù)庫日志文件在存儲空間中的起始位置,并且其中,數(shù)據(jù)庫日志文件名和對應(yīng)數(shù)據(jù)庫日志文件的起始位置信息為同步設(shè)備從源機房設(shè)備歷次發(fā)送的同步數(shù)據(jù)中獲取,特別地,在MySQL數(shù)據(jù)庫中,數(shù)據(jù)庫日志文件為binlog文件。
[0041]303、同步設(shè)備接收源機房設(shè)備根據(jù)同步請求發(fā)送的同步數(shù)據(jù)。
[0042]具體的,該同步數(shù)據(jù)為源數(shù)據(jù)庫的更新數(shù)據(jù)產(chǎn)生的新的數(shù)據(jù)庫日志文件,特別地,在MySQL數(shù)據(jù)庫中,數(shù)據(jù)庫日志文件為binlog文件。
[0043]304、同步設(shè)備解析同步數(shù)據(jù);
[0044]步驟304中是對同步數(shù)據(jù)按照數(shù)據(jù)庫協(xié)議規(guī)則做協(xié)議解析。
[0045]305、同步設(shè)備根據(jù)配置,在解析后的同步數(shù)據(jù)中過濾出所述配置指示需要同步的整庫和/或表,并在過濾后的同步數(shù)據(jù)中增加源數(shù)據(jù)庫信息。
[0046]其中,所述源數(shù)據(jù)庫信息包括源數(shù)據(jù)庫IP(internet protocol,網(wǎng)絡(luò)互聯(lián)協(xié)議)地址、源數(shù)據(jù)庫端口號、源數(shù)據(jù)庫描述信息,所述過濾包括對庫和表的過濾。示例性的,該步驟中可以將源數(shù)據(jù)庫(database)的名稱作為同步數(shù)據(jù)的top i c。
[0047]306、同步設(shè)備將同步數(shù)據(jù)發(fā)送至目的機房設(shè)備。
[0048]由于本申請中的同步設(shè)備為在系統(tǒng)架構(gòu)中的新增設(shè)備,為提高數(shù)據(jù)傳輸?shù)陌踩院蛡鬏斝?,同步設(shè)備在將同步數(shù)據(jù)按序列化的格式打包,然后經(jīng)過加密、壓縮,將最終數(shù)據(jù)包通過專線或外網(wǎng)發(fā)送到目的機房設(shè)備。其中,示例性的步驟306中同步設(shè)備通過HTTP(hyperText transfer protocol,超文本傳輸協(xié)議)協(xié)議將同步數(shù)據(jù)發(fā)送給目的機房設(shè)備。
[0049]對于接收到的來自不同源機房設(shè)備的同步數(shù)據(jù),目的機房設(shè)備進(jìn)行如下步驟處理:
[0050]307、目的機房設(shè)備接收同步設(shè)備發(fā)送的同步數(shù)據(jù)。
[0051 ]其中,在步驟306中同步設(shè)備通過HTTP協(xié)議將同步數(shù)據(jù)發(fā)送給目的機房設(shè)備時,在步驟307具體為,目的機房通過Nginx(HTTP的反向代理服務(wù))接收同步設(shè)備發(fā)送的同步數(shù)據(jù)。
[0052]308、目的機房設(shè)備將同步數(shù)據(jù)通過同步接口層設(shè)備存儲至分布式消息中間件。
[0053]目的機房的同步代理接收同步數(shù)據(jù)后,將同步數(shù)據(jù)轉(zhuǎn)發(fā)至同步接口層設(shè)備(英文I.: sync-applicat1n programming interface,: syncapi),
備可以配置有對同步數(shù)據(jù)的路由配置,以保證同一 topic的同步數(shù)據(jù)通過同一個同步接口層設(shè)備處理。同步接口層設(shè)備將數(shù)據(jù)解密,按