一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)軟件行業(yè)數(shù)據(jù)庫(kù)領(lǐng)域,尤其涉及一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)的系統(tǒng)和方法。
【背景技術(shù)】
[0002]目前,MySQL是互聯(lián)網(wǎng)行業(yè)廣泛使用的數(shù)據(jù)庫(kù)軟件,不過(guò)由于甲骨文公司(Oracle)存在將MySQL閉源的風(fēng)險(xiǎn),許多基于MySQL的應(yīng)用都面臨需要使用替代性的開(kāi)源數(shù)據(jù)庫(kù)軟件的問(wèn)題。MariaDB是對(duì)MySQL兼容性最好的替代方案。
[0003]MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)分支,主要由開(kāi)源社區(qū)在維護(hù),采用GPL授權(quán)許可MariaDB的目的是完全兼容MySQL,包括API和命令行,使之輕松成為MySQL的代替品。并且,MariaDB在擴(kuò)展功能、存儲(chǔ)引擎以及一些新的功能上甚至強(qiáng)過(guò)MySQL0
[0004]對(duì)于任何一種數(shù)據(jù)庫(kù)來(lái)說(shuō),數(shù)據(jù)庫(kù)恢復(fù)均是其不可或缺的功能,MariaDB也不例外。
[0005]現(xiàn)有技術(shù)中,MariaDB數(shù)據(jù)庫(kù)的恢復(fù)方式主要有依據(jù)dump備份數(shù)據(jù)和binlog 二進(jìn)制日志文本進(jìn)行數(shù)據(jù)恢復(fù)工作的方式、由其他服務(wù)器復(fù)制所需數(shù)據(jù)以及人工修復(fù)方式等。
[0006]申請(qǐng)人發(fā)現(xiàn)現(xiàn)有技術(shù)利用日志文件進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)的方式存在如下問(wèn)題:現(xiàn)有的數(shù)據(jù)庫(kù)的恢復(fù)方式時(shí)間成本非常高,導(dǎo)致數(shù)據(jù)庫(kù)長(zhǎng)時(shí)間無(wú)法正常運(yùn)作,并且人力成本非常高,往往需要多個(gè)工程師的長(zhǎng)時(shí)間處理才能夠完成數(shù)據(jù)恢復(fù)工作。
【發(fā)明內(nèi)容】
[0007](一 )要解決的技術(shù)問(wèn)題
[0008]鑒于上述技術(shù)問(wèn)題,本發(fā)明提供了一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)及方法,以降低數(shù)據(jù)庫(kù)恢復(fù)的時(shí)間成本和人力成本。
[0009]( 二)技術(shù)方案
[0010]本發(fā)明提供一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng),數(shù)據(jù)庫(kù)已按順序執(zhí)行了一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù),每個(gè)數(shù)據(jù)庫(kù)事務(wù)中按順序排列有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)命令,數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)包括:
[0011]正向明文文本生成模塊,用于生成正向明文文本,正向明文文本中包括按執(zhí)行順序排列的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù);
[0012]反向明文文本生成模塊,用于根據(jù)正向明文文本,將一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)的排列順序反向,將每個(gè)數(shù)據(jù)庫(kù)事務(wù)中數(shù)據(jù)庫(kù)命令的執(zhí)行順序反向,并對(duì)每個(gè)數(shù)據(jù)庫(kù)命令進(jìn)行反向轉(zhuǎn)換,得到反向明文文本;
[0013]執(zhí)行模塊,用于將反向明文文本發(fā)送給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)執(zhí)行所述反向明文文本,以恢復(fù)數(shù)據(jù)庫(kù)。
[0014]本發(fā)明還提供一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)方法,包括:
[0015]SI,生成正向明文文本,正向明文文本中包括按執(zhí)行順序排列的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù);
[0016]S2,根據(jù)正向明文文本,將一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)的排列順序反向,將每個(gè)數(shù)據(jù)庫(kù)事務(wù)中數(shù)據(jù)庫(kù)命令的執(zhí)行順序反向,并對(duì)每個(gè)數(shù)據(jù)庫(kù)命令進(jìn)行反向轉(zhuǎn)換,得到反向明文文本;
[0017]S3,將反向明文文本發(fā)送給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)執(zhí)行反向明文文本,以恢復(fù)數(shù)據(jù)庫(kù)。
[0018](三)有益效果
[0019](I)根據(jù)數(shù)據(jù)恢復(fù)命令,在全體數(shù)據(jù)庫(kù)事務(wù)中,確定出所述一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù),降低生成明文文本的計(jì)算量。
[0020](2)程序自動(dòng)化處理時(shí)無(wú)需占用數(shù)據(jù)庫(kù)內(nèi)部的進(jìn)程,使得MariaDB的集群性能大大提升,有效擴(kuò)展了 MariaDB的試用范圍。
[0021](3)利用程序自動(dòng)化處理,大大縮短了數(shù)據(jù)恢復(fù)所需要的時(shí)間,同時(shí),不再需要多個(gè)工程師的長(zhǎng)時(shí)間處理,大大降低了數(shù)據(jù)庫(kù)工程師的人力成本。
【附圖說(shuō)明】
[0022]圖1為本發(fā)明實(shí)施例提供的基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)的結(jié)構(gòu)圖;
[0023]圖2為本發(fā)明實(shí)施例提供的基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)方法的流程圖;
【具體實(shí)施方式】
[0024]本發(fā)明提供一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng),包括正向明文文本生成模塊、反向明文文本生成模塊及執(zhí)行模塊,正向明文文本生成模塊用于生成正向明文文本,反向明文文本生成模塊用于將正向明文文本中的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)的排列順序反向,將每個(gè)數(shù)據(jù)庫(kù)事務(wù)中數(shù)據(jù)庫(kù)命令的執(zhí)行順序反向,并對(duì)每個(gè)數(shù)據(jù)庫(kù)命令進(jìn)行反向轉(zhuǎn)換,得到反向明文文本;執(zhí)行模塊將反向明文文本發(fā)送給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)執(zhí)行反向明文文本,以恢復(fù)所述數(shù)據(jù)庫(kù)。
[0025]在一種實(shí)施方式中,執(zhí)行反向明文文本包括:數(shù)據(jù)庫(kù)按照反向明文文本中的數(shù)據(jù)庫(kù)事務(wù)的排列順序,執(zhí)行所述反向明文文本中的數(shù)據(jù)庫(kù)事務(wù)。
[0026]在一種實(shí)施方式中,數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)還包括事務(wù)確定模塊,用于根據(jù)數(shù)據(jù)恢復(fù)命令,在全體數(shù)據(jù)庫(kù)事務(wù)中,確定出一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù),并傳送給正向明文文本生成模塊。
[0027]在一種實(shí)施方式中,正向明文文本生成模塊通過(guò)MariaDB的行模式的二進(jìn)制日志生成所述正向明文文本。
[0028]本發(fā)明還提供一種基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)方法,包括:
[0029]SI,生成正向明文文本,正向明文文本中包括按執(zhí)行順序排列的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù);
[0030]S2,根據(jù)正向明文文本,將一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù)的排列順序反向,將每個(gè)數(shù)據(jù)庫(kù)事務(wù)中數(shù)據(jù)庫(kù)命令的執(zhí)行順序反向,并對(duì)每個(gè)數(shù)據(jù)庫(kù)命令進(jìn)行反向轉(zhuǎn)換,得到反向明文文本;
[0031]S3,將反向明文文本發(fā)送給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)執(zhí)行反向明文文本,以恢復(fù)數(shù)據(jù)庫(kù)。
[0032]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
[0033]圖1是本發(fā)明提供的基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)的結(jié)構(gòu)圖,數(shù)據(jù)庫(kù)已按順序執(zhí)行了一個(gè)或多個(gè)數(shù)據(jù)庫(kù)事務(wù),所述數(shù)據(jù)庫(kù)事務(wù)中按順序排列有一個(gè)或多個(gè)數(shù)據(jù)庫(kù)命令,如圖1所示,基于MariaDB的數(shù)據(jù)庫(kù)恢復(fù)系統(tǒng)包括事務(wù)確定模塊、正向明文文本生成模塊、反向明文文本生成模塊及執(zhí)行模塊。
[0034]事務(wù)確定模塊根據(jù)數(shù)據(jù)恢復(fù)命令,在全體數(shù)據(jù)庫(kù)事務(wù)中,確定出已經(jīng)在此數(shù)據(jù)庫(kù)則執(zhí)行過(guò)的數(shù)據(jù)庫(kù)事務(wù),并傳送給正向明文文本生成模塊,事務(wù)確定模塊縮小了數(shù)據(jù)庫(kù)恢復(fù)中涉及的數(shù)據(jù)庫(kù)事務(wù)數(shù)量,減少了后續(xù)生成正向明文文本的計(jì)算量。
[0035]正向明文文本生成模塊通過(guò)MariaDB的行模式的二進(jìn)制日志生成正向明文文本,其中,正