本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,尤其涉及一種數(shù)據(jù)恢復(fù)方法和裝置。
背景技術(shù):
:隨著Hbase(一個(gè)分布式的、面向列的開源數(shù)據(jù)庫)在重要商業(yè)系統(tǒng)中的大量應(yīng)用,許多企業(yè)通過對(duì)Hbase建立健壯的備份和故障恢復(fù)機(jī)制,來保證企業(yè)資產(chǎn)/企業(yè)數(shù)據(jù)資產(chǎn)。HBase是一個(gè)基于LSM(LogStructuredMerge,日志結(jié)構(gòu)合并)樹的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng),它使用復(fù)雜的內(nèi)部機(jī)制確保數(shù)據(jù)準(zhǔn)確性、一致性、多版本等,而且,Hbase中需要備份的數(shù)據(jù)可以位于大量服務(wù)器上。目前,為了對(duì)Hbase中的數(shù)據(jù)進(jìn)行備份,則需要使用Hbase內(nèi)置的導(dǎo)出工具,將大量服務(wù)器上的數(shù)據(jù)導(dǎo)出,從而完成數(shù)據(jù)備份。其中,該導(dǎo)出工具可以啟動(dòng)一個(gè)mapreduce(映射化簡)任務(wù),并通過一系列Hbase的API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)來調(diào)用Hbase集群內(nèi)的數(shù)據(jù),并將這些數(shù)據(jù)寫入到指定的HDFS(HadoopDistributedFileSystem,Hadoop分布式文件系統(tǒng))文件中,然后將HDFS文件備份到本地,從而完成數(shù)據(jù)備份過程。由于導(dǎo)出工具啟動(dòng)了mapreduce任務(wù),并通過Hbase的API來調(diào)用Hbase集群內(nèi)的數(shù)據(jù),從而對(duì)Hbase集群產(chǎn)生了一定壓力,也會(huì)對(duì)現(xiàn)有業(yè)務(wù)產(chǎn)生影響。由于備份數(shù)據(jù)需要存儲(chǔ)在HDFS文件上,因此依賴于HDFS集群環(huán)境的穩(wěn)定性。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種數(shù)據(jù)恢復(fù)方法,所述方法包括以下步驟:數(shù)據(jù)備份階段:獲取服務(wù)器列表和region信息列表;針對(duì)region信息列表內(nèi)的每個(gè)region信息,從服務(wù)器列表內(nèi)為region信息分配至少兩個(gè)服務(wù)器,并指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí);針對(duì)服務(wù)器列表內(nèi)的每個(gè)服務(wù)器,為服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu),所述節(jié)點(diǎn)信息結(jié)構(gòu)包括需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí),以使所述服務(wù)器利用所述節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;數(shù)據(jù)恢復(fù)階段:針對(duì)所述region信息列表內(nèi)的每個(gè)region信息,從所述數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,選擇該region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。所述服務(wù)器利用所述節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份的過程,具體包括:所述服務(wù)器從所述節(jié)點(diǎn)信息結(jié)構(gòu)中解析出需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí);所述服務(wù)器按照備份優(yōu)先級(jí)從高到低的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從第一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;或者,按照備份優(yōu)先級(jí)從低到高的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從最后一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。所述方法進(jìn)一步包括:當(dāng)有服務(wù)器發(fā)生異常時(shí),獲取遷移的目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到所述目的服務(wù)器,由所述目的服務(wù)器對(duì)備份任務(wù)進(jìn)行處理;其中,所述目的服務(wù)器對(duì)所述備份任務(wù)進(jìn)行處理包括:所述目的服務(wù)器對(duì)需要由發(fā)生異常的服務(wù)器進(jìn)行備份的region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;若當(dāng)前存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為已經(jīng)備份完成的服務(wù)器;若當(dāng)前不存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為備份數(shù)據(jù)最快的服務(wù)器。所述方法進(jìn)一步包括:在從所述服務(wù)器列表內(nèi)為所述region信息列表內(nèi)的每個(gè)region信息分配至少兩個(gè)服務(wù)器的過程中,每個(gè)服務(wù)器上被分配的region信息的數(shù)量均衡;在指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí)的過程中,指定所述region信息在不同的服務(wù)器上的備份優(yōu)先級(jí)不同。所述方法進(jìn)一步包括:在所述服務(wù)器對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份時(shí),所述數(shù)據(jù)的命名格式為:該region信息和該region信息在所述服務(wù)器上的備份優(yōu)先級(jí)標(biāo)識(shí);所述數(shù)據(jù)恢復(fù)階段,具體包括:從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,查詢到具有最高優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),并對(duì)查詢到的數(shù)據(jù)進(jìn)行恢復(fù);判斷當(dāng)前是否存在未查詢到的數(shù)據(jù);如果否,則完成數(shù)據(jù)恢復(fù)階段;如果是,則查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),針對(duì)所述所有數(shù)據(jù)中的每個(gè)數(shù)據(jù),判斷該數(shù)據(jù)是否已經(jīng)存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù);如果有,則丟棄該數(shù)據(jù),如果沒有,則對(duì)該數(shù)據(jù)進(jìn)行恢復(fù);如果所述所有數(shù)據(jù)均完成處理,則返回判斷當(dāng)前是否存在未查詢到的數(shù)據(jù)的步驟。本發(fā)明提供一種數(shù)據(jù)恢復(fù)裝置,所述裝置具體包括:數(shù)據(jù)備份模塊,用于執(zhí)行數(shù)據(jù)備份階段,所述數(shù)據(jù)備份模塊具體用于:獲取服務(wù)器列表和region信息列表;針對(duì)所述region信息列表內(nèi)的每個(gè)region信息,從所述服務(wù)器列表內(nèi)為region信息分配至少兩個(gè)服務(wù)器,并指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí);針對(duì)所述服務(wù)器列表內(nèi)的每個(gè)服務(wù)器,為服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu),所述節(jié)點(diǎn)信息結(jié)構(gòu)包括需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí),以使所述服務(wù)器利用所述節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;數(shù)據(jù)恢復(fù)模塊,用于執(zhí)行數(shù)據(jù)恢復(fù)階段,所述數(shù)據(jù)恢復(fù)模塊具體用于:針對(duì)所述region信息列表內(nèi)的每個(gè)region信息,從所述數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,選擇該region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。所述數(shù)據(jù)備份模塊為所述服務(wù)器生成的節(jié)點(diǎn)信息結(jié)構(gòu),用于使所述服務(wù)器從所述節(jié)點(diǎn)信息結(jié)構(gòu)中解析出需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí),按照備份優(yōu)先級(jí)從高到低的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從第一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,或者,按照備份優(yōu)先級(jí)從低到高的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從最后一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。所述數(shù)據(jù)備份模塊,還用于當(dāng)有服務(wù)器發(fā)生異常時(shí),獲取遷移的目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到所述目的服務(wù)器,由所述目的服務(wù)器對(duì)備份任務(wù)進(jìn)行處理;其中,所述目的服務(wù)器對(duì)所述備份任務(wù)進(jìn)行處理包括:所述目的服務(wù)器對(duì)需要由發(fā)生異常的服務(wù)器進(jìn)行備份的region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;若當(dāng)前存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為已經(jīng)備份完成的服務(wù)器;若當(dāng)前不存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為備份數(shù)據(jù)最快的服務(wù)器。所述數(shù)據(jù)備份模塊,進(jìn)一步用于在從所述服務(wù)器列表內(nèi)為所述region信息列表內(nèi)的每個(gè)region信息分配至少兩個(gè)服務(wù)器的過程中,每個(gè)服務(wù)器上被分配的region信息的數(shù)量均衡;在指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí)的過程中,指定所述region信息在不同的服務(wù)器上的備份優(yōu)先級(jí)不同。在所述服務(wù)器對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份時(shí),所述數(shù)據(jù)的命名格式為:該region信息和該region信息在所述服務(wù)器上的備份優(yōu)先級(jí)標(biāo)識(shí);所述數(shù)據(jù)恢復(fù)模塊,具體用于從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,查詢到具有最高優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),并對(duì)查詢到的數(shù)據(jù)進(jìn)行恢復(fù);判斷當(dāng)前是否存在未查詢到的數(shù)據(jù);如果否,則完成數(shù)據(jù)恢復(fù)階段;如果是,則查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),針對(duì)所述所有數(shù)據(jù)中的每個(gè)數(shù)據(jù),判斷該數(shù)據(jù)是否已經(jīng)存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù);如果有,則丟棄該數(shù)據(jù),如果沒有,則對(duì)該數(shù)據(jù)進(jìn)行恢復(fù);如果所述所有數(shù)據(jù)均完成處理,則返回判斷當(dāng)前是否存在未查詢到的數(shù)據(jù)的步驟?;谏鲜黾夹g(shù)方案,本發(fā)明實(shí)施例中,可以由各服務(wù)器對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,即通過文件拷貝方式對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,不需要通過導(dǎo)出工具將服務(wù)器上的數(shù)據(jù)導(dǎo)出,不需要通過API來調(diào)用Hbase集群內(nèi)的數(shù)據(jù),減輕對(duì)Hbase集群的壓力,避免對(duì)現(xiàn)有業(yè)務(wù)產(chǎn)生影響。而且,備份數(shù)據(jù)可以保存在服務(wù)器本地,不需要依賴其它備份服務(wù)器,備份數(shù)據(jù)不需要存儲(chǔ)在HDFS文件上,不依賴于HDFS集群環(huán)境的穩(wěn)定性。而且,多個(gè)服務(wù)器可以并發(fā)備份數(shù)據(jù),可以冗余備份數(shù)據(jù),解決單一服務(wù)器本地存儲(chǔ)空間不足、數(shù)據(jù)本地容災(zāi)備份等問題,并降低了對(duì)每個(gè)服務(wù)器本地備份空間的要求,加快備份的速度,提高數(shù)據(jù)恢復(fù)的效率。而且,通過使用至少兩個(gè)服務(wù)器對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,可以保證數(shù)據(jù)備份的完整性、數(shù)據(jù)恢復(fù)的完整性。附圖說明為了更加清楚地說明本發(fā)明實(shí)施例或者現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例或者現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明一種實(shí)施方式中的數(shù)據(jù)恢復(fù)方法的流程圖;圖2是本發(fā)明一種實(shí)施方式中的數(shù)據(jù)備份階段的處理流程圖;圖3是本發(fā)明一種實(shí)施方式中的節(jié)點(diǎn)信息結(jié)構(gòu)集合的示意圖;圖4是本發(fā)明一種實(shí)施方式中的遷移備份任務(wù)的示意圖;圖5是本發(fā)明一種實(shí)施方式中的數(shù)據(jù)恢復(fù)階段的處理流程圖;圖6是本發(fā)明一種實(shí)施方式中的數(shù)據(jù)恢復(fù)的節(jié)點(diǎn)信息結(jié)構(gòu)集合的示意圖;圖7是本發(fā)明一種實(shí)施方式中的控制設(shè)備的硬件結(jié)構(gòu)圖;圖8是本發(fā)明一種實(shí)施方式中的數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)圖。具體實(shí)施方式在本發(fā)明使用的術(shù)語僅僅是出于描述特定實(shí)施例的目的,而非限制本發(fā)明。本發(fā)明和權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其它含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。應(yīng)當(dāng)理解,盡管在本發(fā)明可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,此外,所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。本發(fā)明實(shí)施例中提出了一種數(shù)據(jù)恢復(fù)方法,以對(duì)Hbase中的數(shù)據(jù)進(jìn)行備份,并在另一數(shù)據(jù)庫集群中對(duì)備份的數(shù)據(jù)進(jìn)行恢復(fù),從而對(duì)Hbase建立健壯的備份和故障恢復(fù)機(jī)制,以保證企業(yè)資產(chǎn)/企業(yè)數(shù)據(jù)資產(chǎn)。為了對(duì)Hbase中的數(shù)據(jù)進(jìn)行備份,本發(fā)明實(shí)施例中,以Hbase中的region為單位來備份數(shù)據(jù)。其中,region是Hbase的子集,是Hbase中數(shù)據(jù)存儲(chǔ)和管理的基本單位,Hbase中可以包含多個(gè)region,region按照Rowkey(行鍵)區(qū)間劃分,作為分布到集群的基本單位。在一個(gè)例子中,該數(shù)據(jù)恢復(fù)方法可以包括數(shù)據(jù)備份階段以及數(shù)據(jù)恢復(fù)階段。在數(shù)據(jù)備份階段中,需要將源數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行備份。而在數(shù)據(jù)恢復(fù)階段中,需要將數(shù)據(jù)備份階段備份的數(shù)據(jù)恢復(fù)到目標(biāo)數(shù)據(jù)庫中。源數(shù)據(jù)庫可以為Hbase,而對(duì)于目標(biāo)數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu),可以根據(jù)實(shí)際需要進(jìn)行選擇,在此不再贅述。在一個(gè)例子中,該數(shù)據(jù)恢復(fù)方法可以應(yīng)用于控制設(shè)備上,該控制設(shè)備可以為一個(gè)邏輯意義上的設(shè)備,可以包含多個(gè)功能模塊,這些功能模塊可以分布在相同的物理設(shè)備上,也可以分布在不同的物理設(shè)備上。以這些功能模塊分布在不同的物理設(shè)備上為例,即這些功能模塊是分布式部署的。其中,這些功能模塊可以包含至少兩個(gè)功能模塊,一個(gè)功能模塊部署在源數(shù)據(jù)庫系統(tǒng)的管理設(shè)備上,執(zhí)行數(shù)據(jù)備份階段的操作,另一個(gè)功能模塊部署在目標(biāo)數(shù)據(jù)庫系統(tǒng)的管理設(shè)備上,執(zhí)行數(shù)據(jù)恢復(fù)階段的操作,本發(fā)明實(shí)施例對(duì)此執(zhí)行主體不做限制。參見圖1所示,為數(shù)據(jù)恢復(fù)方法的流程圖,該方法可以包括以下步驟:步驟101,數(shù)據(jù)備份階段:獲取服務(wù)器列表和region信息列表;針對(duì)region信息列表內(nèi)的每個(gè)region信息,從服務(wù)器列表內(nèi)為該region信息分配至少兩個(gè)服務(wù)器,并指定該region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí);針對(duì)服務(wù)器列表內(nèi)的每個(gè)服務(wù)器,為該服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu),該節(jié)點(diǎn)信息結(jié)構(gòu)包括需要由該服務(wù)器進(jìn)行備份的region信息以及該region信息在該服務(wù)器上的備份優(yōu)先級(jí),以使該服務(wù)器利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。步驟102,數(shù)據(jù)恢復(fù)階段:針對(duì)region信息列表內(nèi)的每個(gè)region信息,從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,選擇該region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。參見圖2所示,為針對(duì)步驟101的數(shù)據(jù)備份階段的處理流程圖,其包括:步驟201,獲取服務(wù)器列表和region信息列表。步驟202,針對(duì)region信息列表內(nèi)的每個(gè)region信息,從服務(wù)器列表內(nèi)為該region信息分配至少兩個(gè)服務(wù)器(即從服務(wù)器列表內(nèi)選擇至少兩個(gè)服務(wù)器,并分配給該region信息),并指定該region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí)。步驟203,針對(duì)服務(wù)器列表內(nèi)的每個(gè)服務(wù)器,為該服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu),以使該服務(wù)器利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。在一個(gè)例子中,該節(jié)點(diǎn)信息結(jié)構(gòu)具體可以包括但不限于:需要由該服務(wù)器進(jìn)行備份的region信息以及該region信息在該服務(wù)器上的備份優(yōu)先級(jí)。針對(duì)步驟201,在一個(gè)例子中,由于源數(shù)據(jù)庫系統(tǒng)中的服務(wù)器和region信息都是已知的,因此可以直接獲取到服務(wù)器列表和region信息列表。例如,在源數(shù)據(jù)庫系統(tǒng)中,假設(shè)由服務(wù)器1-服務(wù)器5來存儲(chǔ)region信息對(duì)應(yīng)的數(shù)據(jù),則服務(wù)器列表中可以包括服務(wù)器1-服務(wù)器5。在源數(shù)據(jù)庫系統(tǒng)中,假設(shè)服務(wù)器上可以存儲(chǔ)region1-region10的數(shù)據(jù),則region信息列表中可以包括region1-region10。在一個(gè)例子中,可以通過如下“hadoopfs–ls/hbase/data/defaule/表名”命令,得到該表名對(duì)應(yīng)的所有region信息,并且得到的這些region信息已經(jīng)按照ASCII(AmericanStandardCodeforInformationInterchange,美國信息交換標(biāo)準(zhǔn)代碼)進(jìn)行排序,例如,排序后的region信息為region1-region10。進(jìn)一步的,還可以將region1-region10添加到region信息列表中,從而得到上述region信息列表。針對(duì)步驟202,考慮到集群備份的容災(zāi)性,在任意一個(gè)服務(wù)器的硬盤發(fā)生故障,并造成備份數(shù)據(jù)丟失的情況下,依然能夠確保備份數(shù)據(jù)的完整性,則可以從服務(wù)器列表內(nèi)為每個(gè)region信息分配至少兩個(gè)服務(wù)器,這樣,當(dāng)一個(gè)服務(wù)器的硬盤發(fā)生故障時(shí),還可以由其它服務(wù)器進(jìn)行數(shù)據(jù)備份,從而確保備份數(shù)據(jù)的完整性。在一個(gè)例子中,可以從服務(wù)器列表內(nèi)為每個(gè)region信息分配3個(gè)服務(wù)器,也就是說,同一個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)會(huì)被3個(gè)服務(wù)器進(jìn)行數(shù)據(jù)備份。在一個(gè)例子中,針對(duì)region信息列表內(nèi)的每個(gè)region信息,在從服務(wù)器列表內(nèi)為各region信息分配至少兩個(gè)服務(wù)器的過程中,則每個(gè)服務(wù)器上被分配的region信息的數(shù)量均衡。每個(gè)服務(wù)器上被分配的region信息的數(shù)量均衡是指:每個(gè)服務(wù)器上被分配的region信息的數(shù)量可以相同,也可以不同。其中,當(dāng)region信息的數(shù)量可以平均分配到所有服務(wù)器時(shí),每個(gè)服務(wù)器上被分配的region信息的數(shù)量相同,如region信息的數(shù)量為15,服務(wù)器的數(shù)量為5,則可以將15個(gè)region信息平均分配到5個(gè)服務(wù)器上,每個(gè)服務(wù)器分配3個(gè)region信息。當(dāng)region信息的數(shù)量無法平均分配到所有服務(wù)器時(shí),則每個(gè)服務(wù)器上被分配的region信息的數(shù)量不同,但是其是均衡的,如region信息的數(shù)量為14,服務(wù)器的數(shù)量為5,則有4個(gè)服務(wù)器上分配3個(gè)region信息,另一個(gè)服務(wù)器上分配2個(gè)region信息。在后續(xù)過程中,以每個(gè)服務(wù)器上被分配的region信息的數(shù)量相同為例進(jìn)行說明。在一個(gè)例子中,在指定該region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí)的過程中,可以指定該region信息在不同的服務(wù)器上的備份優(yōu)先級(jí)不同。為了闡述上述過程,以服務(wù)器列表包括服務(wù)器1-服務(wù)器5,region信息列表包括region1-region10為例進(jìn)行說明。為region1分配服務(wù)器1、服務(wù)器2和服務(wù)器3,且指定region1在服務(wù)器1、服務(wù)器2和服務(wù)器3上的備份優(yōu)先級(jí)分別為1、2、3,優(yōu)先級(jí)數(shù)值越小,優(yōu)先級(jí)越大。為region2分配服務(wù)器2、服務(wù)器3和服務(wù)器4,且指定region2在服務(wù)器2、服務(wù)器3和服務(wù)器4上的備份優(yōu)先級(jí)分別為1、2、3。為region3分配服務(wù)器3、服務(wù)器4和服務(wù)器5,且指定region3在服務(wù)器3、服務(wù)器4和服務(wù)器5上的備份優(yōu)先級(jí)分別為1、2、3。為region4分配服務(wù)器4、服務(wù)器5和服務(wù)器1,且指定region4在服務(wù)器4、服務(wù)器5和服務(wù)器1上的備份優(yōu)先級(jí)分別為1、2、3。以此類推,最終分配結(jié)果可以如表1所示。表1在一個(gè)例子中,考慮到后續(xù)數(shù)據(jù)還原時(shí),避免重復(fù)恢復(fù)的問題,以及為了標(biāo)示出region信息在每個(gè)服務(wù)器上的備份優(yōu)先級(jí),則最終分配結(jié)果還可以如表2所示,即每個(gè)region信息在不同服務(wù)器上有備份優(yōu)先級(jí)之分,其命名格式還可以為:region信息+“_”+序號(hào),該序號(hào)表示該region信息在服務(wù)器上的備份優(yōu)先級(jí)標(biāo)識(shí),如其中的1表示備份優(yōu)先級(jí)為1,其中的2表示備份優(yōu)先級(jí)為2,其中的3表示備份優(yōu)先級(jí)為3,而且,優(yōu)先級(jí)數(shù)值越小,則優(yōu)先級(jí)越大。表2服務(wù)器1服務(wù)器2服務(wù)器3服務(wù)器4服務(wù)器5region1region1_1region1_2region1_3region2region2_1region2_2region2_3region3region3_1region3_2region3_3region4region4_3region4_1region4_2region5region5_2region5_3region5_1region6region6_1region6_2region6_3region7region7_1region7_2region7_3region8region8_1region8_2region8_3region9region9_3region9_1region9_2region10region10_2region10_3region10_1從表2可以看出,region1-region10均被分配給三個(gè)服務(wù)器,且每個(gè)region信息在不同服務(wù)器上的備份優(yōu)先級(jí)不同。每個(gè)服務(wù)器被分配了6個(gè)region信息,且每個(gè)服務(wù)器上被分配的具有備份優(yōu)先級(jí)1的region信息的數(shù)量為2,具有備份優(yōu)先級(jí)2的region信息的數(shù)量為2,具有備份優(yōu)先級(jí)3的region信息的數(shù)量為2。針對(duì)步驟203,在一個(gè)例子中,基于表1或者表2所示的最終分配結(jié)果,可以為每個(gè)服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu)。例如,需要由服務(wù)器1進(jìn)行備份的region信息為region1、region4、region5、region6、region9、region10,因此,為該服務(wù)器1生成的節(jié)點(diǎn)信息結(jié)構(gòu)可以具體包括:region1+備份優(yōu)先級(jí)1、region4+備份優(yōu)先級(jí)3、region5+備份優(yōu)先級(jí)2、region6+備份優(yōu)先級(jí)1、region9+備份優(yōu)先級(jí)3、region10+備份優(yōu)先級(jí)2。此外,對(duì)于其它服務(wù)器的節(jié)點(diǎn)信息結(jié)構(gòu)的生成方式,與服務(wù)器1的節(jié)點(diǎn)信息結(jié)構(gòu)的生成方式類似,在此不再重復(fù)贅述。在一個(gè)例子中,在為服務(wù)器生成該節(jié)點(diǎn)信息結(jié)構(gòu)之后,則該服務(wù)器可以直接利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。其中,服務(wù)器利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份的過程,具體可以包括但不限于如下方式:服務(wù)器從該節(jié)點(diǎn)信息結(jié)構(gòu)中解析出需要由該服務(wù)器進(jìn)行備份的region信息以及該region信息在該服務(wù)器上的備份優(yōu)先級(jí)。進(jìn)一步的,服務(wù)器可以按照備份優(yōu)先級(jí)從高到低的順序,對(duì)需要由該服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從第一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;或者,服務(wù)器還可以按照備份優(yōu)先級(jí)從低到高的順序,對(duì)需要由該服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從最后一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。例如,服務(wù)器1可以從節(jié)點(diǎn)信息結(jié)構(gòu)中解析出需要由服務(wù)器1進(jìn)行備份的region信息為:region1、region4、region5、region6、region9、region10,且region1在服務(wù)器1上的備份優(yōu)先級(jí)為1、region4在服務(wù)器1上的備份優(yōu)先級(jí)為3、region5在服務(wù)器1上的備份優(yōu)先級(jí)為2、region6在服務(wù)器1上的備份優(yōu)先級(jí)為1、region9在服務(wù)器1上的備份優(yōu)先級(jí)為3、region10在服務(wù)器1上的備份優(yōu)先級(jí)為2。之后,服務(wù)器1按照備份優(yōu)先級(jí)從高到低的順序,對(duì)需要由服務(wù)器1進(jìn)行備份的region信息進(jìn)行排序,則排序結(jié)果為region1、region6、region5、region10、region4、region9。其中,對(duì)于備份優(yōu)先級(jí)相同的region信息,對(duì)于其順序可以根據(jù)實(shí)際需要任意選擇,例如,region1可以在region6之前,region6也可以在region1之前,對(duì)此不做限制?;蛘?,服務(wù)器1按照備份優(yōu)先級(jí)從低到高的順序進(jìn)行排序時(shí),排序結(jié)果為region9、region4、region10、region5、region6、region1。之后,服務(wù)器1對(duì)region1對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,待備份完成后,服務(wù)器1對(duì)region6對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,待備份完成后,服務(wù)器1對(duì)region5對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,待備份完成后,服務(wù)器1對(duì)region10對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,待備份完成后,服務(wù)器1對(duì)region4對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,待備份完成后,服務(wù)器1對(duì)region9對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。其中,對(duì)于數(shù)據(jù)備份方式,在此不再贅述。在一個(gè)例子中,在為服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu)之后,為了使服務(wù)器可以利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,則可以有如下兩種方式:方式一、為每個(gè)服務(wù)器生成獨(dú)立的節(jié)點(diǎn)信息結(jié)構(gòu),并將該節(jié)點(diǎn)信息結(jié)構(gòu)下發(fā)給該服務(wù)器。其中,該節(jié)點(diǎn)信息結(jié)構(gòu)中只包含針對(duì)該服務(wù)器的信息,即需要由該服務(wù)器進(jìn)行備份的region信息以及該region信息在該服務(wù)器上的備份優(yōu)先級(jí)?;诖?,服務(wù)器在接收到該節(jié)點(diǎn)信息結(jié)構(gòu)后,就可以利用該節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。而且每個(gè)服務(wù)器均按照上述方式進(jìn)行處理。方式二、為所有服務(wù)器生成一個(gè)節(jié)點(diǎn)信息結(jié)構(gòu)集合,該節(jié)點(diǎn)信息結(jié)構(gòu)集合中包含了每個(gè)服務(wù)器的節(jié)點(diǎn)信息結(jié)構(gòu),且每個(gè)服務(wù)器的節(jié)點(diǎn)信息結(jié)構(gòu)中包含需要由該服務(wù)器進(jìn)行備份的region信息以及該region信息在該服務(wù)器上的備份優(yōu)先級(jí)。基于此,服務(wù)器可以從該節(jié)點(diǎn)信息結(jié)構(gòu)集合中查詢到本服務(wù)器的節(jié)點(diǎn)信息結(jié)構(gòu),并可以利用查詢到的節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。其中,可以在集群的zookeeper上創(chuàng)建圖3的節(jié)點(diǎn)信息結(jié)構(gòu)集合,BackData表示該結(jié)構(gòu)是針對(duì)備份數(shù)據(jù)的節(jié)點(diǎn)信息結(jié)構(gòu)集合,DomainName為服務(wù)器的域名,即以服務(wù)器的域名作為節(jié)點(diǎn)名稱,而且表示DomainName下掛的內(nèi)容是針對(duì)該服務(wù)器的節(jié)點(diǎn)信息結(jié)構(gòu),例如,DomainName1下掛的內(nèi)容是針對(duì)服務(wù)器1的節(jié)點(diǎn)信息結(jié)構(gòu),對(duì)于其它DomainName,在圖3中并沒有顯示其下掛的內(nèi)容,但是其下掛的內(nèi)容可以與DomainName1下掛的內(nèi)容類似,在此不再贅述。tbName表示以待備份的Hbase表名作為節(jié)點(diǎn)名稱,即tbName的內(nèi)容為當(dāng)前待備份的Hbase表名。Status表示服務(wù)器對(duì)備份任務(wù)的進(jìn)展情況,如0表示初始化,1表示任務(wù)進(jìn)行中,2表示任務(wù)備份完成,3表示備份任務(wù)異常,當(dāng)然,還可以使用其它數(shù)值表示這四種情況,如4表示備份任務(wù)異常,對(duì)此不做限制。Back1用于保存服務(wù)器的第一優(yōu)先備份的region信息,即備份優(yōu)先級(jí)為1的region信息,如針對(duì)服務(wù)器1的region1和region6。Back2用于保存服務(wù)器的第二優(yōu)先備份的region信息,即備份優(yōu)先級(jí)為2的region信息,如針對(duì)服務(wù)器1的region5和region10。Back3用于保存服務(wù)器的第三優(yōu)先備份的region信息,即備份優(yōu)先級(jí)為3的region信息,如針對(duì)服務(wù)器1的region4和region9。當(dāng)有服務(wù)器發(fā)生異常時(shí),如服務(wù)器2發(fā)生異常時(shí),如果需要將服務(wù)器2的備份任務(wù)遷移到服務(wù)器1,則subBack1用于保存服務(wù)器2上的第一優(yōu)先備份的region信息,如服務(wù)器2上的備份優(yōu)先級(jí)為1的region信息,如針對(duì)服務(wù)器2的region2和region7。subBack2用于保存服務(wù)器2上的第二優(yōu)先備份的region信息,如服務(wù)器2上的備份優(yōu)先級(jí)為2的region信息,如針對(duì)服務(wù)器2的region1和region6。subBack3用于保存服務(wù)器2上的第三優(yōu)先備份的region信息,如服務(wù)器2上的備份優(yōu)先級(jí)為3的region信息,如針對(duì)服務(wù)器2的region5和region10。在一個(gè)例子中,zookeeper是一個(gè)分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件,是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的組件,提供的功能可以包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等?;诖?,通過在zookeeper上創(chuàng)建表3所示的節(jié)點(diǎn)信息結(jié)構(gòu)集合,使得各服務(wù)器可以從zookeeper上獲取到該節(jié)點(diǎn)信息結(jié)構(gòu)集合,并利用本服務(wù)器的域名,從該節(jié)點(diǎn)信息結(jié)構(gòu)集合中解析出該域名對(duì)應(yīng)的節(jié)點(diǎn)信息結(jié)構(gòu),即可以解析出tbName、Status、Back1、Back2、Back3、subBack1、subBack2、subBack3等內(nèi)容。服務(wù)器在解析出tbName、Status、Back1、Back2、Back3、subBack1、subBack2、subBack3等內(nèi)容后,在進(jìn)行數(shù)據(jù)備份時(shí),優(yōu)先備份Back1下的region信息對(duì)應(yīng)的數(shù)據(jù),待Back1下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,從Back1下清空其記錄的region信息,并備份Back2下的region信息對(duì)應(yīng)的數(shù)據(jù)。待Back2下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,從Back2下清空其記錄的region信息,并備份Back3下的region信息對(duì)應(yīng)的數(shù)據(jù)。待Back3下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,從Back3下清空其記錄的region信息,并將Status下的值修改為2。進(jìn)一步的,假設(shè)在subBack1、subBack2、subBack3下均存在了region信息,則服務(wù)器還可以備份subBack1下的region信息對(duì)應(yīng)的數(shù)據(jù),待subBack1下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,則可以從subBack1下清空其記錄的region信息,并備份subBack2下的region信息對(duì)應(yīng)的數(shù)據(jù)。待subBack2下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,則可以從subBack2下清空其記錄的region信息,并備份subBack3下的region信息對(duì)應(yīng)的數(shù)據(jù)。待subBack3下的region信息對(duì)應(yīng)的數(shù)據(jù)備份完成后,則可以從subBack3下清空其記錄的region信息。在一個(gè)例子中,當(dāng)有服務(wù)器發(fā)生異常時(shí),則獲取遷移的目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到目的服務(wù)器,由目的服務(wù)器對(duì)該備份任務(wù)進(jìn)行處理。其中,目的服務(wù)器對(duì)備份任務(wù)進(jìn)行處理,可以包括:目的服務(wù)器對(duì)需要由發(fā)生異常的服務(wù)器進(jìn)行備份的region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。若當(dāng)前存在已經(jīng)備份完成的服務(wù)器,則目的服務(wù)器為已經(jīng)備份完成的服務(wù)器;若當(dāng)前不存在已經(jīng)備份完成的服務(wù)器,則目的服務(wù)器為備份數(shù)據(jù)最快的服務(wù)器。例如,在數(shù)據(jù)備份過程中,如果獲知某個(gè)服務(wù)器發(fā)生異常(如服務(wù)器離線等),則可以將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到目的服務(wù)器。其備份遷移流程可以包括:查找所有Status為2(分配的備份任務(wù)已經(jīng)完成)的服務(wù)器,如果存在Status為2的服務(wù)器,則將Status為2的服務(wù)器確定為目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到目的服務(wù)器,如果不存在Status為2的服務(wù)器,則將備份數(shù)據(jù)最快的服務(wù)器確定為目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到目的服務(wù)器。將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到目的服務(wù)器是指:將發(fā)生異常的服務(wù)器的Back1中的內(nèi)容遷移到目的服務(wù)器的subBack1下,將發(fā)生異常的服務(wù)器的Back2中的內(nèi)容遷移到目的服務(wù)器的subBack2下,將發(fā)生異常的服務(wù)器的Back3中的內(nèi)容遷移到目的服務(wù)器的subBack3下。其中,備份數(shù)據(jù)最快的服務(wù)器是指:當(dāng)服務(wù)器1的Back1下的備份任務(wù)完成,且Back2下的備份任務(wù)完成(Back1、Back2下的內(nèi)容為空),而服務(wù)器2的Back1下的備份任務(wù)完成(Back1下的內(nèi)容為空)時(shí),則說明服務(wù)器1備份數(shù)據(jù)的速度比服務(wù)器2備份數(shù)據(jù)的速度快,若服務(wù)器1備份數(shù)據(jù)的速度比其它所有服務(wù)器備份數(shù)據(jù)的速度都快,則說明服務(wù)器1是備份數(shù)據(jù)最快的服務(wù)器。如圖4所示,為將服務(wù)器2(出現(xiàn)異常的服務(wù)器)的備份任務(wù)遷移到服務(wù)器1(目的服務(wù)器)上的一個(gè)示例,此時(shí),服務(wù)器1本身的備份任務(wù)已經(jīng)處理完成,即Back1下的region信息、Back2下的region信息、Back3下的region信息均已經(jīng)為清除,Back1、Back2、Back3下的內(nèi)容均為空。服務(wù)器1在檢測(cè)到存在備份任務(wù)時(shí),重新啟動(dòng)備份流程,在進(jìn)行數(shù)據(jù)備份時(shí),服務(wù)器1優(yōu)先備份subBack1下的region2對(duì)應(yīng)的數(shù)據(jù),待region2對(duì)應(yīng)的數(shù)據(jù)備份完成后,備份subBack1下的region7對(duì)應(yīng)的數(shù)據(jù),待region7對(duì)應(yīng)的數(shù)據(jù)備份完成后,從subBack1下清空其記錄的region信息,并備份subBack2下的region1對(duì)應(yīng)的數(shù)據(jù),待region1對(duì)應(yīng)的數(shù)據(jù)備份完成后,備份subBack2下的region6對(duì)應(yīng)的數(shù)據(jù),待region6對(duì)應(yīng)的數(shù)據(jù)備份完成后,從subBack2下清空其記錄的region信息,并備份subBack3下的region5對(duì)應(yīng)的數(shù)據(jù),待region5對(duì)應(yīng)的數(shù)據(jù)備份完成后,備份subBack3下的region10對(duì)應(yīng)的數(shù)據(jù),待region10對(duì)應(yīng)的數(shù)據(jù)備份完成后,從subBack3下清空其記錄的region信息,至此,服務(wù)器1完成備份任務(wù)的處理,結(jié)束流程。綜上所述,在數(shù)據(jù)備份過程中,可以由各服務(wù)器對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,即通過文件拷貝方式對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,不需要通過導(dǎo)出工具將服務(wù)器上的數(shù)據(jù)導(dǎo)出,不需要通過API來調(diào)用Hbase集群內(nèi)的數(shù)據(jù),減輕對(duì)Hbase集群的壓力,避免對(duì)現(xiàn)有業(yè)務(wù)產(chǎn)生影響。而且,以region為單位進(jìn)行備份時(shí),通過事先將region信息進(jìn)行合理分配,使得每個(gè)服務(wù)器只備份一部分?jǐn)?shù)據(jù),大大降低了對(duì)每個(gè)服務(wù)器的本地備份空間的要求,如每個(gè)服務(wù)器備份的數(shù)據(jù)總量是N/M,N為region需要備份的數(shù)量,M為服務(wù)器的總數(shù)量。而且,備份數(shù)據(jù)可以保存在服務(wù)器本地,不需要依賴其它備份服務(wù)器,備份數(shù)據(jù)不需要存儲(chǔ)在HDFS文件上,不依賴于HDFS集群環(huán)境的穩(wěn)定性。而且,多個(gè)服務(wù)器可以并發(fā)備份數(shù)據(jù),可以冗余備份數(shù)據(jù),解決單一服務(wù)器本地存儲(chǔ)空間不足、數(shù)據(jù)本地容災(zāi)備份等問題,并降低了對(duì)每個(gè)服務(wù)器本地備份空間的要求,加快備份的速度,提高數(shù)據(jù)恢復(fù)的效率。而且,通過使用至少兩個(gè)服務(wù)器對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,可以保證數(shù)據(jù)備份的完整性、數(shù)據(jù)恢復(fù)的完整性。而且,當(dāng)備份任務(wù)執(zhí)行過程中,有服務(wù)器發(fā)生異常時(shí),則region對(duì)應(yīng)的數(shù)據(jù)依然可以在多臺(tái)服務(wù)器上進(jìn)行備份,充分考慮了備份過程中異常情況的處理,保證備份數(shù)據(jù)的完整性,同時(shí),還充分考慮了部分服務(wù)器異常情況下備份任務(wù)的遷移,保證服務(wù)器的任務(wù)均衡,并提供整體備份任務(wù)的性能。在一個(gè)例子中,在服務(wù)器對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份時(shí),數(shù)據(jù)的命名格式為:該region信息和該region信息在服務(wù)器上的備份優(yōu)先級(jí)標(biāo)識(shí)?;诖耍瑓⒁妶D5所示,為針對(duì)步驟102的數(shù)據(jù)恢復(fù)階段的處理流程圖,其包括:步驟501,從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,查詢到具有最高優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),并對(duì)查詢到的數(shù)據(jù)進(jìn)行恢復(fù)。步驟502,判斷當(dāng)前是否存在未查詢到的數(shù)據(jù)。如果是,執(zhí)行步驟503。如果否,則完成數(shù)據(jù)恢復(fù)階段,即針對(duì)region信息列表內(nèi)的每個(gè)region信息,從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,選擇該region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。步驟503,查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù)。步驟504,針對(duì)所述所有數(shù)據(jù)(即具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù))中的每個(gè)數(shù)據(jù),判斷該數(shù)據(jù)是否已經(jīng)存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù)。如果有,則執(zhí)行步驟505;如果沒有,則執(zhí)行步驟506。步驟505,丟棄該數(shù)據(jù),若所述所有數(shù)據(jù)均完成處理,返回步驟502。步驟506,對(duì)該數(shù)據(jù)進(jìn)行恢復(fù),若所述所有數(shù)據(jù)均完成處理,返回步驟502。在一個(gè)例子中,可以將備份有數(shù)據(jù)的服務(wù)器重新組成集群,并對(duì)集群內(nèi)的服務(wù)器中所有備份數(shù)據(jù)的region信息進(jìn)行遍歷,獲取所有的region信息,并將這些region信息的分布以及優(yōu)選順序保存在集群zookeeper的還原節(jié)點(diǎn)中,如圖6所示,為在zookeeper上創(chuàng)建BackUp節(jié)點(diǎn),并通過BackUp節(jié)點(diǎn)保存每個(gè)服務(wù)器的待還原region信息的一個(gè)示例,即每個(gè)服務(wù)器下保存待恢復(fù)的region信息。其中,BackUp表示在本地備份的region信息,例如,上述針對(duì)服務(wù)器1的region1、region6、region5、region10、region4、region9等。subBackUp表示遷移到本服務(wù)器上來備份的region信息,例如,上述從服務(wù)器2遷移到服務(wù)器1進(jìn)行備份的region2、region7、region1、region6、region5、region10等。在上述基礎(chǔ)上,通過圖6可以獲知,需要分別恢復(fù)region1-region10的數(shù)據(jù)。首先,從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,查詢到具有最高優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),即查詢到region_1的數(shù)據(jù),即region1_1、region2_1、region3_1、region4_1、region5_1、region6_1、region7_1、region8_1、region9_1、region10_1的數(shù)據(jù),并對(duì)查詢到的數(shù)據(jù)進(jìn)行恢復(fù)。之后,由于當(dāng)前存在未查詢到的數(shù)據(jù),因此查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù),即查詢到region_2的數(shù)據(jù),即region1_2、region2_2、region3_2、region4_2、region5_2、region6_2、region7_2、region8_2、region9_2、region10_2的數(shù)據(jù)。如果之前已經(jīng)成功恢復(fù)region1_1的數(shù)據(jù),則說明region1_2已經(jīng)存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù),丟棄region1_2對(duì)應(yīng)的數(shù)據(jù),如果之前沒有成功恢復(fù)region1_1的數(shù)據(jù),則說明region1_2沒有存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù),對(duì)region1_2對(duì)應(yīng)的數(shù)據(jù)進(jìn)行恢復(fù)。同理,對(duì)于其它region_2的數(shù)據(jù)的處理類似,在此不再贅述。之后,由于當(dāng)前存在未查詢到的數(shù)據(jù),因此查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的數(shù)據(jù),即查詢到region_3的數(shù)據(jù),即region1_3、region2_3、region3_3、region4_3、region5_3、region6_3、region7_3、region8_3、region9_3、region10_3的數(shù)據(jù)。在對(duì)region_3的數(shù)據(jù)處理完成后,由于當(dāng)前不存在未查詢到的數(shù)據(jù),完成數(shù)據(jù)恢復(fù)階段,針對(duì)每個(gè)region信息,只對(duì)region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。在一個(gè)例子中,在數(shù)據(jù)恢復(fù)過程中,如果有服務(wù)器發(fā)生異常,導(dǎo)致數(shù)據(jù)無法恢復(fù),則也可以恢復(fù)相應(yīng)數(shù)據(jù)。例如,如果服務(wù)器2發(fā)生異常,則服務(wù)器2無法恢復(fù)region2、region7、region1、region6、region5、region10等region信息對(duì)應(yīng)的數(shù)據(jù)。在采用上述流程時(shí),當(dāng)查詢到region_1的數(shù)據(jù)時(shí),服務(wù)器2無法對(duì)region2_1、region7_1的數(shù)據(jù)進(jìn)行恢復(fù),而其它region_1的數(shù)據(jù)均被恢復(fù)。當(dāng)查詢到region_2的數(shù)據(jù)時(shí),則其它服務(wù)器可以完成region2_2、region7_2的數(shù)據(jù)的恢復(fù),從而可以恢復(fù)所有region信息對(duì)應(yīng)的數(shù)據(jù),保證數(shù)據(jù)的完整性。基于上述技術(shù)方案,本發(fā)明實(shí)施例中,可以由各服務(wù)器對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,即通過文件拷貝方式對(duì)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,不需要通過導(dǎo)出工具將服務(wù)器上的數(shù)據(jù)導(dǎo)出,不需要通過API來調(diào)用Hbase集群內(nèi)的數(shù)據(jù),減輕對(duì)Hbase集群的壓力,避免對(duì)現(xiàn)有業(yè)務(wù)產(chǎn)生影響。而且,備份數(shù)據(jù)可以保存在服務(wù)器本地,不需要依賴其它備份服務(wù)器,備份數(shù)據(jù)不需要存儲(chǔ)在HDFS文件上,不依賴于HDFS集群環(huán)境的穩(wěn)定性。而且,多個(gè)服務(wù)器可以并發(fā)備份數(shù)據(jù),可以冗余備份數(shù)據(jù),解決單一服務(wù)器本地存儲(chǔ)空間不足、數(shù)據(jù)本地容災(zāi)備份等問題,并降低了對(duì)每個(gè)服務(wù)器本地備份空間的要求,加快備份的速度,提高數(shù)據(jù)恢復(fù)的效率。而且,通過使用至少兩個(gè)服務(wù)器對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,可以保證數(shù)據(jù)備份的完整性、數(shù)據(jù)恢復(fù)的完整性。而且,在數(shù)據(jù)恢復(fù)過程中,可以在集群服務(wù)器并發(fā)執(zhí)行,提高數(shù)據(jù)恢復(fù)的效率。基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一數(shù)據(jù)恢復(fù)裝置,該數(shù)據(jù)恢復(fù)裝置應(yīng)用在控制設(shè)備上。其中,該數(shù)據(jù)恢復(fù)裝置可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過其所在的控制設(shè)備的處理器,讀取非易失性存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令形成的。從硬件層面而言,如圖7所示,為本發(fā)明提出的數(shù)據(jù)恢復(fù)裝置所在的控制設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖7所示的處理器、非易失性存儲(chǔ)器外,控制設(shè)備還可以包括其他硬件,如負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)芯片、網(wǎng)絡(luò)接口、內(nèi)存等;從硬件結(jié)構(gòu)上來講,該控制設(shè)備還可能是分布式設(shè)備,可能包括多個(gè)接口卡,以便在硬件層面進(jìn)行報(bào)文處理的擴(kuò)展。如圖8所示,為本發(fā)明提出的數(shù)據(jù)恢復(fù)裝置的結(jié)構(gòu)圖,所述裝置具體包括:數(shù)據(jù)備份模塊11,用于執(zhí)行數(shù)據(jù)備份階段,所述數(shù)據(jù)備份模塊具體用于:獲取服務(wù)器列表和region信息列表;針對(duì)所述region信息列表內(nèi)的每個(gè)region信息,從所述服務(wù)器列表內(nèi)為region信息分配至少兩個(gè)服務(wù)器,并指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí);針對(duì)所述服務(wù)器列表內(nèi)的每個(gè)服務(wù)器,為服務(wù)器生成節(jié)點(diǎn)信息結(jié)構(gòu),所述節(jié)點(diǎn)信息結(jié)構(gòu)包括需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí),以使所述服務(wù)器利用所述節(jié)點(diǎn)信息結(jié)構(gòu)對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;數(shù)據(jù)恢復(fù)模塊12,用于執(zhí)行數(shù)據(jù)恢復(fù)階段,所述數(shù)據(jù)恢復(fù)模塊具體用于:針對(duì)所述region信息列表內(nèi)的每個(gè)region信息,從所述數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,選擇該region信息對(duì)應(yīng)的一份數(shù)據(jù)進(jìn)行恢復(fù)。在一個(gè)例子中,所述數(shù)據(jù)備份模塊11為所述服務(wù)器生成的節(jié)點(diǎn)信息結(jié)構(gòu),用于使所述服務(wù)器從所述節(jié)點(diǎn)信息結(jié)構(gòu)中解析出需要由所述服務(wù)器進(jìn)行備份的region信息以及該region信息在所述服務(wù)器上的備份優(yōu)先級(jí),按照備份優(yōu)先級(jí)從高到低的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從第一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份,或者,按照備份優(yōu)先級(jí)從低到高的順序,對(duì)需要由所述服務(wù)器進(jìn)行備份的region信息進(jìn)行排序,并按照排序結(jié)果,從最后一個(gè)region信息開始,依次對(duì)每個(gè)region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份。在一個(gè)例子中,所述數(shù)據(jù)備份模塊11,還用于當(dāng)有服務(wù)器發(fā)生異常時(shí),獲取遷移的目的服務(wù)器,并將發(fā)生異常的服務(wù)器的備份任務(wù)遷移到所述目的服務(wù)器,由所述目的服務(wù)器對(duì)備份任務(wù)進(jìn)行處理;其中,所述目的服務(wù)器對(duì)所述備份任務(wù)進(jìn)行處理包括:所述目的服務(wù)器對(duì)需要由發(fā)生異常的服務(wù)器進(jìn)行備份的region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份;若當(dāng)前存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為已經(jīng)備份完成的服務(wù)器;若當(dāng)前不存在已經(jīng)備份完成的服務(wù)器,所述目的服務(wù)器為備份數(shù)據(jù)最快的服務(wù)器。所述數(shù)據(jù)備份模塊11,進(jìn)一步用于在從所述服務(wù)器列表內(nèi)為所述region信息列表內(nèi)的每個(gè)region信息分配至少兩個(gè)服務(wù)器的過程中,每個(gè)服務(wù)器上被分配的region信息的數(shù)量均衡;在指定所述region信息在分配的每個(gè)服務(wù)器的備份優(yōu)先級(jí)的過程中,指定所述region信息在不同的服務(wù)器上的備份優(yōu)先級(jí)不同。在所述服務(wù)器對(duì)該region信息對(duì)應(yīng)的數(shù)據(jù)進(jìn)行備份時(shí),所述數(shù)據(jù)的命名格式為:該region信息和該region信息在所述服務(wù)器上的備份優(yōu)先級(jí)標(biāo)識(shí);所述數(shù)據(jù)恢復(fù)模塊12,具體用于從數(shù)據(jù)備份階段備份的所有數(shù)據(jù)中,查詢到具有最高優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),并對(duì)查詢到的數(shù)據(jù)進(jìn)行恢復(fù);判斷當(dāng)前是否存在未查詢到的數(shù)據(jù);如果否,則完成數(shù)據(jù)恢復(fù)階段;如果是,則查詢到具有下一級(jí)優(yōu)先級(jí)別的備份優(yōu)先級(jí)標(biāo)識(shí)對(duì)應(yīng)的所有數(shù)據(jù),針對(duì)所述所有數(shù)據(jù)中的每個(gè)數(shù)據(jù),判斷該數(shù)據(jù)是否已經(jīng)存在對(duì)應(yīng)的已恢復(fù)數(shù)據(jù);如果有,則丟棄該數(shù)據(jù),如果沒有,則對(duì)該數(shù)據(jù)進(jìn)行恢復(fù);如果所述所有數(shù)據(jù)均完成處理,則返回判斷當(dāng)前是否存在未查詢到的數(shù)據(jù)的步驟。其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。當(dāng)前第1頁1 2 3