61]步驟501,獲取第一快照的快照時(shí)刻與目標(biāo)恢復(fù)時(shí)刻之間的與數(shù)據(jù)庫中包含的所有數(shù)據(jù)對(duì)應(yīng)的增量日志,構(gòu)成增量日志集合。
[0062]在本實(shí)現(xiàn)方式中,上述電子設(shè)備從數(shù)據(jù)庫的變更日志中獲取第一快照的快照時(shí)刻與目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻,并獲取上述兩個(gè)時(shí)刻之間與數(shù)據(jù)庫中包含的所有數(shù)據(jù)對(duì)應(yīng)的增量日志,構(gòu)成增量日志集合。其中,上述增量日志是從數(shù)據(jù)庫的備份日志中獲取的處于快照時(shí)刻與目標(biāo)恢復(fù)時(shí)刻之間的所有日志。在一些可選的實(shí)現(xiàn)方式中,例如,可以實(shí)時(shí)地從數(shù)據(jù)庫的主庫抓取數(shù)據(jù)變化產(chǎn)生的日志的方式來獲得備份日志。這種實(shí)時(shí)抓取備份日志的方式有助于減輕數(shù)據(jù)庫的主庫網(wǎng)卡的壓力。上述備份日志至少包括用戶對(duì)數(shù)據(jù)庫的操作信息和與這些操作信息對(duì)應(yīng)的時(shí)間信息。
[0063]步驟502,從增量日志集合中提取故障數(shù)據(jù)的增量日志。
[0064]在本實(shí)現(xiàn)方式中,上述電子設(shè)備通過官方工具(如mysql數(shù)據(jù)庫中的數(shù)據(jù)庫命令mysqlbinlog)將第一快照的快照時(shí)刻與目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻之間的所有二進(jìn)制的增量日志解析成可讀文本信息,之后采用錨點(diǎn)定位的方式確定上述每個(gè)增量日志所對(duì)應(yīng)的可讀文本信息的起始位置和結(jié)束位置,通過預(yù)設(shè)的正則表達(dá)式和上述起始位置和結(jié)束位置確定的可讀文本信息,獲得該增量日志集合中故障數(shù)據(jù)的增量日志對(duì)應(yīng)的可讀文本信息,最后提取所述故障數(shù)據(jù)的增量日志。
[0065]如上所述的通過先進(jìn)行錨點(diǎn)定位再進(jìn)行正則表達(dá)式匹配來提取故障數(shù)據(jù)的增量日志的方式,可以降低正則表達(dá)式匹配的可讀文本信息的長度,避免單個(gè)增量日志過長可能導(dǎo)致的正則表達(dá)式匹配不響應(yīng)等問題,提高了提取故障數(shù)據(jù)的增量日志的效率。
[0066]在一些可選的方案中,如圖6所示,步驟204的基于故障數(shù)據(jù)的備份文件和故障數(shù)據(jù)的增量日志,恢復(fù)故障數(shù)據(jù)可以通過如下的步驟來實(shí)現(xiàn):
[0067]步驟601,創(chuàng)建臨時(shí)實(shí)例。
[0068]在本實(shí)現(xiàn)方式中,上述電子設(shè)備創(chuàng)建一個(gè)類似數(shù)據(jù)庫的臨時(shí)實(shí)例,臨時(shí)實(shí)例中包含與數(shù)據(jù)庫中數(shù)據(jù)備份文件編號(hào)相同的一系列編號(hào)。該臨時(shí)實(shí)例供步驟602導(dǎo)入故障數(shù)據(jù)的備份文件和故障數(shù)據(jù)的增量日志。
[0069]步驟602,將第一快照中獲取的故障數(shù)據(jù)的備份文件導(dǎo)入臨時(shí)實(shí)例。
[0070]在本實(shí)現(xiàn)方式中,上述電子設(shè)備將上述獲取的故障數(shù)據(jù)對(duì)應(yīng)的備份文件的編號(hào)與臨時(shí)實(shí)例中的編號(hào)進(jìn)行對(duì)比,當(dāng)故障數(shù)據(jù)對(duì)應(yīng)的備份文件的編號(hào)與臨時(shí)實(shí)例的編號(hào)相同時(shí),將故障數(shù)據(jù)對(duì)應(yīng)的備份文件導(dǎo)入臨時(shí)實(shí)例。
[0071]步驟603,將第一快照的快照時(shí)刻和目標(biāo)恢復(fù)時(shí)刻之間的故障數(shù)據(jù)的增量日志導(dǎo)入臨時(shí)實(shí)例。
[0072]在本實(shí)現(xiàn)方式中,上述電子設(shè)備將上述獲取的故障數(shù)據(jù)所對(duì)應(yīng)的增量日志導(dǎo)入臨時(shí)實(shí)例。
[0073]步驟604,基于上述臨時(shí)實(shí)例,將數(shù)據(jù)庫恢復(fù)到目標(biāo)恢復(fù)時(shí)刻。
[0074]在本實(shí)現(xiàn)方式中,上述電子設(shè)備啟動(dòng)上述包括第一快照中獲取的故障數(shù)據(jù)對(duì)應(yīng)的備份文件和第一快照的快照時(shí)刻與目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻之間的故障數(shù)據(jù)對(duì)應(yīng)的增量日志的臨時(shí)實(shí)例,將該臨時(shí)實(shí)例導(dǎo)入線上數(shù)據(jù)庫中,最后將數(shù)據(jù)庫恢復(fù)到目標(biāo)恢復(fù)時(shí)刻,本實(shí)施例提供方法可以有針對(duì)性且更加有效的恢復(fù)數(shù)據(jù)庫中的故障數(shù)據(jù)。
[0075]進(jìn)一步參考圖7,作為對(duì)上述各圖所示方法的實(shí)現(xiàn),本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)庫中故障數(shù)據(jù)的恢復(fù)系統(tǒng)的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對(duì)應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
[0076]如圖7所示,本實(shí)施例所述的數(shù)據(jù)庫中故障數(shù)據(jù)的恢復(fù)系統(tǒng)700包括:接收模塊701、備份文件獲取模塊702、增量日志獲取模塊703和恢復(fù)模塊704。其中,接收模塊701用于接收故障數(shù)據(jù)恢復(fù)請(qǐng)求信息,其中,上述故障數(shù)據(jù)恢復(fù)請(qǐng)求信息至少包括:故障數(shù)據(jù)的標(biāo)識(shí)信息和目標(biāo)恢復(fù)時(shí)間信息;備份文件獲取模塊702用于基于上述故障數(shù)據(jù)的標(biāo)識(shí)信息在該數(shù)據(jù)庫的第一快照中獲取上述故障數(shù)據(jù)的備份文件;增量日志獲取模塊703用于獲取故障數(shù)據(jù)的增量日志,其中,上述故障數(shù)據(jù)的增量日志包括故障數(shù)據(jù)在第一快照的快照時(shí)刻和上述目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻之間的變化信息;以及恢復(fù)模塊704用于基于上述故障數(shù)據(jù)的備份文件和故障數(shù)據(jù)的增量日志,恢復(fù)數(shù)據(jù)庫的故障數(shù)據(jù)。
[0077]在本實(shí)施例中,數(shù)據(jù)庫中故障數(shù)據(jù)的恢復(fù)系統(tǒng)700的接收模塊701可以從本地或者遠(yuǎn)程地接收數(shù)據(jù)庫的故障數(shù)據(jù)恢復(fù)請(qǐng)求信息。
[0078]在本實(shí)施例中,接收模塊701接收故障數(shù)據(jù)恢復(fù)請(qǐng)求信息之后,備份文件獲取模塊702可以利用故障數(shù)據(jù)的標(biāo)識(shí)信息在數(shù)據(jù)庫的第一快照中獲取故障數(shù)據(jù)的備份文件,增量日志獲取模塊703可以利用上述故障數(shù)據(jù)恢復(fù)請(qǐng)求信息獲取第一快照的快照時(shí)刻和目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻之間的故障數(shù)據(jù)的增量日志。最后,恢復(fù)模塊704根據(jù)備份文件獲取模塊702和增量日志獲取模塊703得到的故障數(shù)據(jù)的備份文件和故障數(shù)據(jù)的增量日志恢復(fù)數(shù)據(jù)庫的故障數(shù)據(jù)。
[0079]在本實(shí)施例的一個(gè)可選實(shí)現(xiàn)方式中,上述數(shù)據(jù)庫中故障數(shù)據(jù)的恢復(fù)系統(tǒng)700的增量日志獲取模塊703進(jìn)一步配置用于:將上述第一快照的快照時(shí)刻與上述目標(biāo)恢復(fù)時(shí)間信息中的目標(biāo)恢復(fù)時(shí)刻之間的增量日志集合解析成可讀文本信息,并通過錨點(diǎn)定位的方式確定增量日志集合中每個(gè)增量日志所對(duì)應(yīng)的可讀文本信息的起始位置和結(jié)束位置,基于預(yù)設(shè)的正則表達(dá)式和錨點(diǎn)定位到的可讀文本信息,匹配出故障數(shù)據(jù)對(duì)應(yīng)的增量日志的可讀文本信息,提取該數(shù)據(jù)庫中故障數(shù)據(jù)所對(duì)應(yīng)的增量日志;恢復(fù)模塊704進(jìn)一步配置用于:從上述第一快照中獲取與故障數(shù)據(jù)對(duì)應(yīng)的備份文件的編號(hào),并將故障數(shù)據(jù)對(duì)應(yīng)的備份文件的編號(hào)與臨時(shí)實(shí)例中的編號(hào)進(jìn)行對(duì)比,當(dāng)故障數(shù)據(jù)的備份文件的編號(hào)與臨時(shí)實(shí)例中的編號(hào)相同時(shí),將上述故障數(shù)據(jù)的備份文件導(dǎo)入臨時(shí)實(shí)例。
[0080]本領(lǐng)域技術(shù)人員可以理解,上述數(shù)據(jù)庫中故障數(shù)據(jù)的恢復(fù)系統(tǒng)700還包括一些其他公知結(jié)構(gòu),例如處理器、存儲(chǔ)器等,為了不必要地模糊本公開的實(shí)施例,這些公知的結(jié)構(gòu)在圖7中未示出。
[0081]下面參考圖8,其示出了適于用來實(shí)現(xiàn)本申請(qǐng)實(shí)施例的客戶端設(shè)備或服務(wù)器的計(jì)算機(jī)系統(tǒng)800的結(jié)構(gòu)示意圖。
[0082]如圖8所示,計(jì)算機(jī)系統(tǒng)800包括中央處理單元(CPU)801,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(ROM) 802中的程序或者從存儲(chǔ)部分808加載到隨機(jī)訪問存儲(chǔ)器(RAM) 803中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在RAM 803中,還存儲(chǔ)有系統(tǒng)800操作所需的各種程序和數(shù)據(jù)。CPU 801,ROM 802以及RAM 803通過總線804彼此相連。輸入/輸出(I/O)接口805也連接至總線804。
[0083]以下部件連接至I/O接口 805:包括鍵盤、鼠標(biāo)等的輸入部分806 ;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚(yáng)聲器等的輸出部分807 ;包括硬盤等的存儲(chǔ)部分808 ;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分809。通信部分809經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器810也根據(jù)需要連接至I/O接口 805??刹鹦督橘|(zhì)811,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器810上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分808。
[0084]特別地,根據(jù)本公開的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信部分809從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)811被安裝。
[0085]附圖中的流程圖和框圖,圖示了按照本申請(qǐng)各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[