mysql與MongoDB數(shù)據(jù)同步的方法及其系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[000?]本發(fā)明涉及一種my sql與MongoDB數(shù)據(jù)同步的方法,特別是涉及一種能實(shí)現(xiàn)上述方法的系統(tǒng)。
【背景技術(shù)】
[0002]mysql是現(xiàn)有的一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。MongoDB是目前IT行業(yè)常用的一種非關(guān)系型數(shù)據(jù)庫(kù)(NoSql),其靈活的數(shù)據(jù)存儲(chǔ)方式備受當(dāng)前IT從業(yè)人員的青睞。
[0003]因此,有必要針對(duì)mysql研發(fā)一種將mysql里面的數(shù)據(jù)同步到MongoDB數(shù)據(jù)庫(kù)的方法,以便進(jìn)行整合、開發(fā)。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的目的在于提供一種mysql與MongoDB數(shù)據(jù)同步的方法。
[0005 ]本發(fā)明還提供一種my sql與MongoDB數(shù)據(jù)同步的系統(tǒng)。
[0006]為了達(dá)成上述目的,本發(fā)明的解決方案是:
[0007]一種mysql與MongoDB數(shù)據(jù)同步的方法,通過以下步驟實(shí)現(xiàn):
[0008]1)、在開發(fā)機(jī)上搭建開發(fā)環(huán)境;
[0009]2)、在A服務(wù)器上安裝mysql數(shù)據(jù)庫(kù),并將數(shù)據(jù)庫(kù)引擎設(shè)置為INN0DB,啟動(dòng)數(shù)據(jù)庫(kù);
[0010]3)、在B服務(wù)器上安裝MongoDB數(shù)據(jù)庫(kù);
[0011 ] 4)、在開發(fā)機(jī)上,打開Ec 1 ipse,新建一個(gè)工程,配置好依賴jar包;
[0012]5)、在開發(fā)機(jī)上新建一個(gè)類,在類里面編寫數(shù)據(jù)同步代碼,步驟如下:
[0013]5.1)、在開發(fā)機(jī)上調(diào)用OpenRepl icator,讀取A服務(wù)器上mysql的binlog日志文件,如果讀取失敗,則啟動(dòng)A服務(wù)器mysql并聯(lián)網(wǎng)成功,聯(lián)網(wǎng)成功之后執(zhí)行步驟5.2;如果讀取binlog日志文件成功,則執(zhí)行步驟5.2 ;
[0014]5.2)、在開發(fā)機(jī)上定義計(jì)數(shù)器11,11 = 1;
[0015]5.3)、開發(fā)機(jī)讀取A服務(wù)器上的第η行binlog,將賦值給字符串S1;
[0016]5.4)、如果S1為空,則同步結(jié)束,如果不為空,進(jìn)一步判斷S1是否包含insert\update關(guān)鍵字,如果包含則執(zhí)行步驟5.5,否則n = n+l,執(zhí)行步驟5.3 ;
[0017]5.5),開發(fā)機(jī)將S1轉(zhuǎn)為MongoDB可執(zhí)行的字符串S2 ;
[0018]5.6)、開發(fā)機(jī)調(diào)用MongoDB JDBC驅(qū)動(dòng),連接MongoDB,如果連接失敗,則啟動(dòng)B服務(wù)器MongoDB數(shù)據(jù)庫(kù)并聯(lián)網(wǎng)成功,如果聯(lián)網(wǎng)成功則執(zhí)行步驟5.7 ;
[0019]5.7)、調(diào)用MongoDB驅(qū)動(dòng),在MongoDB上執(zhí)行S2語句,如果失敗,則同步結(jié)束;如果成功,貝>Jn = n+l,并執(zhí)行步驟5.3。
[0020]一種mysql與MongoDB數(shù)據(jù)同步的系統(tǒng),采用如如前所述的方法。
[0021 ]采用上述方案后,本發(fā)明的my sq 1與MongoDB數(shù)據(jù)同步的方法具有以下有益效果:本發(fā)明的目的是讓開發(fā)人員能夠?qū)y sql數(shù)據(jù)同步到MongoDB。軟件開發(fā)時(shí)直接從MongoDB取數(shù)據(jù),從而發(fā)揮my sq 1與MongoDB這兩者的優(yōu)勢(shì)
[0022]本發(fā)明的mysql與MongoDB數(shù)據(jù)同步的系統(tǒng)也具有以上有益效果。
【附圖說明】
[0023]圖1為本發(fā)明的mysql與MongoDB數(shù)據(jù)同步的方法的流程框圖。
【具體實(shí)施方式】
[0024]為了進(jìn)一步解釋本發(fā)明的技術(shù)方案,下面通過具體實(shí)施例來對(duì)本發(fā)明進(jìn)行詳細(xì)闡述。
[0025]實(shí)施例一
[0026]如圖1所示,本發(fā)明的mysql與MongoDB數(shù)據(jù)同步的方法主要通過以下步驟實(shí)現(xiàn):
[0027]1)、在開發(fā)機(jī)上搭建開發(fā)環(huán)境;
[0028]2)、在A服務(wù)器上安裝mysql數(shù)據(jù)庫(kù),并將數(shù)據(jù)庫(kù)引擎設(shè)置為INN0DB,啟動(dòng)數(shù)據(jù)庫(kù);其中,INN0DB或InnoDB是MySQL的數(shù)據(jù)庫(kù)引擎之一,為MySQL AB發(fā)布binary的標(biāo)準(zhǔn)之一。
[0029]3)、在B服務(wù)器上安裝MongoDB數(shù)據(jù)庫(kù);
[0030]4)、在開發(fā)機(jī)上,打開Eclipse,新建一個(gè)工程,配置好依賴jar包;其中,jar包就是已經(jīng)寫好的一些類,將這些類進(jìn)行打包,就可以將這些jar包引入項(xiàng)目中,然后就可以直接使用這些jar包中的類和屬性。
[0031]5)、在開發(fā)機(jī)上新建一個(gè)類,在類里面編寫數(shù)據(jù)同步代碼,詳細(xì)步驟如下:
[0032]5.1)、在開發(fā)機(jī)上調(diào)用OpenReplicator,讀取A服務(wù)器上mysql的binlog日志文件,如果讀取失敗,則啟動(dòng)A服務(wù)器mysql并聯(lián)網(wǎng)成功,聯(lián)網(wǎng)成功之后執(zhí)行步驟5.2;如果讀取binlog日志文件成功,則執(zhí)行步驟5.2;其中,0pen Repl icator是一個(gè)用Java編寫的MySQLbinlog分析程序。
[0033]5.2)、在開發(fā)機(jī)上定義計(jì)數(shù)器η,n = l;
[0034]5.3)、開發(fā)機(jī)讀取A服務(wù)器上的第η行binlog,將賦值給字符串SI;
[0035]5.4)、如果S1為空,則同步結(jié)束,如果不為空,進(jìn)一步判斷S1是否包含insert\update這兩個(gè)關(guān)鍵字。如果包含則執(zhí)行步驟5.5,否則n = n+l,執(zhí)行步驟5.3 ;
[0036]5.5),開發(fā)機(jī)將S1轉(zhuǎn)為MongoDB可執(zhí)行的字符串S2 ;
[0037]5.6)、開發(fā)機(jī)調(diào)用MongoDB JDBC驅(qū)動(dòng),連接MongoDB,如果連接失敗,則啟動(dòng)B服務(wù)器MongoDB數(shù)據(jù)庫(kù)并聯(lián)網(wǎng)成功,如果聯(lián)網(wǎng)成功則執(zhí)行步驟5.7 ;
[0038]5.7)、調(diào)用MongoDB驅(qū)動(dòng),在MongoDB上執(zhí)行S2語句,如果失敗,則同步結(jié)束;如果成功,貝>Jn = n+l,并執(zhí)行步驟5.3。
[0039 ]本發(fā)明的my s q 1與MongoDB數(shù)據(jù)同步的系統(tǒng),能實(shí)現(xiàn)如前所述的方法。
[0040]實(shí)施例二
[0041]本發(fā)明經(jīng)測(cè)試通過后,即可部署到生產(chǎn)環(huán)境,進(jìn)入實(shí)際應(yīng)用階段。
[0042]l、Mysql數(shù)據(jù)庫(kù)為企業(yè)已經(jīng)在運(yùn)行中的數(shù)據(jù)庫(kù)。
[0043]2、MongoDB數(shù)據(jù)庫(kù)為企業(yè)將來大數(shù)據(jù)分析用到的No SQL數(shù)據(jù)庫(kù)集。
[0044]3、同步程序服務(wù)器為本專利中提到的程序部署環(huán)境,該服務(wù)器與My sql和MongoDB通過TCP/IP協(xié)議通信。操作系統(tǒng)為Cent0S6.6。
[0045]部署實(shí)施過程:
[0046]3.1、在同步程序服務(wù)器安裝JDK。
[0047]3.2、將本發(fā)明開發(fā)的程序拷貝到/11817100&1/1:01^1311/目錄下。
[0048]3.3、在系統(tǒng)定時(shí)器設(shè)定定時(shí)任務(wù),每秒調(diào)用一次該程序。
[0049 ] 3.4、啟動(dòng)定時(shí)任務(wù),觀察MongoDB數(shù)據(jù)庫(kù)。數(shù)據(jù)已經(jīng)同步過來。同步成功。
[0050]上述實(shí)施例和附圖并非限定本發(fā)明的產(chǎn)品形態(tài)和式樣,任何所屬技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或修飾,皆應(yīng)視為不脫離本發(fā)明的專利范疇。
【主權(quán)項(xiàng)】
1.一種mysql與MongoDB數(shù)據(jù)同步的方法,其特征在于,通過以下步驟實(shí)現(xiàn): 1)、在開發(fā)機(jī)上搭建開發(fā)環(huán)境; 2)、在A服務(wù)器上安裝mysql數(shù)據(jù)庫(kù),并將數(shù)據(jù)庫(kù)弓I擎設(shè)置為INN0DB,啟動(dòng)數(shù)據(jù)庫(kù); 3)、在B服務(wù)器上安裝MongoDB數(shù)據(jù)庫(kù); 4)、在開發(fā)機(jī)上,打開Ec1 ipse,新建一個(gè)工程,配置好依賴jar包; 5)、在開發(fā)機(jī)上新建一個(gè)類,在類里面編寫數(shù)據(jù)同步代碼,步驟如下: 5.1)、在開發(fā)機(jī)上調(diào)用OpenReplicator,讀取A服務(wù)器上mysql的binlog日志文件,如果讀取失敗,則啟動(dòng)A服務(wù)器mysql并聯(lián)網(wǎng)成功,聯(lián)網(wǎng)成功之后執(zhí)行步驟5.2 ;如果讀取binlog日志文件成功,則執(zhí)行步驟5.2 ; 5.2)、在開發(fā)機(jī)上定義計(jì)數(shù)器η,n=l; 5.3)、開發(fā)機(jī)讀取A服務(wù)器上的第η行binlog,將賦值給字符串SI; 5.4)、如果S1為空,則同步結(jié)束,如果不為空,進(jìn)一步判斷S1是否包含insert\update關(guān)鍵字,如果包含則執(zhí)行步驟5.5,否則n = n+l,執(zhí)行步驟5.3 ; 5.5)、開發(fā)機(jī)將S1轉(zhuǎn)為MongoDB可執(zhí)行的字符串S2; 5.6)、開發(fā)機(jī)調(diào)用MongoDBJDBC驅(qū)動(dòng),連接MongoDB,如果連接失敗,則啟動(dòng)B服務(wù)器MongoDB數(shù)據(jù)庫(kù)并聯(lián)網(wǎng)成功,如果聯(lián)網(wǎng)成功則執(zhí)行步驟5.7 ; 5.7)、調(diào)用MongoDB驅(qū)動(dòng),在MongoDB上執(zhí)行S2語句,如果失敗,則同步結(jié)束;如果成功,貝11]1 = 11+1,并執(zhí)行步驟5.3。2.—種mysql與MongoDB數(shù)據(jù)同步的系統(tǒng),其特征在于:采用如如權(quán)利要求1所述的方法。
【專利摘要】本發(fā)明公開一種mysql與MongoDB數(shù)據(jù)同步的方法,在開發(fā)機(jī)上調(diào)用OpenReplicator,讀取A服務(wù)器上日志文件,失敗則啟動(dòng)A服務(wù)器mysql并聯(lián)網(wǎng)成功,成功則執(zhí)行步驟5.2;5.2)、在開發(fā)機(jī)上定義計(jì)數(shù)器n;5.3)、開發(fā)機(jī)讀取A服務(wù)器上的第n行binlog,將賦值給字符串S1;5.4)、S1為空則同步結(jié)束,不為空判斷S1是否包含insert\update關(guān)鍵字,包含則執(zhí)行步驟5.5,否則n=n+1,執(zhí)行步驟5.3;MongoDB上執(zhí)行S2語句,失敗則同步結(jié)束;成功則n=n+1并執(zhí)行步驟5.3。本發(fā)明還公開一種采用上述方法的系統(tǒng)。本發(fā)明可發(fā)揮mysql與MongoDB這兩者的優(yōu)勢(shì)。
【IPC分類】G06F17/30
【公開號(hào)】CN105447111
【申請(qǐng)?zhí)枴緾N201510779001
【發(fā)明人】姚俊峰, 闕錦龍, 文燕, 柴滿林, 胡子豪
【申請(qǐng)人】銅陵有色金屬集團(tuán)股份有限公司金冠銅業(yè)分公司, 廈門大學(xué)
【公開日】2016年3月30日
【申請(qǐng)日】2015年11月13日