一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法及裝置的制造方法
【專利摘要】本申請(qǐng)涉及數(shù)據(jù)庫(kù)復(fù)制技術(shù)領(lǐng)域,尤其涉及一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法及裝置,用以解決現(xiàn)有技術(shù)當(dāng)主端解析得到的數(shù)據(jù)庫(kù)回放語(yǔ)句數(shù)量非常大時(shí),異地?cái)?shù)據(jù)庫(kù)復(fù)制效率低的技術(shù)問(wèn)題,包括:根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放,該方法在發(fā)送行對(duì)象給目標(biāo)數(shù)據(jù)庫(kù)之前,首先對(duì)行對(duì)象進(jìn)行合并,從而大大減少了數(shù)據(jù)量,從而在提高了將行對(duì)象從源數(shù)據(jù)庫(kù)發(fā)送到目標(biāo)數(shù)據(jù)庫(kù)的速度,提高了數(shù)據(jù)庫(kù)復(fù)制效率。
【專利說(shuō)明】
一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法及裝置
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及數(shù)據(jù)庫(kù)復(fù)制技術(shù)領(lǐng)域,尤其涉及一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法及裝置?!颈尘凹夹g(shù)】
[0002]隨著應(yīng)用系統(tǒng)的不斷發(fā)展,系統(tǒng)對(duì)于數(shù)據(jù)庫(kù)的依賴與日倶增。數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景的豐富也導(dǎo)致數(shù)據(jù)庫(kù)之間的復(fù)制需求與要求日趨旺盛,數(shù)據(jù)庫(kù)復(fù)制是在數(shù)據(jù)庫(kù)之間對(duì)數(shù)據(jù)和數(shù)據(jù)庫(kù)對(duì)象進(jìn)行復(fù)制和分發(fā),并進(jìn)行同步以確保其一致性的一組技術(shù)。
[0003]現(xiàn)有技術(shù)中,基于日志解析的數(shù)據(jù)庫(kù)復(fù)制技術(shù),通過(guò)主端將源數(shù)據(jù)庫(kù)引擎產(chǎn)生的日志解析成數(shù)據(jù)庫(kù)回放語(yǔ)句,并通過(guò)異地網(wǎng)絡(luò)將解析后的大量數(shù)據(jù)回放語(yǔ)句發(fā)送至目標(biāo)數(shù)據(jù)庫(kù),然后由備端根據(jù)接收到的數(shù)據(jù)回放語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)回放,并將回放得到的數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)將源數(shù)據(jù)庫(kù)的數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)庫(kù)。
[0004]上述方法存在的問(wèn)題是:當(dāng)主端解析得到的數(shù)據(jù)庫(kù)回放語(yǔ)句數(shù)量非常大時(shí),異地網(wǎng)絡(luò)傳輸會(huì)比較慢,因而導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)異地復(fù)制的時(shí)間會(huì)非常長(zhǎng),降低了異地?cái)?shù)據(jù)庫(kù)復(fù)制效率。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┮环N基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法,用以解決現(xiàn)有技術(shù)當(dāng)主端解析得到的數(shù)據(jù)庫(kù)回放語(yǔ)句數(shù)量非常大時(shí),異地?cái)?shù)據(jù)庫(kù)復(fù)制效率低的技術(shù)問(wèn)題。
[0006]—方面,本申請(qǐng)實(shí)施例提供的一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法,包括:
[0007]根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象;
[0008]根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)所述主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;
[0009]將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使所述目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。
[0010]可選地,所述根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象,包括:
[0011]根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句;
[0012]根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:
[0013]針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象。
[0014]可選地,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任幾項(xiàng)的組合:
[0015]將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;
[0016]將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;
[0017]將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;
[0018]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;
[0019]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0020]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;[0021 ]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;[〇〇22]將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。
[0023]可選地,將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù)之前,還包括:[〇〇24]對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。
[0025]可選地,根據(jù)源數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象之前,該方法還包括:[〇〇26] 根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述 Binary Log日志解析為行對(duì)象;
[0027]根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并;[〇〇28]將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。
[0029]另一方面,本申請(qǐng)實(shí)施例提供的一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制裝置,包括:
[0030]解析單元,用于根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象;
[0031]合并單元,用于根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)所述主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;
[0032]發(fā)送單元,用于將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使所述目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。[〇〇33]可選地,所述解析單元,具體用于:
[0034]根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句;
[0035]根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:[〇〇36]針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象。
[0037]可選地,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任幾項(xiàng)的組合:[〇〇38]將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;[〇〇39]將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;[〇〇4〇]將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;
[0041]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;
[0042]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0043]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;
[0044]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0045]將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。
[0046]可選地,所述裝置還包括加密單元,具體用于:
[0047]對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。[〇〇48] 可選地,所述發(fā)送單元還用于:[〇〇49] 根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述 Binary Log日志解析為行對(duì)象;
[0050]根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并;[〇〇51]將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。[〇〇52]本申請(qǐng)實(shí)施例提供的方法,根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句, 并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放,該方法在發(fā)送行對(duì)象給目標(biāo)數(shù)據(jù)庫(kù)之前,首先對(duì)行對(duì)象進(jìn)行合并,從而大大減少了數(shù)據(jù)量,從而在提高了將行對(duì)象從源數(shù)據(jù)庫(kù)發(fā)送到目標(biāo)數(shù)據(jù)庫(kù)的速度,提高了數(shù)據(jù)庫(kù)復(fù)制效率?!靖綀D說(shuō)明】
[0053]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[〇〇54]圖1為本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法流程圖;
[0055]圖2為本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法詳細(xì)流程圖;
[0056]圖3為本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制裝置示意圖?!揪唧w實(shí)施方式】
[0057]為了使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部份實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0058]下面結(jié)合說(shuō)明書附圖對(duì)本申請(qǐng)實(shí)施例作進(jìn)一步詳細(xì)描述。
[0059]如圖1所示,本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法,包括:
[0060]步驟101、根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象;
[0061]步驟102、根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;
[0062]步驟103、將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。
[0063]源數(shù)據(jù)庫(kù)可以是甲骨文Oracle數(shù)據(jù)庫(kù),SQL(Structured Query Language,結(jié)構(gòu)化查詢語(yǔ)言)數(shù)據(jù)庫(kù),MySQL(My Structured Query Language,關(guān)系型結(jié)構(gòu)化查詢語(yǔ)言)數(shù)據(jù)庫(kù)等等,目標(biāo)數(shù)據(jù)庫(kù)與源數(shù)據(jù)庫(kù)類型相同,可以相應(yīng)的是Oracle數(shù)據(jù)庫(kù),SQL數(shù)據(jù)庫(kù),MySQL數(shù)據(jù)庫(kù)等等。
[0064]數(shù)據(jù)庫(kù)日志中記錄的有對(duì)數(shù)據(jù)進(jìn)行操作的數(shù)據(jù)庫(kù)語(yǔ)句,例如查詢數(shù)據(jù)語(yǔ)句,刪除數(shù)據(jù)語(yǔ)句,以及更新數(shù)據(jù)語(yǔ)句等。
[0065]上述步驟101中,根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,其中一個(gè)行對(duì)象對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,對(duì)應(yīng)同一行的多個(gè)行對(duì)象具有相同的主鍵標(biāo)識(shí),例如, 對(duì)數(shù)據(jù)庫(kù)表A的第一行從時(shí)間先后順序看,分別有3個(gè)數(shù)據(jù)庫(kù)語(yǔ)句,且第一行對(duì)應(yīng)的主鍵標(biāo)識(shí)為A1,其中,第1個(gè)數(shù)據(jù)庫(kù)語(yǔ)句是對(duì)第一行有一個(gè)數(shù)據(jù)插入的語(yǔ)句,因此第一行對(duì)應(yīng)一個(gè)行對(duì)象1,行對(duì)象1對(duì)應(yīng)的主鍵標(biāo)識(shí)為A1,對(duì)應(yīng)的數(shù)據(jù)庫(kù)語(yǔ)句為對(duì)第一行進(jìn)行數(shù)據(jù)插入的操作;第2個(gè)數(shù)據(jù)庫(kù)語(yǔ)句是對(duì)第一行有一個(gè)數(shù)據(jù)刪除的語(yǔ)句,因此第一行對(duì)應(yīng)一個(gè)行對(duì)象2,行對(duì)象2對(duì)應(yīng)的主鍵標(biāo)識(shí)為A1,對(duì)應(yīng)的數(shù)據(jù)庫(kù)語(yǔ)句為刪除第一行數(shù)據(jù)的刪除操作;第3個(gè)數(shù)據(jù)庫(kù)語(yǔ)句是對(duì)第一行有一個(gè)數(shù)據(jù)更新的語(yǔ)句,因此第一行對(duì)應(yīng)一個(gè)行對(duì)象3,行對(duì)象3對(duì)應(yīng)的主鍵標(biāo)識(shí)為A1,對(duì)應(yīng)的數(shù)據(jù)庫(kù)語(yǔ)句為更新第一行的數(shù)據(jù)的更新操作。步驟101中,通過(guò)讀取數(shù)據(jù)庫(kù)日志,可以將數(shù)據(jù)庫(kù)日志解析為多個(gè)行對(duì)象。
[0066]步驟102中,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,例如,如上例所述,表A 的第一行對(duì)應(yīng)有3個(gè)數(shù)據(jù)庫(kù)操作,可以將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并, 即對(duì)同一個(gè)行的多個(gè)操作語(yǔ)句進(jìn)行合并,合并之后,一個(gè)行只對(duì)應(yīng)一個(gè)行對(duì)象,且只有一條合并后的語(yǔ)句。因而大大減少了總的行對(duì)象的數(shù)量。
[0067]步驟103、將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。由于步驟102對(duì)行對(duì)象進(jìn)行了合并,因而大大減少了行對(duì)象的數(shù)量,從而在傳輸至目標(biāo)數(shù)據(jù)庫(kù)時(shí),提高了傳輸?shù)乃俣取?br>[0068]本申請(qǐng)實(shí)施例提供的方法,根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句, 并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放,該方法在發(fā)送行對(duì)象給目標(biāo)數(shù)據(jù)庫(kù)之前,首先對(duì)行對(duì)象進(jìn)行合并,從而大大減少了數(shù)據(jù)量,從而在提高了將行對(duì)象從源數(shù)據(jù)庫(kù)發(fā)送到目標(biāo)數(shù)據(jù)庫(kù)的速度,提高了數(shù)據(jù)庫(kù)復(fù)制效率。
[0069]具體地,在對(duì)數(shù)據(jù)庫(kù)日志進(jìn)行解析時(shí),可以將數(shù)據(jù)庫(kù)日志解析成多張表,然后將一張表的一行作為一個(gè)對(duì)象,一個(gè)對(duì)象對(duì)應(yīng)一行的一個(gè)數(shù)據(jù)庫(kù)操作語(yǔ)句,或者是一個(gè)對(duì)象對(duì)應(yīng)一行的多個(gè)數(shù)據(jù)庫(kù)操作語(yǔ)句;或者是將一張表整體作為一個(gè)對(duì)象,對(duì)于解析的方法,本發(fā)明不做具體限定。
[0070]可選地,所述根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象,包括:[0071 ]根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句;
[0072]上述方法,將源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象,一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句,因此一個(gè)行對(duì)象只對(duì)應(yīng)一行一次操作的數(shù)據(jù)庫(kù)操作語(yǔ)句,例如針對(duì)表B第2行,在一個(gè)時(shí)間段內(nèi)有2個(gè)操作,分別是刪除語(yǔ)句和更新語(yǔ)句,則改行解析為兩個(gè)行對(duì)象,分別對(duì)應(yīng)改行的兩個(gè)數(shù)據(jù)庫(kù)操作語(yǔ)句。該方法將數(shù)據(jù)庫(kù)日志解析為以一行的一個(gè)數(shù)據(jù)庫(kù)操作語(yǔ)句為最小單位,可為后續(xù)數(shù)據(jù)庫(kù)的復(fù)制提供充分詳細(xì)的信息,因而方便了數(shù)據(jù)庫(kù)的復(fù)制,提高了效率。
[0073]基于上述數(shù)據(jù)庫(kù)日志解析方式,可根據(jù)下列方式對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并。
[0074]可選地,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:
[0075]針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象。
[0076]上述方法,針對(duì)每一張行對(duì)象表,可分配一個(gè)線程進(jìn)行行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并的操作,從而可以并發(fā)地將根據(jù)源數(shù)據(jù)庫(kù)解析得到的行對(duì)象進(jìn)行合并,從而提高行對(duì)象合并的效率,提高系統(tǒng)效率。
[0077]對(duì)于將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并的規(guī)則有很多,本申請(qǐng)實(shí)施例提供的行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并的規(guī)則如下:
[0078]可選地,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任幾項(xiàng)的組合:[〇〇79]將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;[〇〇8〇]將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;[0081 ]將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;[〇〇82]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;
[0083]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0084]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;
[0085]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0086]將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。
[0087]上述方法,根據(jù)上述規(guī)則的組合,可對(duì)任意具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并,例如一行前后有以下操作:刪除,插入,更新,則可以將刪除,插入,更新分別對(duì)應(yīng)的3個(gè)語(yǔ)句合并為一條語(yǔ)句,首先將刪除語(yǔ)句和插入語(yǔ)句合并為插入語(yǔ)句,然后將插入語(yǔ)句和更新語(yǔ)句合并為插入語(yǔ)句,因此合并只有只剩下一條插入語(yǔ)句,對(duì)于合并后的插入語(yǔ)句的具體內(nèi)容根據(jù)實(shí)際應(yīng)用而定,本發(fā)明不做限定。因此,通過(guò)上述預(yù)先設(shè)定的規(guī)則,可對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句進(jìn)行合并,然后根據(jù)合并后語(yǔ)句以及根據(jù)改行對(duì)應(yīng)的主鍵標(biāo)識(shí),生產(chǎn)一個(gè)新的行對(duì)象,該新的行對(duì)象為該行合并后的行對(duì)象,由此可見,通過(guò)上述規(guī)則,可將具有相同主鍵標(biāo)識(shí)的多個(gè)行對(duì)象合并為一個(gè)行對(duì)象,大大減少了數(shù)據(jù)量,在將合并后的行對(duì)象傳輸至目標(biāo)數(shù)據(jù)庫(kù)時(shí),由于數(shù)據(jù)量的減少而提高了發(fā)送效率。
[0088]另外,在將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù)之前,可對(duì)合并后的行對(duì)象做一些預(yù)處理,例如加密,或者是不加密,以及還可以是對(duì)數(shù)據(jù)做壓縮,或者不壓縮,具體根據(jù)實(shí)際需要而定。
[0089]可選地,本申請(qǐng)實(shí)施例提供的方法,在將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù)之前,還包括:
[0090]對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。
[0091]該方法中,在將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù)之前進(jìn)行加密和壓縮操作,從而提高數(shù)據(jù)發(fā)送的安全性,以及進(jìn)一步降低了數(shù)據(jù)發(fā)送量。
[0092]可選地,根據(jù)源數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象之前,該方法還包括:[〇〇93] 根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述 Binary Log日志解析為行對(duì)象;
[0094]根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;[〇〇95]將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。[〇〇96]上述方法,是針對(duì)源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)都是MySQL數(shù)據(jù)庫(kù),并且數(shù)據(jù)庫(kù)日志是 Binary Log日志的場(chǎng)景下的數(shù)據(jù)庫(kù)復(fù)制方法,該方法中,可通過(guò)模擬MySQL dump協(xié)議將 Binary Log日志拉取到本地,并根據(jù)Binary Log日志格式將其解析為行對(duì)象,然后根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使目標(biāo)My SQL數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。
[0097]下面對(duì)本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法做詳細(xì)描述。[〇〇98]步驟201、主端對(duì)數(shù)據(jù)庫(kù)日志進(jìn)行解析;[〇〇99]步驟202、主端進(jìn)行數(shù)據(jù)庫(kù)行對(duì)象合并操作;
[0100]步驟203、主端進(jìn)行數(shù)據(jù)傳輸序列化;
[0101]步驟204、主端進(jìn)行數(shù)據(jù)庫(kù)加密壓縮;
[0102]步驟205、主端進(jìn)行主端異地網(wǎng)絡(luò)數(shù)據(jù)發(fā)送;
[0103]步驟206、備端進(jìn)行備端異地網(wǎng)絡(luò)數(shù)據(jù)接收;[〇1〇4]步驟207、備端進(jìn)行數(shù)據(jù)解壓縮解密;[〇1〇5]步驟208、備端進(jìn)行數(shù)據(jù)反序列化;
[0106]步驟209、備端進(jìn)行數(shù)據(jù)回放操作,將回放后的數(shù)據(jù)存儲(chǔ)到目標(biāo)數(shù)據(jù)庫(kù)。
[0107]本申請(qǐng)實(shí)施例提供的方法,根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句, 并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放,該方法在發(fā)送行對(duì)象給目標(biāo)數(shù)據(jù)庫(kù)之前,首先對(duì)行對(duì)象進(jìn)行合并,從而大大減少了數(shù)據(jù)量,從而在提高了將行對(duì)象從源數(shù)據(jù)庫(kù)發(fā)送到目標(biāo)數(shù)據(jù)庫(kù)的速度,提高了數(shù)據(jù)庫(kù)復(fù)制效率。
[0108]基于相同的技術(shù)構(gòu)思,本申請(qǐng)實(shí)施例還提供基于日志解析的數(shù)據(jù)庫(kù)復(fù)制裝置。本申請(qǐng)實(shí)施例提供的基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法裝置如圖3所示。
[0109]解析單元301,用于根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象;
[0110]合并單元302,用于根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)所述主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;
[0111]發(fā)送單元304,用于將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使所述目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。
[0112] 可選地,所述解析單元301,具體用于:[〇113]根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句;
[0114]根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:
[0115]針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象。
[0116]可選地,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任幾項(xiàng)的組合:
[0117]將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;
[0118]將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;
[0119]將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;
[0120]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;
[0121]將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0122]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;
[0123]將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;
[0124]將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。
[0125]可選地,所述裝置還包括加密單元303,具體用于:
[0126]對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。
[0127]可選地,所述發(fā)送單元304還用于:
[0128]根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述 Binary Log日志解析為行對(duì)象;
[0129]根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并;[〇13〇]將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。[0131 ]本申請(qǐng)實(shí)施例提供的方法,根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將數(shù)據(jù)庫(kù)日志解析為行對(duì)象,根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句, 并根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,將合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使目標(biāo)數(shù)據(jù)庫(kù)根據(jù)合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放,該方法在發(fā)送行對(duì)象給目標(biāo)數(shù)據(jù)庫(kù)之前,首先對(duì)行對(duì)象進(jìn)行合并,從而大大減少了數(shù)據(jù)量,從而在提高了將行對(duì)象從源數(shù)據(jù)庫(kù)發(fā)送到目標(biāo)數(shù)據(jù)庫(kù)的速度,提高了數(shù)據(jù)庫(kù)復(fù)制效率。
[0132]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0133]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0134]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0135]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0136]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制方法,其特征在于,包括:根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象;根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并 根據(jù)所述主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使所述目標(biāo)數(shù)據(jù)庫(kù)根據(jù)所述合并后的行 對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。2.如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述 數(shù)據(jù)庫(kù)日志解析為行對(duì)象,包括:根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象 表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句; 根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并 根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的 規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并 后的語(yǔ)句生成合并后的行對(duì)象。3.如權(quán)利要求1或2所述的方法,其特征在于,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任 幾項(xiàng)的組合:將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。4.如權(quán)利要求1所述的方法,其特征在于,將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù)之 前,還包括:對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。5.如權(quán)利要求1、2和4中任一項(xiàng)所述的方法,其特征在于,根據(jù)源數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志, 將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象之前,該方法還包括:根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述Binary Log日志解析為行對(duì)象;根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并;將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述 合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。6.—種基于日志解析的數(shù)據(jù)庫(kù)復(fù)制裝置,其特征在于,包括:解析單元,用于根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)庫(kù)日志解析為行對(duì)象;合并單元,用于根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并 成一個(gè)語(yǔ)句,并根據(jù)所述主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象;發(fā)送單元,用于將所述合并后的行對(duì)象發(fā)送給目標(biāo)數(shù)據(jù)庫(kù),以使所述目標(biāo)數(shù)據(jù)庫(kù)根據(jù) 所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)庫(kù)回放。7.如權(quán)利要求6所述的裝置,其特征在于,所述解析單元,具體用于:根據(jù)源數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)日志,將所述數(shù)據(jù)中的數(shù)據(jù)庫(kù)日志解析為至少一張行對(duì)象 表;其中一張行對(duì)象表包含至少一個(gè)行對(duì)象;一個(gè)行對(duì)象一行的一條數(shù)據(jù)庫(kù)操作語(yǔ)句; 根據(jù)預(yù)先設(shè)定的規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并 根據(jù)主鍵標(biāo)識(shí)和合并后的語(yǔ)句生成合并后的行對(duì)象,包括:針對(duì)每一張行對(duì)象表,為所述行對(duì)象表分配一個(gè)線程,并調(diào)用該線程根據(jù)預(yù)先設(shè)定的 規(guī)則,將具有相同主鍵標(biāo)識(shí)的行對(duì)象對(duì)應(yīng)的語(yǔ)句合并成一個(gè)語(yǔ)句,并根據(jù)主鍵標(biāo)識(shí)和合并 后的語(yǔ)句生成合并后的行對(duì)象。8.如權(quán)利要求6或7所述的裝置,其特征在于,所述預(yù)先設(shè)定的規(guī)則包含下列一項(xiàng)或任 幾項(xiàng)的組合:將多條進(jìn)行數(shù)據(jù)插入的語(yǔ)句合并成一條數(shù)據(jù)插入語(yǔ)句;將多條進(jìn)行數(shù)據(jù)刪除的語(yǔ)句合并成一條數(shù)據(jù)刪除語(yǔ)句;將多條進(jìn)行數(shù)據(jù)更新的語(yǔ)句合并成一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句;將先進(jìn)行數(shù)據(jù)插入,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)插入的兩條語(yǔ)句合并為一條數(shù)據(jù)插入語(yǔ)句;將先進(jìn)行數(shù)據(jù)刪除,后進(jìn)行數(shù)據(jù)更新的兩條語(yǔ)句合并為一條數(shù)據(jù)更新語(yǔ)句;將先進(jìn)行數(shù)據(jù)更新,后進(jìn)行數(shù)據(jù)刪除的兩條語(yǔ)句合并為一條數(shù)據(jù)刪除語(yǔ)句。9.如權(quán)利要求6所述的方法,其特征在于,所述裝置還包括加密單元,具體用于:對(duì)所述合并后的行對(duì)象進(jìn)行數(shù)據(jù)加密壓縮。10.如權(quán)利要求6、7和9中任一項(xiàng)所述的裝置,其特征在于,所述發(fā)送單元還用于:根據(jù)源結(jié)構(gòu)化查詢語(yǔ)言MySQL數(shù)據(jù)庫(kù)中的二進(jìn)制日志Binary Log日志,將所述Binary Log日志解析為行對(duì)象;根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)具有相同主鍵標(biāo)識(shí)的行對(duì)象進(jìn)行合并;將所述合并后的行對(duì)象發(fā)送給目標(biāo)MySQL數(shù)據(jù)庫(kù),以使所述目標(biāo)MySQL數(shù)據(jù)庫(kù)根據(jù)所述 合并后的行對(duì)象進(jìn)行My SQL數(shù)據(jù)庫(kù)回放。
【文檔編號(hào)】G06F17/30GK105955970SQ201510776844
【公開日】2016年9月21日
【申請(qǐng)日】2015年11月12日
【發(fā)明人】祖立軍, 李戈, 劉國(guó)寶
【申請(qǐng)人】中國(guó)銀聯(lián)股份有限公司