意圖。
[0061 ] 恢復(fù)請(qǐng)求接收模塊210接收數(shù)據(jù)恢復(fù)請(qǐng)求;日志確定模塊220確定與數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息;第一轉(zhuǎn)換模塊230將二進(jìn)制日志信息解析并轉(zhuǎn)換為第一文本信息;第二轉(zhuǎn)換模塊240將第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息;數(shù)據(jù)恢復(fù)模塊250基于第二文本信息執(zhí)行數(shù)據(jù)恢復(fù)。
[0062]本發(fā)明的實(shí)施例中,采用行存儲(chǔ)模式的二進(jìn)制日志信息可以記錄MySQL數(shù)據(jù)庫中數(shù)據(jù)變化前后的信息,從而能夠從二進(jìn)制日志信息中確定執(zhí)行數(shù)據(jù)變化的操作指令與操作指令的執(zhí)行順序,通過將操作指令及操作指令的執(zhí)行順序分別逆向轉(zhuǎn)換為逆向操作指令及逆向操作指令的逆向操作順序,并結(jié)合操作內(nèi)容,可將數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)至所需的狀態(tài);由于本發(fā)明的方案中僅對(duì)待恢復(fù)時(shí)間區(qū)間內(nèi)的二進(jìn)制日志信息進(jìn)行轉(zhuǎn)換處理,大大降低了數(shù)據(jù)處理量,從而有效地降低數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)時(shí)間,當(dāng)發(fā)生對(duì)數(shù)據(jù)的誤操作等情況時(shí),可以縮短前端服務(wù)被中斷的時(shí)長,大大降低對(duì)前端用戶的使用影響。
[0063]恢復(fù)請(qǐng)求接收模塊210接收數(shù)據(jù)恢復(fù)請(qǐng)求。
[0064]日志確定模塊220確定與數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息。
[0065]具體地,數(shù)據(jù)恢復(fù)請(qǐng)求包括待恢復(fù)時(shí)間區(qū)間;根據(jù)待恢復(fù)時(shí)間區(qū)間,確定在待恢復(fù)時(shí)間區(qū)間內(nèi)數(shù)據(jù)庫的二進(jìn)制日志信息。
[0066]例如,誤操作發(fā)生在2015年4月17日10點(diǎn)至12點(diǎn)的時(shí)間區(qū)間內(nèi),可通過執(zhí)行數(shù)據(jù)庫命令:mysqlbinlog—start-date = "2015-04-1710:00:00"—stop-date =〃2015-04-1712:00:00〃,來定位在該時(shí)間區(qū)間內(nèi)的二進(jìn)制日志信息。
[0067]優(yōu)選地,基于在該時(shí)間區(qū)間內(nèi)的二進(jìn)制日志信息,可確定多個(gè)操作對(duì)應(yīng)二進(jìn)制日志信息的起始位置,如需要恢復(fù)從A位置“50”到B位置的“ 100”的數(shù)據(jù),可進(jìn)一步執(zhí)行命令:mysqlbinlog—start-positon = 〃50〃一stop-post1n = 〃100〃,來定位從 A 位置開始到B位置結(jié)束的二進(jìn)制日志信息。
[0068]第一轉(zhuǎn)換模塊230將二進(jìn)制日志信息解析并轉(zhuǎn)換為第一文本信息。
[0069]例如,通過MySQL數(shù)據(jù)庫自帶的數(shù)據(jù)庫命令mysqlbinlog,而將二進(jìn)制日志文件解析并轉(zhuǎn)換為相應(yīng)的第一文本信息。
[0070]其中,第一文本信息具體包括在待恢復(fù)時(shí)間區(qū)間內(nèi),用戶對(duì)數(shù)據(jù)庫執(zhí)行全部操作的操作指令、操作內(nèi)容及操作指令的執(zhí)行順序;操作指令包括插入、刪除、更新等。
[0071]第二轉(zhuǎn)換模塊240將第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息。
[0072]其中,第二文本信息具體包括與第一文本信息中操作指令相應(yīng)的逆向操作指令、操作內(nèi)容及該逆向操作指令的逆向執(zhí)行順序。
[0073]具體地,通過將第一文本信息中的操作指令逆向解析并轉(zhuǎn)換為逆向操作指令,并將第一文本信息中的操作指令的執(zhí)行順序逆向解析并轉(zhuǎn)換為逆向操作指令的逆向執(zhí)行順序,來將第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息。
[0074]其中,將操作指令逆向解析并轉(zhuǎn)換為逆向操作指令的方式具體包括:
[0075]將在數(shù)據(jù)庫中插入數(shù)據(jù)的誤操作指令逆向轉(zhuǎn)換為刪除數(shù)據(jù)的逆向操作指令;例如,將insert指令轉(zhuǎn)換成delete指令;
[0076]將在數(shù)據(jù)庫中刪除數(shù)據(jù)的誤操作指令逆向轉(zhuǎn)換為插入數(shù)據(jù)的逆向操作指令;例如,將delete指令轉(zhuǎn)換成insert指令;
[0077]將在數(shù)據(jù)庫中更新數(shù)據(jù)的誤操作指令逆向轉(zhuǎn)換為再次更新數(shù)據(jù)的逆向操作指令;例如,將update指令轉(zhuǎn)換成update指令。
[0078]其中,將第一文本信息中的操作指令的執(zhí)行順序逆向解析并轉(zhuǎn)換為逆向操作指令的逆向執(zhí)行順序,具體為:將第一文本信息中的操作指令的從前到后的執(zhí)行順序,逆向轉(zhuǎn)換為從后至前的逆向執(zhí)行順序。
[0079]例如,第一文本信息為:
[0080]mysql>delete into user (name) values (李四);
[0081]mysql>insert into user (name) values (王五);
[0082]mysql>insert into user (name) values (張三);
[0083]其中,第一文本信息中的操作指令及操作內(nèi)容為:刪除“李四”、插入“王五”、插入“張三”;操作順序?yàn)閯h除“李四”-2插入“王五”_3插入“張三”;
[0084]將第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息為:
[0085]mysql>delete into user (name) values (張三);
[0086]mysql>delete into user (name) values (王五);
[0087]mysql>insert into user (name) values (李四);
[0088]其中,第二文本信息中的逆向操作指令及操作內(nèi)容為:刪除“張三”、刪除“王五”、插入“李四”;逆向操作順序?yàn)閯h除“張三”-2刪除“王五”_3插入“李四”。
[0089]數(shù)據(jù)恢復(fù)模塊250基于第二文本信息執(zhí)行數(shù)據(jù)恢復(fù).
[0090]具體地,將第二文本信息導(dǎo)入數(shù)據(jù)庫相應(yīng)的實(shí)例中,以恢復(fù)數(shù)據(jù)。
[0091 ] 本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請(qǐng)中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、⑶-ROM、和磁光盤)、ROM (Read-Only Memory,只讀存儲(chǔ)器)、RAM (Random Access Memory,隨即存儲(chǔ)器)、EPROM (Erasable ProgrammableRead-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPROM (Electrical Iy ErasableProgrammable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。
[0092]本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。
[0093]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0094]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,其特征在于,包括: 接收數(shù)據(jù)恢復(fù)請(qǐng)求; 確定與所述數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息; 將所述二進(jìn)制日志信息解析并轉(zhuǎn)換為第一文本信息; 將所述第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息;以及 基于所述第二文本信息執(zhí)行數(shù)據(jù)恢復(fù)。
2.根據(jù)權(quán)利要求1所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,其特征在于,所述數(shù)據(jù)恢復(fù)請(qǐng)求包括待恢復(fù)時(shí)間區(qū)間; 其中,確定與所述數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息,具體包括: 確定在所述待恢復(fù)時(shí)間區(qū)間內(nèi)數(shù)據(jù)庫的二進(jìn)制日志信息。
3.根據(jù)權(quán)利要求1或2所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,其特征在于,所述第一文本信息具體包括操作指令、操作內(nèi)容及操作指令的執(zhí)行順序。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,其特征在于,所述第二文本信息具體包括逆向操作指令、操作內(nèi)容及該逆向操作指令的逆向執(zhí)行順序。
5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法,其特征在于,將所述第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息,具體包括: 將所述第一文本信息中的操作指令逆向解析并轉(zhuǎn)換為逆向操作指令;以及將所述第一文本信息中的操作指令的執(zhí)行順序逆向解析并轉(zhuǎn)換為逆向操作指令的逆向執(zhí)行順序。
6.一種應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)裝置,其特征在于,包括: 恢復(fù)請(qǐng)求接收模塊,用于接收數(shù)據(jù)恢復(fù)請(qǐng)求; 日志確定模塊,用于確定與所述數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息; 第一轉(zhuǎn)換模塊,用于將所述二進(jìn)制日志信息解析并轉(zhuǎn)換為第一文本信息; 第二轉(zhuǎn)換模塊,用于將所述第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息; 數(shù)據(jù)恢復(fù)模塊,用于基于所述第二文本信息執(zhí)行數(shù)據(jù)恢復(fù)。
7.根據(jù)權(quán)利要求6所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述數(shù)據(jù)恢復(fù)請(qǐng)求包括待恢復(fù)時(shí)間區(qū)間; 其中,所述日志確定模塊具體用于確定在所述待恢復(fù)時(shí)間區(qū)間內(nèi)數(shù)據(jù)庫的二進(jìn)制日志信息。
8.根據(jù)權(quán)利要求6或7所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述第一文本信息具體包括操作指令、操作內(nèi)容及操作指令的執(zhí)行順序。
9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述第二文本信息具體包括逆向操作指令、操作內(nèi)容及該逆向操作指令的逆向執(zhí)行順序。
10.根據(jù)權(quán)利要求6-9任一項(xiàng)所述的應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)裝置,其特征在于,所述第二轉(zhuǎn)換模塊具體用于將所述第一文本信息中的操作指令逆向解析并轉(zhuǎn)換為逆向操作指令;及將所述第一文本信息中的操作指令的執(zhí)行順序逆向解析并轉(zhuǎn)換為逆向操作指令的逆向執(zhí)行順序。
【專利摘要】本發(fā)明提供了一種應(yīng)用于數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)方法及裝置,所述方法包括:接收數(shù)據(jù)恢復(fù)請(qǐng)求;確定與數(shù)據(jù)恢復(fù)請(qǐng)求相應(yīng)的二進(jìn)制日志信息;將二進(jìn)制日志信息解析并轉(zhuǎn)換為第一文本信息;將第一文本信息逆向解析并轉(zhuǎn)換成第二文本信息;基于第二文本信息執(zhí)行數(shù)據(jù)恢復(fù)。本發(fā)明的方案通過僅對(duì)待恢復(fù)時(shí)間區(qū)間內(nèi)的二進(jìn)制日志信息進(jìn)行轉(zhuǎn)換處理,大大降低了數(shù)據(jù)處理量,從而有效地降低數(shù)據(jù)庫的數(shù)據(jù)恢復(fù)時(shí)間,當(dāng)發(fā)生對(duì)數(shù)據(jù)的誤操作等情況時(shí),可以縮短前端服務(wù)被中斷的時(shí)長,大大降低對(duì)前端用戶的使用影響。
【IPC分類】G06F11-14, G06F17-30
【公開號(hào)】CN104765659
【申請(qǐng)?zhí)枴緾N201510218185
【發(fā)明人】李丹
【申請(qǐng)人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司
【公開日】2015年7月8日
【申請(qǐng)日】2015年4月30日