數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫存儲(chǔ)技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法及裝置。
【背景技術(shù)】
[0002]數(shù)據(jù)庫備份是容災(zāi)的基礎(chǔ),是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導(dǎo)致數(shù)據(jù)丟失,而將全部或部分?jǐn)?shù)據(jù)集合從應(yīng)用主機(jī)的硬盤或陣列復(fù)制到其它的存儲(chǔ)介質(zhì)的過程。尤其在一些對(duì)數(shù)據(jù)可靠性要求很高的行業(yè)如銀行、證券、電信等,如果發(fā)生意外停機(jī)或數(shù)據(jù)丟失其損失會(huì)十分慘重。為此數(shù)據(jù)庫管理員應(yīng)針對(duì)具體的業(yè)務(wù)要求制定詳細(xì)的數(shù)據(jù)庫備份與災(zāi)難恢復(fù)策略,并通過模擬故障對(duì)每種可能的情況進(jìn)行嚴(yán)格測(cè)試,只有這樣才能保證數(shù)據(jù)的高可用性。數(shù)據(jù)庫的備份是一個(gè)長期的過程,而恢復(fù)只在發(fā)生事故后進(jìn)行,恢復(fù)可以看作是備份的逆過程,恢復(fù)的程度的好壞很大程度上依賴于備份的情況。此外,數(shù)據(jù)庫管理員在恢復(fù)時(shí)采取的步驟正確與否也直接影響最終的恢復(fù)結(jié)果。
[0003]分表是將一個(gè)大表按照一定的規(guī)則分解成多張具有獨(dú)立存儲(chǔ)空間的實(shí)體表,每個(gè)表都對(duì)應(yīng)三個(gè)文件,分別為數(shù)據(jù)文件,索引文件,表結(jié)構(gòu)文件。這些表可以分布在同一塊磁盤上,也可以在不同的機(jī)器上。讀寫的時(shí)候根據(jù)事先定義好的規(guī)則得到對(duì)應(yīng)的子表名,然后去操作它。
[0004]對(duì)于Mysql數(shù)據(jù)庫的備份來說,是將多個(gè)表看成是一個(gè)整體,備份時(shí)將這些表進(jìn)行整體備份。具體是,將這些表備份成一個(gè)壓縮文件,在該壓縮文件未進(jìn)行恢復(fù)前無法區(qū)分各個(gè)表的數(shù)據(jù)。如果因?yàn)檎`操作將某個(gè)表(如Tn)中的一條數(shù)據(jù)刪除而需要利用備份數(shù)據(jù)進(jìn)行恢復(fù)時(shí),現(xiàn)有技術(shù)需要將用于存儲(chǔ)備份數(shù)據(jù)的存儲(chǔ)機(jī)上的整個(gè)壓縮文件(包含全量數(shù)據(jù))拷貝到另一臺(tái)機(jī)器上,然后在該臺(tái)機(jī)器上對(duì)壓縮文件進(jìn)行解壓縮、解密和恢復(fù)處理,在恢復(fù)得到數(shù)據(jù)庫可識(shí)別的數(shù)據(jù)之后,啟動(dòng)查找表Tn,再查找對(duì)應(yīng)的數(shù)據(jù),將數(shù)據(jù)灌入到數(shù)據(jù)庫中。
[0005]現(xiàn)有技術(shù)的數(shù)據(jù)恢復(fù)需要經(jīng)歷全量數(shù)據(jù)的拷貝、解壓、解密和恢復(fù),以及后續(xù)的啟動(dòng)程序處理。為了恢復(fù)一條數(shù)據(jù),需要操作全量數(shù)據(jù),操作復(fù)雜且十分耗時(shí),恢復(fù)效率極低。
【發(fā)明內(nèi)容】
[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法及裝置。
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法,用于基于所述數(shù)據(jù)庫的備份文件對(duì)所述數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行恢復(fù),所述方法包括:
[0008]獲取待恢復(fù)的數(shù)據(jù)所屬的表的標(biāo)識(shí);
[0009]根據(jù)所述表的標(biāo)識(shí),從備份文件中拷貝所述公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件;
[0010]對(duì)所述公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件進(jìn)行解壓縮處理,得到公共元數(shù)據(jù)文件和表文件;[0011 ]讀取所述公共元數(shù)據(jù)文件和所述表文件,查找到待恢復(fù)的數(shù)據(jù)對(duì)應(yīng)的備份數(shù)據(jù),將所述備份數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。
[0012]根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)裝置,用于基于所述數(shù)據(jù)庫的備份文件對(duì)所述數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行恢復(fù),所述裝置包括:
[0013]獲取模塊,適于獲取待恢復(fù)的數(shù)據(jù)所屬的表的標(biāo)識(shí);
[0014]拷貝模塊,適于根據(jù)所述表的標(biāo)識(shí),從備份文件中拷貝所述公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件;
[0015]解壓縮處理模塊,適于對(duì)所述公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件進(jìn)行解壓縮處理,得到公共元數(shù)據(jù)文件和表文件;
[0016]恢復(fù)模塊,適于讀取所述公共元數(shù)據(jù)文件和所述表文件,查找到待恢復(fù)的數(shù)據(jù)對(duì)應(yīng)的備份數(shù)據(jù),將所述備份數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。
[0017]根據(jù)本發(fā)明提供的數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法及裝置,對(duì)于待恢復(fù)的數(shù)據(jù),獲取其所屬的表的標(biāo)識(shí);根據(jù)表的標(biāo)識(shí),從備份文件中拷貝公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件;對(duì)公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件進(jìn)行解壓縮處理,得到公共元數(shù)據(jù)文件和表文件;讀取公共元數(shù)據(jù)文件和表文件,查找到待恢復(fù)的數(shù)據(jù)對(duì)應(yīng)的備份數(shù)據(jù),將備份數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。與現(xiàn)有技術(shù)相比,本發(fā)明無需對(duì)全量數(shù)據(jù)進(jìn)行拷貝和解壓縮,僅處理一張表的壓縮文件和公共元數(shù)據(jù)壓縮文件即可,處理的數(shù)據(jù)量大大減小,對(duì)應(yīng)的處理時(shí)間也大大縮短,因此提高了數(shù)據(jù)恢復(fù)的效率。
[0018]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0019]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0020]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法的流程示意圖;
[0021]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)裝置的功能框圖。
【具體實(shí)施方式】
[0022]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0023]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的數(shù)據(jù)庫中數(shù)據(jù)的恢復(fù)方法的流程示意圖。該方法用于基于數(shù)據(jù)庫的備份文件對(duì)數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行恢復(fù),如圖1所示,該方法包括如下步驟:
[0024]步驟SlOl,獲取待恢復(fù)的數(shù)據(jù)所屬的表的標(biāo)識(shí)。
[0025]本實(shí)施例以支持分表技術(shù)的Mysql數(shù)據(jù)庫為例進(jìn)行說明,但本發(fā)明提供的方案不僅限于應(yīng)用在Mysql數(shù)據(jù)庫中,還可應(yīng)用于其他同類型的數(shù)據(jù)庫中。
[0026]本發(fā)明與現(xiàn)有技術(shù)的一個(gè)區(qū)別在于,數(shù)據(jù)庫備份操作是以表為單位進(jìn)行,將數(shù)據(jù)庫中的每個(gè)表進(jìn)行備份得到一個(gè)表數(shù)據(jù)文件以及該表的元數(shù)據(jù)文件,如表結(jié)構(gòu)文件和表索引文件等等,經(jīng)過加密和壓縮處理后最終得到的備份文件包括每個(gè)表對(duì)應(yīng)的壓縮文件。本發(fā)明中,可以對(duì)每個(gè)表的表數(shù)據(jù)文件、表結(jié)構(gòu)文件、表索引文件以及一些輔助文件整體壓縮形成的一個(gè)單獨(dú)的文件,作為這個(gè)表對(duì)應(yīng)的壓縮文件;也可以是對(duì)每個(gè)表的各個(gè)文件分別進(jìn)行壓縮得到表數(shù)據(jù)壓縮文件、表結(jié)構(gòu)壓縮文件和表索引壓縮文件,還可包括一些其它的輔助文件,這些文件組合形成這個(gè)表對(duì)應(yīng)的壓縮文件。
[0027]除此之外,備份文件還包括公共元數(shù)據(jù)壓縮文件,該公共元數(shù)據(jù)壓縮文件用于記錄Mysql數(shù)據(jù)庫的所有表的公共元數(shù)據(jù),如數(shù)據(jù)庫實(shí)例大小、表數(shù)量、每張表的數(shù)據(jù)量大小以及包含的索引信息等全局屬性信息。
[0028]例如,設(shè)Mysql數(shù)據(jù)庫共有η個(gè)表,分別為Tl、Τ2、…、Tn,經(jīng)過數(shù)據(jù)庫備份操作后得到的備份文件包括Tl對(duì)應(yīng)的壓縮文件(可選包含表數(shù)據(jù)壓縮文件、表結(jié)構(gòu)壓縮文件、表索引壓縮文件以及其它輔助文件)、Τ2對(duì)應(yīng)的壓縮文件、…、Tn對(duì)應(yīng)的壓縮文件。各個(gè)表的壓縮文件彼此是獨(dú)立的,根據(jù)表的標(biāo)識(shí)可查找到這個(gè)表的壓縮文件。
[0029]如果因?yàn)檎`操作將某個(gè)表中的一條數(shù)據(jù)刪除,在進(jìn)行數(shù)據(jù)恢復(fù)時(shí),首先獲取待恢復(fù)的數(shù)據(jù)所屬的表的標(biāo)識(shí)。
[0030]步驟S102,根據(jù)表的標(biāo)識(shí),從備份文件中拷貝公共元數(shù)據(jù)壓縮文件以及該表對(duì)應(yīng)的壓縮文件。
[0031]如果需要恢復(fù)Tl這張表中的某一條數(shù)據(jù),則從備份文件中拷貝公共元數(shù)據(jù)壓縮文件和Tl對(duì)應(yīng)的壓縮文件,Tl對(duì)應(yīng)的壓縮文件包括Tl的表數(shù)據(jù)壓縮文件、表結(jié)構(gòu)壓縮文件、表索引壓縮文件以及其它輔助文件。具體地,在實(shí)際數(shù)據(jù)恢復(fù)時(shí),將用于存儲(chǔ)備份文件的存儲(chǔ)機(jī)上的上述公共元數(shù)據(jù)壓縮文件和Tl對(duì)應(yīng)的壓縮文件拷貝到另一臺(tái)機(jī)器上,在另一臺(tái)機(jī)器中實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。
[0032]與現(xiàn)有技術(shù)相比,本步驟無需拷貝全量數(shù)據(jù)的壓縮文件,僅拷貝一張表