一種數(shù)據(jù)庫同步的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,特別涉及一種數(shù)據(jù)庫同步的方法、裝置及系統(tǒng)。其中,同步方法,包括:設(shè)置一獨立于主數(shù)據(jù)庫和備數(shù)據(jù)庫的同步裝置,并使同步裝置分別與主數(shù)據(jù)庫和備數(shù)據(jù)庫通訊;同步裝置向主數(shù)據(jù)庫發(fā)送同步請求;主數(shù)據(jù)庫響應(yīng)同步請求并將主數(shù)據(jù)庫的同步日志發(fā)送給同步裝置;同步裝置解析同步日志并捕獲主數(shù)據(jù)庫的數(shù)據(jù)變化信息;同步裝置將捕獲的數(shù)據(jù)變化信息傳送給備數(shù)據(jù)庫,并根據(jù)數(shù)據(jù)變化信息將主備數(shù)據(jù)庫進行數(shù)據(jù)同步。通過本發(fā)明的同步裝置,即使主數(shù)據(jù)庫在同步過程中發(fā)生崩潰,由于記錄其數(shù)據(jù)變化信息的同步日志已經(jīng)保存于同步裝置,從而數(shù)據(jù)備份不依賴于主數(shù)據(jù)庫的運行狀態(tài),備數(shù)據(jù)庫能夠根據(jù)該同步日志零損失的進行數(shù)據(jù)同步。
【專利說明】一種數(shù)據(jù)庫同步的方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,特別涉及一種數(shù)據(jù)庫同步的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]越來越多的企業(yè)使用諸如MySql開源數(shù)據(jù)庫之類的數(shù)據(jù)庫產(chǎn)品進行數(shù)據(jù)存儲和應(yīng)用。在磁盤出現(xiàn)故障的情況下,MySql數(shù)據(jù)庫的數(shù)據(jù)將會丟失。為了避免上述情況的發(fā)生,一般通過搭建MySql復(fù)制的方式異步的將數(shù)據(jù)同步到另外的服務(wù)器,這種辦法一定程度上能夠保證數(shù)據(jù)不完全丟失,但其缺陷在于:由于重做日志或者二進制日志數(shù)據(jù)還在內(nèi)存中,MySql數(shù)據(jù)庫在崩潰的時候,無法將這些數(shù)據(jù)持久化,異步的復(fù)制無法保證MySql的數(shù)據(jù)完整的全部同步到了另外一臺服務(wù)器,不能做到零丟失。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的發(fā)明目的在于提供一種數(shù)據(jù)庫同步的方法、裝置及系統(tǒng),使數(shù)據(jù)備份不依賴于主數(shù)據(jù)庫的運行狀態(tài),來達到同步過程中數(shù)據(jù)的零損失。
[0004]根據(jù)本發(fā)明的一個方面,本發(fā)明提供一種數(shù)據(jù)庫的同步方法,包括:
[0005]設(shè)置一獨立于主數(shù)據(jù)庫和備數(shù)據(jù)庫的同步裝置,并使所述同步裝置分別與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫通訊;
[0006]所述同步裝置向所述主數(shù)據(jù)庫發(fā)送同步請求;
[0007]所述主數(shù)據(jù)庫響應(yīng)所述同步請求并將主數(shù)據(jù)庫的同步日志發(fā)送給所述同步裝置,所述同步日志記載所述主數(shù)據(jù)庫的數(shù)據(jù)變化信息;
[0008]所述同步裝置解析所述同步日志并捕獲所述主數(shù)據(jù)庫的所述數(shù)據(jù)變化信息;
[0009]所述同步裝置將捕獲的所述數(shù)據(jù)變化信息傳送給所述備數(shù)據(jù)庫,并根據(jù)所述數(shù)據(jù)變化信息將所述備數(shù)據(jù)庫與所述主數(shù)據(jù)庫進行數(shù)據(jù)同步。
[0010]優(yōu)選地,在所述同步裝置解析所述同步日志的步驟中:
[0011]若所述同步裝置初次解析所述同步日志,則獲取所述同步日志的初始位置;
[0012]若所述同步裝置再次解析所述同步日志,則獲取上一次解析所述同步日志成功的位置。
[0013]優(yōu)選地,在所述數(shù)據(jù)同步過程中,所述備數(shù)據(jù)進行阻塞操作直到數(shù)據(jù)庫同步成功。
[0014]優(yōu)選地,在所述數(shù)據(jù)同步完成后,更新所述備數(shù)據(jù)庫的同步日志。
[0015]優(yōu)選地,當(dāng)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫為不同通訊協(xié)議的數(shù)據(jù)庫時,所述同步裝置與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別通訊來實現(xiàn)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫的通訊連接。
[0016]根據(jù)本發(fā)明的另一個方面,本發(fā)明提供一種同步裝置,包括:
[0017]通訊模塊,與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別連接并通訊;
[0018]控制模塊,與所述通訊模塊通訊并控制所述通訊模塊向所述主數(shù)據(jù)庫發(fā)送同步請求;
[0019]協(xié)議解析模塊,與所述通訊模塊通訊并接收所述主數(shù)據(jù)庫發(fā)送給所述同步裝置的同步日志并進行解析,所述協(xié)議解析模塊將捕獲的所述同步日志反映的數(shù)據(jù)變化信息發(fā)送給數(shù)據(jù)存儲模塊;
[0020]數(shù)據(jù)存儲模塊,根據(jù)所述數(shù)據(jù)變化信息將所述備數(shù)據(jù)庫與所述主數(shù)據(jù)庫進行數(shù)據(jù)同步。
[0021]優(yōu)選地,同步裝置還包括:
[0022]判斷模塊,判斷所述同步裝置是否是初次解析所述同步日志,若是則獲取所述同步日志的初始位置;若否則獲取上一次解析所述同步日志成功的位置
[0023]優(yōu)選地,同步裝置還包括:
[0024]阻塞操作模塊,在所述數(shù)據(jù)同步過程中,所述阻塞操作模塊對所述備數(shù)據(jù)庫進行阻塞操作來使數(shù)據(jù)庫同步成功。
[0025]優(yōu)選地,同步裝置還包括:
[0026]同步日志更新模塊,在所述數(shù)據(jù)同步完成后,所述同步日志更新模塊更新所述備數(shù)據(jù)庫的同步日志。
[0027]優(yōu)選地,同步裝置還包括:
[0028]通訊協(xié)議轉(zhuǎn)換模塊,與所述通訊模塊連接,當(dāng)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫為不同通訊協(xié)議的數(shù)據(jù)庫時,所述通訊協(xié)議轉(zhuǎn)換模塊與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別通訊來實現(xiàn)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫的通訊連接。
[0029]根據(jù)本發(fā)明的再一個方面,本發(fā)明提供一種數(shù)據(jù)庫的同步系統(tǒng),包括主數(shù)據(jù)庫、備數(shù)據(jù)庫以及上述技術(shù)方案之一所述的與所述主數(shù)據(jù)庫、所述備數(shù)據(jù)庫分別連接的同步裝置。
[0030]本發(fā)明具有以下技術(shù)效果:
[0031]本發(fā)明數(shù)據(jù)庫同步的方法、裝置及系統(tǒng)具有獨立于主數(shù)據(jù)庫和備數(shù)據(jù)庫的同步裝置,同步裝置接收主數(shù)據(jù)庫的同步日志并根據(jù)該同步日志捕獲主數(shù)據(jù)庫的數(shù)據(jù)變化信息。同步裝置將捕獲的數(shù)據(jù)變化信息傳送給備數(shù)據(jù)庫,并根據(jù)數(shù)據(jù)變化信息將備數(shù)據(jù)庫與主數(shù)據(jù)庫進行數(shù)據(jù)同步。通過本發(fā)明的同步裝置,即使主數(shù)據(jù)庫在同步過程中發(fā)生崩潰,由于記錄其數(shù)據(jù)變化信息的同步日志已經(jīng)保存于同步裝置,從而數(shù)據(jù)備份不依賴于主數(shù)據(jù)庫的運行狀態(tài),備數(shù)據(jù)庫能夠根據(jù)該同步日志零損失的進行數(shù)據(jù)同步。
[0032]本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
[0033]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
【專利附圖】
【附圖說明】
[0034]附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0035]圖1為本發(fā)明一個實施例的數(shù)據(jù)庫的同步方法的步驟流程圖;
[0036]圖2為本發(fā)明一個實施例的同步裝置的系統(tǒng)組成圖,該圖還表示了同步裝置與主數(shù)據(jù)庫和備數(shù)據(jù)庫的連接關(guān)系。
[0037]圖3為本發(fā)明一個實施例的數(shù)據(jù)庫的同步系統(tǒng)的系統(tǒng)組成圖。
【具體實施方式】
[0038]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0039]圖1為本發(fā)明一個實施例的數(shù)據(jù)庫的同步方法的步驟流程圖,如圖1所示,本發(fā)明的數(shù)據(jù)庫的同步方法包括如下步驟:
[0040]步驟100,設(shè)置獨立的同步裝置。在該步驟中,設(shè)置一獨立于主數(shù)據(jù)庫10和備數(shù)據(jù)庫20的同步裝置,并使該同步裝置分別與主數(shù)據(jù)庫10和備數(shù)據(jù)庫20通訊。
[0041]步驟200,同步裝置發(fā)出同步請求。在該步驟中,同步裝置向主數(shù)據(jù)庫10發(fā)送同步請求。
[0042]步驟300,主數(shù)據(jù)庫10的同步日志發(fā)送給同步裝置。在該步驟中,主數(shù)據(jù)庫10響應(yīng)同步請求并將主數(shù)據(jù)庫10的同步日志發(fā)送給同步裝置,該同步日志記載主數(shù)據(jù)庫10的數(shù)據(jù)變化信息。
[0043]步驟400,解析主數(shù)據(jù)庫10的同步日志。在該步驟中,同步裝置解析該同步日志并捕獲主數(shù)據(jù)庫10的數(shù)據(jù)變化信息。
[0044]步驟500,數(shù)據(jù)庫同步。在該步驟中,同步裝置將捕獲的數(shù)據(jù)變化信息傳送給備數(shù)據(jù)庫20,并根據(jù)數(shù)據(jù)變化信息將備數(shù)據(jù)庫20與主數(shù)據(jù)庫10進行數(shù)據(jù)同步。
[0045]在本發(fā)明的數(shù)據(jù)庫的同步方法中,由于設(shè)置了獨立于主數(shù)據(jù)庫10和備數(shù)據(jù)庫20的同步裝置,即使主數(shù)據(jù)庫10在同步過程中發(fā)生崩潰,由于記錄其數(shù)據(jù)變化信息的同步日志已經(jīng)保存于同步裝置,從而數(shù)據(jù)備份不依賴于主數(shù)據(jù)庫10的運行狀態(tài),備數(shù)據(jù)庫20能夠根據(jù)該同步日志零損失的進行數(shù)據(jù)同步。
[0046]在一個優(yōu)選實施例中,在同步裝置解析主數(shù)據(jù)庫10的同步日志的步驟中:若同步裝置初次解析主數(shù)據(jù)庫10的同步日志,則獲取主數(shù)據(jù)庫10的同步日志的初始位置;若同步裝置再次解析主數(shù)據(jù)庫10的同步日志,則獲取上一次解析主數(shù)據(jù)庫10的同步日志成功的位置??梢钥闯觯诔晒馕鲋鲾?shù)據(jù)庫10的同步日志后,同步裝置會記錄主數(shù)據(jù)庫10的同步日志該處的位置。當(dāng)再次解析主數(shù)據(jù)庫10的同步日志時,同步裝置不必在從該同步日志上從頭開始解析,而只需從上次解析成功處進行解析即可,從而減少了再次解析該同步日志的時間,有利于主備數(shù)據(jù)庫20之間數(shù)據(jù)的快速同步。
[0047]阻塞操作是指,在執(zhí)行設(shè)備操作時,若不滿足操作條件,則進程掛起直到滿足可操作的條件再進行操作。在本發(fā)明的一個實施例中,在數(shù)據(jù)同步過程時,備數(shù)據(jù)進行阻塞操作來進一步確保數(shù)據(jù)庫能夠同步成功。
[0048]在本發(fā)明數(shù)據(jù)庫的同步方法的另一個優(yōu)選實施例中,當(dāng)在數(shù)據(jù)同步完成后,更新備數(shù)據(jù)庫20的同步日志。該步驟使數(shù)據(jù)同步完成后的備數(shù)據(jù)庫20的數(shù)據(jù)變化信息與備數(shù)據(jù)庫20的同步日志記載的信息相適應(yīng)。
[0049]在本發(fā)明數(shù)據(jù)庫的同步方法的再一個優(yōu)選實施例中,若主數(shù)據(jù)庫10和備數(shù)據(jù)庫20為不同通訊協(xié)議的數(shù)據(jù)庫,如主數(shù)據(jù)庫10為MySql數(shù)據(jù)庫,備數(shù)據(jù)庫20為Oracle數(shù)據(jù)庫。此時在同步裝置中設(shè)有一個翻譯模塊,通過該翻譯模塊來使來自主數(shù)據(jù)庫10和備數(shù)據(jù)庫20的信息能夠被對方閱讀。這樣,在主數(shù)據(jù)庫10和備數(shù)據(jù)庫20為不同通訊協(xié)議的數(shù)據(jù)庫時,同步裝置與主數(shù)據(jù)庫10和備數(shù)據(jù)庫20分別通訊來實現(xiàn)主數(shù)據(jù)庫10和備數(shù)據(jù)庫20的通訊連接。
[0050]圖2為本發(fā)明一個實施例的同步裝置的系統(tǒng)組成圖,如圖2所示的同步裝置,包括:
[0051]通訊模塊31,與主數(shù)據(jù)庫10和備數(shù)據(jù)庫20分別連接并通訊。
[0052]控制模塊32,與通訊模塊31通訊并控制通訊模塊31向主數(shù)據(jù)庫10發(fā)送同步請求。
[0053]協(xié)議解析模塊33,與通訊模塊31通訊并接收主數(shù)據(jù)庫10發(fā)送給同步裝置20的同步日志并進行解析,協(xié)議解析模塊33將捕獲的同步日志反映的數(shù)據(jù)變化信息發(fā)送給數(shù)據(jù)存儲模塊34。
[0054]數(shù)據(jù)存儲模塊34,根據(jù)數(shù)據(jù)變化信息將備數(shù)據(jù)庫20與主數(shù)據(jù)庫10進行數(shù)據(jù)同步。
[0055]上述包括通訊模塊31、控制模塊32、協(xié)議解析模塊33和數(shù)據(jù)存儲模塊34的同步裝置即可將記錄主數(shù)據(jù)庫10數(shù)據(jù)變化信息的同步日志保存于同步裝置30中,這樣即使主數(shù)據(jù)庫10在同步過程中發(fā)生崩潰,備數(shù)據(jù)庫20也能夠根據(jù)主數(shù)據(jù)庫的同步日志零損失的進行數(shù)據(jù)同步。
[0056]在圖2中,同步裝置還包括判斷模塊35,在其它實施例中,也可以不設(shè)置判斷模塊35。判斷模塊35用于判斷同步裝置是否是初次解析同步日志,若是則獲取同步日志的初始位置;若否則獲取上一次解析同步日志成功的位置。如上所述,當(dāng)再次解析主數(shù)據(jù)庫10的同步日志時,同步裝置30不必在從該同步日志上從頭開始解析,而只需從上次解析成功處進行解析即可,從而減少了再次解析該同步日志的時間,有利于主備數(shù)據(jù)庫10、20之間數(shù)據(jù)的快速同步。
[0057]在同步裝置的一個優(yōu)選實施例中,同步裝置30還包括:阻塞操作模塊36,在數(shù)據(jù)同步過程中,阻塞操作模塊36對備數(shù)據(jù)庫20進行阻塞操作來使數(shù)據(jù)庫同步成功。例如,在一個實施例中,阻塞操作模塊36可以為一個獨立的程序。
[0058]在同步裝置的另一個優(yōu)選實施例中,同步裝置30還包括:同步日志更新模塊37,在數(shù)據(jù)同步完成后,同步日志更新模塊37更新備數(shù)據(jù)庫20的同步日志。此時,同步裝置30可以附加一個比較模塊,該比較模塊用于比較來自于主數(shù)據(jù)庫10的同步日志與來自于備數(shù)據(jù)庫20的同步日志,以此來檢測主備數(shù)據(jù)庫10、20是否完成同步,或者檢測主備數(shù)據(jù)庫10、20各自同步日志的差異來確定需要同步的數(shù)據(jù)內(nèi)容。
[0059]在同步裝置的再一個優(yōu)選實施例中,同步裝置30還包括:通訊協(xié)議轉(zhuǎn)換模塊38,與通訊模塊31連接。當(dāng)主數(shù)據(jù)庫10和備數(shù)據(jù)庫20為不同通訊協(xié)議的數(shù)據(jù)庫時,通訊協(xié)議轉(zhuǎn)換模塊38與主數(shù)據(jù)庫10和備數(shù)據(jù)庫20分別通訊來實現(xiàn)主數(shù)據(jù)庫10和備數(shù)據(jù)庫20的通訊連接。
[0060]本發(fā)明提供的數(shù)據(jù)庫的同步系統(tǒng)包括主數(shù)據(jù)庫10、備數(shù)據(jù)庫20以及與主數(shù)據(jù)庫10、備數(shù)據(jù)庫20分別連接的同步裝置30。圖3為本發(fā)明一個實施例的數(shù)據(jù)庫的同步系統(tǒng)的系統(tǒng)組成圖,在圖3中主數(shù)據(jù)庫10為MySql數(shù)據(jù)庫A,備數(shù)據(jù)庫20為MySql數(shù)據(jù)庫B。
[0061]在圖3中,數(shù)據(jù)庫的同步系統(tǒng)包括:
[0062]1、同步裝置30模擬mysql slave的交互協(xié)議,偽裝自己為mysql slave,向充當(dāng)mysql master的MySql數(shù)據(jù)庫A發(fā)送dump消息。其中dump消息一般指將整個儲存裝置或儲存裝置之某部分的內(nèi)容記錄在另一儲存裝置中,在本實施例中是指將MySql數(shù)據(jù)庫A與MySql數(shù)據(jù)庫B進行數(shù)據(jù)庫同步。
[0063]2、充當(dāng)mysql master的MySql數(shù)據(jù)庫A收到dump消息,開始推送日志文件A即binary log給偽裝為mysql slave的同步裝置30。
[0064]3、同步裝置30解析binary log對象。
[0065]4、MySql數(shù)據(jù)庫A與MySql數(shù)據(jù)庫B進行數(shù)據(jù)同步。
[0066]5、MySql數(shù)據(jù)庫B將更新后的日志文件B發(fā)送給同步裝置20。
[0067]具體地,同步裝置30:
[0068]I)、同步裝置30獲取上一次解析成功的位置(如果第一次啟動,獲取所述同步日志的初始位置)
[0069]2)、同步裝置30與MySql數(shù)據(jù)庫A建立鏈接,發(fā)送dump消息。
[0070]3)、MySql 數(shù)據(jù)庫 A 開始推送 Binaly Log。
[0071]4)、同步裝置30接收到的Binaly Log通過Binlog parser進行解析。
[0072]5)、傳遞給備數(shù)據(jù)庫20的EventSink模塊進行數(shù)據(jù)存儲,是一個阻塞操作,直到存儲成功。
[0073]6)、存儲成功后,定時記錄備數(shù)據(jù)庫20的日志文件B的位置。
[0074]在本發(fā)明同步系統(tǒng)的一個優(yōu)選實施例中,同步裝置30還可以包括數(shù)據(jù)過濾、力口工、分發(fā)模塊,該模塊用于支持通配符的過濾模式,如表名、字段等。以及解決l:n數(shù)據(jù)的分發(fā),在一個數(shù)據(jù)庫實例部署多個schema,每個schema為I個或者多個業(yè)務(wù)的數(shù)據(jù)集合。
[0075]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0076]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0077]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0078]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0079]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)庫的同步方法,其特征在于,包括: 設(shè)置一獨立于主數(shù)據(jù)庫和備數(shù)據(jù)庫的同步裝置,并使所述同步裝置分別與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫通訊; 所述同步裝置向所述主數(shù)據(jù)庫發(fā)送同步請求; 所述主數(shù)據(jù)庫響應(yīng)所述同步請求并將主數(shù)據(jù)庫的同步日志發(fā)送給所述同步裝置,所述同步日志記載所述主數(shù)據(jù)庫的數(shù)據(jù)變化信息; 所述同步裝置解析所述同步日志并捕獲所述主數(shù)據(jù)庫的所述數(shù)據(jù)變化信息; 所述同步裝置將捕獲的所述數(shù)據(jù)變化信息傳送給所述備數(shù)據(jù)庫,并根據(jù)所述數(shù)據(jù)變化信息將所述備數(shù)據(jù)庫與所述主數(shù)據(jù)庫進行數(shù)據(jù)同步。
2.如權(quán)利要求1所述的方法,其特征在于,在所述同步裝置解析所述同步日志的步驟中: 若所述同步裝置初次解析所述同步日志,則獲取所述同步日志的初始位置; 若所述同步裝置再次解析所述同步日志,則獲取上一次解析所述同步日志成功的位置。
3.如權(quán)利要求1所述的方法,其特征在于, 在所述數(shù)據(jù)同步過程中,所述備數(shù)據(jù)進行阻塞操作直到數(shù)據(jù)庫同步成功。
4.如權(quán)利要求1所述的方法,其特征在于, 在所述數(shù)據(jù)同步完成后,更新所述備數(shù)據(jù)庫的同步日志。
5.如權(quán)利要求1所述的方法,其特征在于, 當(dāng)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫為不同通訊協(xié)議的數(shù)據(jù)庫時,所述同步裝置與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別通訊來實現(xiàn)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫的通訊連接。
6.一種同步裝置,其特征在于,包括: 通訊模塊,與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別連接并通訊; 控制模塊,與所述通訊模塊通訊并控制所述通訊模塊向所述主數(shù)據(jù)庫發(fā)送同步請求;協(xié)議解析模塊,與所述通訊模塊通訊并接收所述主數(shù)據(jù)庫發(fā)送給所述同步裝置的同步日志并進行解析,所述協(xié)議解析模塊將捕獲的所述同步日志反映的數(shù)據(jù)變化信息發(fā)送給數(shù)據(jù)存儲模塊; 數(shù)據(jù)存儲模塊,根據(jù)所述數(shù)據(jù)變化信息將所述備數(shù)據(jù)庫與所述主數(shù)據(jù)庫進行數(shù)據(jù)同止/J/ O
7.如權(quán)利要求6所述的裝置,其特征在于,還包括: 判斷模塊,判斷所述同步裝置是否是初次解析所述同步日志,若是則獲取所述同步日志的初始位置;若否則獲取上一次解析所述同步日志成功的位置。
8.如權(quán)利要求6所述的裝置,其特征在于,還包括: 阻塞操作模塊,在所述數(shù)據(jù)同步過程中,所述阻塞操作模塊對所述備數(shù)據(jù)庫進行阻塞操作來使數(shù)據(jù)庫同步成功。
9.如權(quán)利要求6所述的裝置,其特征在于,還包括: 同步日志更新模塊,在所述數(shù)據(jù)同步完成后,所述同步日志更新模塊更新所述備數(shù)據(jù)庫的同步日志。
10.如權(quán)利要求6所述的裝置,其特征在于,還包括: 通訊協(xié)議轉(zhuǎn)換模塊,與所述通訊模塊連接,當(dāng)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫為不同通訊協(xié)議的數(shù)據(jù)庫時,所述通訊協(xié)議轉(zhuǎn)換模塊與所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫分別通訊來實現(xiàn)所述主數(shù)據(jù)庫和所述備數(shù)據(jù)庫的通訊連接。
11.一種數(shù)據(jù)庫的同步系統(tǒng),包括主數(shù)據(jù)庫、備數(shù)據(jù)庫,其特征在于,還包括權(quán)利要求6-10之一所述的與所述主數(shù)據(jù)庫、所述備數(shù)據(jù)庫分別連接的同步裝置。
【文檔編號】G06F17/30GK104239476SQ201410447034
【公開日】2014年12月24日 申請日期:2014年9月4日 優(yōu)先權(quán)日:2014年9月4日
【發(fā)明者】郭建輝 申請人:上海天脈聚源文化傳媒有限公司