一種數(shù)據(jù)庫同步方法
【專利摘要】本發(fā)明實施例提供了一種數(shù)據(jù)庫同步方法,實現(xiàn)數(shù)據(jù)庫的快速安全同步。該方法用于同步多數(shù)據(jù)中心之間的數(shù)據(jù),其中每一個數(shù)據(jù)中心均包括一個第一分片調(diào)度主庫,所述第一分片調(diào)度主庫存儲數(shù)據(jù)分片的索引信息,所述數(shù)據(jù)庫同步方法包括:采用環(huán)形同步方式,逐一將每個數(shù)據(jù)中心的第一分片調(diào)度主庫都作為前一個數(shù)據(jù)中心的分片調(diào)度從庫,進行同步,直至遍歷每一個數(shù)據(jù)中心。
【專利說明】一種數(shù)據(jù)庫同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,特別涉及一種數(shù)據(jù)庫同步方法。
技術(shù)背景
[0002]現(xiàn)有技術(shù)中關(guān)系型數(shù)據(jù)庫之間的同步以主、從同步為主。主從同步方式只能由主庫向從庫同步,不能由從庫向主庫寫數(shù)據(jù)。多數(shù)據(jù)中心情況下,每個數(shù)據(jù)中心之間的數(shù)據(jù)庫同步也是主從模式,因此通常采用由一個主數(shù)據(jù)中心生產(chǎn)數(shù)據(jù)向多個從數(shù)據(jù)中心進行數(shù)據(jù)同步,這種方式從數(shù)據(jù)中心獲取數(shù)據(jù)的延時較大,用戶寫入的數(shù)據(jù)往往不能被馬上讀取到,影響用戶體驗。
【發(fā)明內(nèi)容】
[0003]有鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)庫同步方法,實現(xiàn)數(shù)據(jù)庫的快速安全同步。
[0004]為了達到上述目的,本發(fā)明實施例提供的一種數(shù)據(jù)庫同步方法,用于同步多數(shù)據(jù)中心之間的數(shù)據(jù),其中每一個數(shù)據(jù)中心均包括一個第一分片調(diào)度主庫,所述第一分片調(diào)度主庫存儲數(shù)據(jù)分片的索引信息,所述數(shù)據(jù)庫同步方法包括:
[0005]采用環(huán)形同步方式,逐一將每個數(shù)據(jù)中心的第一分片調(diào)度主庫都作為前一個數(shù)據(jù)中心的分片調(diào)度從庫,進行同步,直至遍歷每一個數(shù)據(jù)中心。
[0006]采用多數(shù)據(jù)中心生產(chǎn)數(shù)據(jù)的方式,同時利用環(huán)形同步的方式對多個數(shù)據(jù)中心數(shù)據(jù)進行同步,多個數(shù)據(jù)中心之間不是單純的由主數(shù)據(jù)中心向從數(shù)據(jù)中心同步的過程,而是每個數(shù)據(jù)中心都生產(chǎn)數(shù)據(jù),每個數(shù)據(jù)中心也都接受數(shù)據(jù)。而在這種模式下,用戶可以在每個數(shù)據(jù)中心都能讀、寫數(shù)據(jù),所以不會有延遲的問題。
【專利附圖】
【附圖說明】
[0007]圖1所示為本發(fā)明一實施例數(shù)據(jù)庫同步方法的示意圖。
[0008]圖2所示為本發(fā)明一實施例數(shù)據(jù)庫同步方法的示意圖。
【具體實施方式】
[0009]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明作進一步的詳細描述。
[0010]圖1所示為本發(fā)明一實施例數(shù)據(jù)庫同步方法的示意圖。如圖1所示,
[0011]在多數(shù)據(jù)中心生產(chǎn)數(shù)據(jù)的情況下,以四個數(shù)據(jù)中心A、B、C、D為例說明,每個數(shù)據(jù)中心有多組主從數(shù)據(jù)庫分片節(jié)點(圖示中的Master和Slave)構(gòu)成,每個數(shù)據(jù)庫只存儲每個數(shù)據(jù)中心的一部分數(shù)據(jù),分片調(diào)度庫(圖示中的Convert Master I,Convert Master 2以及Convert Slave),又稱分片索引庫,存儲數(shù)據(jù)分片的索引信息,包括被分片的數(shù)據(jù)ID以及存儲該條數(shù)據(jù)在數(shù)據(jù)庫節(jié)點信息。
[0012]當需要對多個數(shù)據(jù)中心的數(shù)據(jù)進行同步時,采用環(huán)形復(fù)制方式,將每個數(shù)據(jù)中心的主庫都作為前一個數(shù)據(jù)中心的從庫,同時單個數(shù)據(jù)中心內(nèi)的Convert Master I和Convert Master 2互為備份,以保證整個環(huán)形復(fù)制的正常運轉(zhuǎn)。
[0013]具體來說,當A、B、C、D多個數(shù)據(jù)中心需要進行數(shù)據(jù)同步時,首先同步數(shù)據(jù)中心A和B,即將數(shù)據(jù)由數(shù)據(jù)中心A同步到數(shù)據(jù)中心B ;而后將數(shù)據(jù)中心B同步到數(shù)據(jù)中心C,將數(shù)據(jù)中心C同步到數(shù)據(jù)中心D,最后將數(shù)據(jù)中心D同步到數(shù)據(jù)中心A。在此環(huán)形同步過程中,可以是每個同步數(shù)據(jù)中心的Convert Master I或Convert Master 2任意一個參與同步,t匕如可以是將數(shù)據(jù)中心A的Convert Master I同步到數(shù)據(jù)中心B的Convert Master 2,而將數(shù)據(jù)中心B的Convert Master 2同步到數(shù)據(jù)中心C的Convert Master 2。
[0014]同時,在每個數(shù)據(jù)中心內(nèi)部,每當該數(shù)據(jù)中心完成與其它數(shù)據(jù)中心的同步后,即將參與環(huán)形同步的Convert Master中的數(shù)據(jù)寫入到未參與環(huán)形同步的Convert Master中,兩個Convert Master庫互為備份,形成高可用架構(gòu),一旦參與環(huán)形同步的Convert Master庫出問題,可以切換至另一個Convert Master,保證整個環(huán)形復(fù)制的正常運轉(zhuǎn)。
[0015]圖2所示為本發(fā)明一實施例數(shù)據(jù)庫同步系統(tǒng)示意圖。在圖2中,在關(guān)系型數(shù)據(jù)庫的基礎(chǔ)上引用了分布式數(shù)據(jù)庫。采用關(guān)系型數(shù)據(jù)庫和分布式數(shù)據(jù)庫同時保存生產(chǎn)數(shù)據(jù),協(xié)同工作,以構(gòu)建云存儲環(huán)境下的數(shù)據(jù)庫系統(tǒng)。在多數(shù)據(jù)中心情況下,采用如圖1所示的環(huán)形同步方式對關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)進行同步,再由關(guān)系型數(shù)據(jù)庫同步至本地分布式數(shù)據(jù)庫,來保證每個數(shù)據(jù)中心分布式數(shù)據(jù)庫的數(shù)據(jù)一致。
[0016]具體來說,獲取對關(guān)系型數(shù)據(jù)庫的所有操作包括增、刪、改、事務(wù)提交、事務(wù)回滾等,轉(zhuǎn)換為關(guān)系型數(shù)據(jù)庫相應(yīng)的sql ;
[0017]將關(guān)系型數(shù)據(jù)庫的sql轉(zhuǎn)換為分布式數(shù)據(jù)庫的相應(yīng)執(zhí)行語句;具體轉(zhuǎn)換哪種語句取決于分布式數(shù)據(jù)庫的類型;
[0018]將轉(zhuǎn)換后的語句寫入一個二進制文件,可標記為transfer log ;
[0019]分布式數(shù)據(jù)庫直接讀取transfer log中所要執(zhí)行的操作語句,并在分布式數(shù)據(jù)庫中執(zhí)行相應(yīng)的操作。
[0020]利用此方法,可解決關(guān)系數(shù)據(jù)庫和分布式數(shù)據(jù)庫的數(shù)據(jù)一致性問題。同步數(shù)據(jù)后由關(guān)系型數(shù)據(jù)庫處理單庫、單表等實時性要求很高的查詢,由分布式數(shù)據(jù)庫處理跨表、跨庫的統(tǒng)計和查詢,這樣可以充分利用分布式數(shù)據(jù)庫高擴展性、高性能查詢大數(shù)據(jù)量的特點,最大限度的彌補關(guān)系型數(shù)據(jù)庫跨表查詢效率低的缺點。
[0021]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)庫同步方法,用于同步多數(shù)據(jù)中心之間的數(shù)據(jù),其中每一個數(shù)據(jù)中心均包括一個第一分片調(diào)度主庫,所述第一分片調(diào)度主庫存儲數(shù)據(jù)分片的索引信息,所述數(shù)據(jù)庫同步方法包括: 采用環(huán)形同步方式,逐一將每個數(shù)據(jù)中心的第一分片調(diào)度主庫都作為前一個數(shù)據(jù)中心的分片調(diào)度從庫,進行同步,直至遍歷每一個數(shù)據(jù)中心。
2.如權(quán)利要求1所述的方法,其特征在于,每個數(shù)據(jù)中心還進一步包括第二個分片調(diào)度主庫,當所述數(shù)據(jù)中心完成與其它數(shù)據(jù)中心的同步后,所述方法進一步包括: 將所述第一分片調(diào)度主庫的數(shù)據(jù)寫入到所述第二個分片調(diào)度主庫。
3.如權(quán)利要求1所述的方法,其特征在于,進一步包括:在所述數(shù)據(jù)中心完成與其它數(shù)據(jù)中心的同步的過程中,當所述第一分片調(diào)度主庫無法工作時,所述方法進一步包括: 切換至所述第二分片調(diào)度主庫。
4.如權(quán)利要求1所述的方法,其特征在于,所述多數(shù)據(jù)中心由關(guān)系型數(shù)據(jù)庫構(gòu)成。
5.如權(quán)利要求4所述的方法,其特征在于,進一步包括:將每個數(shù)據(jù)中心的所述關(guān)系型數(shù)據(jù)庫同步至本地分布式數(shù)據(jù)庫。
6.如權(quán)利要求5所述的方法,其特征在于,所述將關(guān)系型數(shù)據(jù)庫同步至本地分布式數(shù)據(jù)庫包括: 獲取對關(guān)系型數(shù)據(jù)庫的所有操作,將所述操作轉(zhuǎn)換為關(guān)系型數(shù)據(jù)庫的sql ; 將關(guān)系型數(shù)據(jù)庫的sql轉(zhuǎn)換為分布式數(shù)據(jù)庫的相應(yīng)執(zhí)行語句; 將轉(zhuǎn)換后的語句寫入一個二進制文件; 分布式數(shù)據(jù)庫直接讀取所述二進制文件中所要執(zhí)行的操作語句,并在分布式數(shù)據(jù)庫中執(zhí)行相應(yīng)的操作。
【文檔編號】G06F17/30GK103853748SQ201210505159
【公開日】2014年6月11日 申請日期:2012年11月29日 優(yōu)先權(quán)日:2012年11月29日
【發(fā)明者】邢浩, 金友兵 申請人:天津書生投資有限公司