一種數據恢復方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機技術領域,尤其涉及一種數據恢復方法及裝置。
【背景技術】
[0002]隨著網絡的不斷發展,為用戶提供服務的方法已經由軟件即服務(software as aservice, saas)的方式轉變為平臺即服務(platform as a service,paas)的方式,hbase數據庫就是建立Paas之上的,主要用于為用戶提供存儲空間。
[0003]在實際應用中,在paas環境下的hbase數據庫沒有對數據備份的功能,因此在存儲數據的過程中,為了保證數據的安全性,通常會將具有備份功能的had00p(had00p通常是指hbase數據庫中所存在的一種數據存儲層級)與hbase數據庫整合在一起使用,因此數據在數據庫(如hbase)中會形成若干個備份存入到若干個物理磁盤中,只要有一個物理磁盤沒有損壞,數據就沒有丟失或損壞,而是完整的存儲了下來,這些數據可供用戶再次讀取和使用。
[0004]但是數據在數據庫(如hbase)中存儲時,如果hadoop文件的數據在物理磁盤中出現了徹底的丟失,就會致使該數據無法被正常的讀取和使用,在現有技術中,數據中的一部分徹底丟失,是無法被恢復的,這樣就導致整個數據不能繼續讀取和使用了。
[0005]例如,hbase中一個邏輯存儲文件hfile (存儲大小為192MB)里存儲了某一用戶的數據,該hfile文件在進行存儲的過程中,會先在hadoop層分成三份:hadoopl,hadoop2,hadoop3,每個hadoop文件里存儲了 64MB大小的數據,每個hadoop文件會分別在若干個物理磁盤中進行存儲,假設所有物理磁盤上的hadoop2文件徹底的丟失了,用軟件也無法找回,這樣對于整個hfile文件來說是不完整的,因此就會致使整個hfile文件不能繼續被使用和讀取,hfile文件內的hadoopl文件和hadoop3文件也無法繼續被讀取和使用了。
[0006]從上述例子看出,一個邏輯存儲文件hfile中某一部分的hadoop文件在物理磁盤上徹底丟失了就會導致整個hfile數據不能繼續被用戶讀取和使用,并且剩余沒有丟失的數據也無法被繼續讀取和使用了,對于用戶來說,一部分數據的徹底丟失導致整個數據的不能繼續被讀取和使用,損失較大。
【發明內容】
[0007]本發明實施例提供一種數據恢復方法及裝置,用以解決現有技術中數據庫內的文件因某一部分數據丟失而導致該文件不能被繼續讀取和使用,損失較大的問題。
[0008]本發明實施例提供的一種數據恢復方法方法,包括:
[0009]確定數據文件中包含的各子文件;
[0010]掃描各子文件中的數據塊,確定出各子文件中滿足第一預設條件的數據塊;
[0011]在確定出的各數據塊中,掃描滿足第二預設條件的鍵值對;
[0012]保存掃描出的鍵值對,作為恢復出的數據文件。
[0013]本發明實施例提供的一種數據恢復裝置,包括:
[0014]確定模塊,用于確定數據文件中包含的各子文件;
[0015]第一掃描模塊,用于掃描各子文件中的數據塊,確定出各子文件中滿足第一預設條件的數據塊;
[0016]第二掃描模塊,用于在確定出的各數據塊中,掃描滿足第二預設條件的鍵值對;
[0017]存儲模塊,用于保存掃描出的鍵值對,作為恢復出的數據文件。
[0018]本發明實施例提供一種數據恢復方法及裝置,該方法針對要恢復的數據文件,確定數據文件中包含的各子文件,掃描各子文件中的數據塊,確定出各子文件中滿足第一預設條件的數據塊,在確定出的各數據塊中,掃描滿足第二預設條件的鍵值對,保存掃描出的鍵值對,作為恢復出的數據文件。因此,雖然存儲在數據庫中的文件會因為一些因素而徹底丟失掉文件中的某一數據,導致存儲在數據庫中的文件不能繼續被讀取和使用了,對于用戶來說損失較大,但是通過上述方法,可以將文件中剩余沒有丟失的數據恢復出來,可降低用戶的損失。
【附圖說明】
[0019]此處所說明的附圖用來提供對本發明的進一步理解,構成本發明的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
[0020]圖1為本發明實施例提供的數據恢復方法的過程示意圖;
[0021]圖2為本發明實施例提供的hbase數據塊中邏輯文件hfile的實際存儲示意圖;
[0022]圖3為本發明實施例提供的子文件與數據塊的包含關系示意圖;
[0023]圖4為本發明實施例提供的無校驗數據塊的結構示意圖;
[0024]圖5為本發明實施例提供的有校驗數據塊的結構示意圖
[0025]圖6為本發明實施例提供的鍵值對的結構示意圖。
[0026]圖7為本發明實施例提供的數據恢復裝置的結構示意圖。
【具體實施方式】
[0027]為使本發明的目的、技術方案和優點更加清楚,下面將結合本發明具體實施例及相應的附圖對本發明技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0028]圖1為本發明實施例提供的數據恢復過程,具體包括以下步驟:
[0029]SlOl:確定數據文件中包含的各子文件。
[0030]在本發明實施例中,數據恢復設備針對要恢復數據的文件,首先要確定數據文件中包含的各數據的子文件。
[0031]所述數據文件是存儲在數據庫中的用戶數據所形成的文件,如:以hbase數據庫中的邏輯文件hfile為例,所述的子文件是用戶數據文件內包含的子文件,如:hfile對應的hadoop文件(hadoop文件是位于hadoop層中的文件),數據庫在寫入用戶數據的過程中,會將用戶的數據寫入到hfile中,hbase數據庫中的hfile對應到hadoop層將變成N份hadoop文件,hadoop文件內存放了用戶的數據,每一個hadoop文件會分別存儲在每一個物理磁盤中。
[0032]hbase數據庫本身沒有備份功能,通過與hadoop結合在一起,就可以將用戶存入到數據庫中的用戶數據在相應的存儲設備中的多個物理磁盤上形成備份,只要有一個物理磁盤沒有損壞,存入到hbase數據庫中的數據文件就不會丟失,這樣就保證了用戶數據的安全性。
[0033]S102:掃描各子文件中的數據塊,確定出各子文件中滿足第一預設條件的數據塊。
[0034]在本發明實施例中,一個子文件內可包含多個數據塊,數據庫在存放用戶數據時,數據庫會對用戶的數據進行加工并存放在數據塊中的數據部分,在整個數據塊中數據部分的前綴部分(或者后綴部分)會加上固定的字段,固定的字段會寫入相應的數據信息,從而形成一個完整的數據塊結構。在數據恢復的過程中,數據恢復設備對各子文件中的數據塊進行掃描,通過數據塊中的前綴部分(或者后綴部分)找出那些具有完整數據塊結構的數據塊。
[0035]因此,上述步驟S102中,所述滿足第一預設條件,就是滿足上述數據部分的前綴部分(或后綴部分)的固定字段。
[0036]S103:在確定出的各數據塊中,掃描滿足第二預設條件的鍵值對;
[0037]在本發明實施例中,所述鍵值對存儲在所述數據塊的數據部分內,每個數據部分中可包含多個鍵值對,鍵值對內存入的是用戶真實的數據。
[0038]所述鍵值對中包含有多個固定的字段,用于存儲用戶的數據。也即,數據庫會對用戶的數據進行加工,使其數據的格式符合該鍵值對的數據結構,并將用戶的數據存儲在鍵值對中。
[0039]因此,上述步驟S103中,所述滿足第二預設條件,就是滿足上述數據部分中的各鍵值對的多個固定的字段。
[0040]在數據恢復的過程中,數據恢復設備對滿足上述步驟S102中的所述第一預設條件的數據塊進行掃描,找出那些具有完整鍵值對數據結構的鍵值對。
[0041]S104:保存掃描出的鍵值對,作為恢復出的數據文件。
[0042]在本申請實施例中,數據恢復設備在掃描數據文件的過程中,通過校驗找到了滿足第一預設條件的數據塊,在滿足第一預設條件的數據塊中找到滿足第二預設條件的鍵值對,解析出鍵值對中各個字段所包含的數據,將這些字段內的數據保存到新的鍵值對中,并將這些鍵值對作為恢復出的數據文件保存到新的數據庫中,從而完成數據恢復過程。
[0043]通過完成上述步驟,hfile中未丟失的數據文件就恢復并保存了下來,這樣就降低了用戶的損失。
[0044]在本發明實施例中,在所述數據文件為hbase數據庫中的邏輯文件hfile,所述子文件為hfile對應的hadoop文件的場景下,對于上述步驟SlOl而言,確定數據文件中包含的各子文件,具體為:確定hbase數據庫中hfile對應的各hadoop文件。
[0045]例如,如圖2所示,用戶在向hbase數據庫中存入數據的過程中,假設這個hfile有150M,hadoop文件默認為64M,那么hfile對應到hadoop層就變成了三個文件:第一個hadoop文件A是64M,第二個hadoop文件B是64M,第三個hadoop文件C是22M。每個hadoop文件都會存入三個不同的物理磁盤中,如:物理磁盤1,物理磁盤2,物理磁盤3,hadoop文件A在物理磁盤I上存儲為Al,在物理磁盤2上存儲為A