本申請涉及數(shù)據(jù)庫技術領域,尤其涉及一種數(shù)據(jù)庫備份的校驗方法及裝置。
背景技術:
數(shù)據(jù)庫(database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。數(shù)據(jù)庫經(jīng)常出現(xiàn)各種故障,數(shù)據(jù)庫備份技術可以在數(shù)據(jù)庫出現(xiàn)故障后,以盡可能小的時間和代價恢復數(shù)據(jù)庫。
無論采用何種數(shù)據(jù)庫備份技術,在數(shù)據(jù)庫備份過程中,仍可能出現(xiàn)錯誤,例如數(shù)據(jù)丟失或數(shù)據(jù)錯誤等,導致備份數(shù)據(jù)無法用來還原原始數(shù)據(jù)。
技術實現(xiàn)要素:
本申請的多個方面提供一種數(shù)據(jù)庫備份的校驗方法及裝置,用以校驗備份數(shù)據(jù)的有效性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
本申請實施例提供一種數(shù)據(jù)庫備份的校驗方法,包括:
獲取待校驗數(shù)據(jù),所述待校驗數(shù)據(jù)包括至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù);
校驗所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證所述待校驗數(shù)據(jù)的完整性;
抽樣訪問所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性;
若完整性和可用性均通過驗證,存儲所述待校驗數(shù)據(jù)。
可選地,獲取所述待校驗數(shù)據(jù)之前,所述方法還包括:
確定所述至少一個數(shù)據(jù)庫實例可成功啟動。
可選地,所述方法還包括:
若完整性未通過驗證,丟棄所述待校驗數(shù)據(jù);以及,
從原備份源中,重新備份所述至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
可選地,所述方法還包括:
若可用性未通過驗證,丟棄所述待校驗數(shù)據(jù);以及,
更新備份源;
從所述更新后的備份源中,重新備份所述至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
可選地,所述檢測所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證所述待校驗數(shù)據(jù)的完整性,包括以下至少一種校驗操作:
在數(shù)據(jù)表層級,校驗所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
在數(shù)據(jù)記錄層級,校驗所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
在數(shù)據(jù)項層級,校驗所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
若所述至少一種校驗操作均通過正確性校驗,確定所述待校驗數(shù)據(jù)通過完整性校驗。
可選地,所述抽樣訪問所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性,包括:
根據(jù)所述至少一個數(shù)據(jù)庫實例的重要度,確定所述至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率;
按照所述至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率,分別抽樣訪問所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性。
可選地,對所述至少一個數(shù)據(jù)庫實例中的第一數(shù)據(jù)庫實例,按照所述第一數(shù)據(jù)庫實例的抽樣訪問頻率,抽樣訪問所述第一數(shù)據(jù)庫實例的備份數(shù)據(jù),包括:
按照所述第一數(shù)據(jù)庫實例的抽樣訪問頻率,對所述第一數(shù)據(jù)庫實例的備份數(shù)據(jù)進行抽樣,以獲得抽樣數(shù)據(jù);
對所述抽樣數(shù)據(jù)進行數(shù)據(jù)訪問操作,以獲得數(shù)據(jù)訪問操作結(jié)果;
若所述數(shù)據(jù)訪問操作結(jié)果正確,確定所述第一數(shù)據(jù)庫實例的備份數(shù)據(jù)通過可用性驗證。
可選地,所述抽樣訪問所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性,包括:
從所述至少一個數(shù)據(jù)庫實例中,選擇待校驗數(shù)據(jù)庫實例;
抽樣訪問所述待校驗數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性。
本申請實施例還提供了一種數(shù)據(jù)庫備份的校驗裝置,包括:
獲取模塊,用于獲取待校驗數(shù)據(jù),所述待校驗數(shù)據(jù)包括至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù);
第一校驗模塊,用于校驗所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證所述待校驗數(shù)據(jù)的完整性;
第二校驗模塊,用于抽樣訪問所述至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證所述待校驗數(shù)據(jù)的可用性;
存儲模塊,用于在所述第一校驗模塊校驗的完整性和所述第二校驗模塊校驗的可用性均通過驗證時,存儲所述待校驗數(shù)據(jù)。
可選地,所述裝置還包括:
確定模塊,用于確定所述至少一個數(shù)據(jù)庫實例可成功啟動。
在本申請實施例中,通過校驗md5值的正確性來驗證待校驗數(shù)據(jù)的完整性;以及通過抽樣訪問待校驗數(shù)據(jù),驗證數(shù)據(jù)的可用性,若完整性與可用性均通過,則存儲待校驗數(shù)據(jù)。本申請實施例的雙重校驗機制能夠準確校驗備份數(shù)據(jù)的有效性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
圖1a為本申請一實施例提供的數(shù)據(jù)庫備份的校驗方法的流程示意圖;
圖1b為本申請又一實施例提供的數(shù)據(jù)庫備份的校驗方法的流程示意圖;
圖2為本申請又一實施例提供的數(shù)據(jù)庫備份的校驗方法中可用性校驗的流程示意圖;
圖3為本申請又一實施例提供的數(shù)據(jù)庫備份的校驗方法中可用性校驗的流程示意圖;
圖4為本申請又一實施例提供的數(shù)據(jù)庫備份的校驗裝置的模塊結(jié)構(gòu)圖。
具體實施方式
為使本申請的目的、技術方案和優(yōu)點更加清楚,下面將結(jié)合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
以下結(jié)合附圖,詳細說明本申請各實施例提供的技術方案。
圖1a為本申請一實施例提供的數(shù)據(jù)庫備份的校驗方法。如圖1a所示,該方法包括以下步驟:
s101:獲取待校驗數(shù)據(jù),待校驗數(shù)據(jù)包括至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)。
s102:校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性。
s103:抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
s104:若完整性和可用性均通過驗證,存儲待校驗數(shù)據(jù)。
將數(shù)據(jù)從備份源備份到數(shù)據(jù)庫中時,可能由于備份源中的數(shù)據(jù)本身存在問題或者備份的過程中出現(xiàn)問題,導致備份數(shù)據(jù)不具備有效性,無法用來還原原始數(shù)據(jù)。因此,有必要在備份數(shù)據(jù)存儲到數(shù)據(jù)庫之前對數(shù)據(jù)進行校驗。
首先,獲取至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),作為待校驗數(shù)據(jù)。接著,驗證待校驗數(shù)據(jù)的完整性和可用性。
其中,在完整性的驗證過程中,可以校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性。md5是一種散列函數(shù),用于確保信息傳輸完整一致。可以計算至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值,并與預先計算出的備份源中對應數(shù)據(jù)庫實例的數(shù)據(jù)的md5值相比,若計算出的md5值相同,說明md5值正確,則待校驗數(shù)據(jù)的完整性通過校驗。若計算出的md5值不相同,則待校驗數(shù)據(jù)的完整性未通過驗證。
在可用性的驗證過程中,可以抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性??蛇x地,可以從至少一個數(shù)據(jù)庫實例中每一個數(shù)據(jù)庫實例中抽樣部分數(shù)據(jù),并對所述抽樣的數(shù)據(jù)進行訪問操作。若訪問操作結(jié)果正確,則可以驗證待校驗數(shù)據(jù)的可用性;若訪問操作結(jié)果不正確,則待校驗數(shù)據(jù)的可用性未通過驗證。當然,也可以抽樣待校驗數(shù)據(jù)中全部的數(shù)據(jù)庫實例的備份數(shù)據(jù)進行訪問操作。
值得說明的是,本申請實施例中可以先驗證待校驗數(shù)據(jù)的完整性,若完整性通過驗證,再驗證可用性;也可以先驗證待校驗數(shù)據(jù)的可用性,若可用性通過驗證,再驗證完整性;也可以同時進行驗證待校驗數(shù)據(jù)的完整性和可用性。當待校驗數(shù)據(jù)的完整性和可用性均通過驗證時,可以確定待校驗數(shù)據(jù)具有有效性,進而存儲待校驗數(shù)據(jù),以便用來還原原始數(shù)據(jù)。
在本申請實施例中,通過校驗md5值的正確性來驗證待校驗數(shù)據(jù)的完整性;以及通過抽樣訪問待校驗數(shù)據(jù),驗證數(shù)據(jù)的可用性,若完整性與可用性均通過,則存儲待校驗數(shù)據(jù)。本申請實施例的雙重校驗機制能夠準確校驗備份數(shù)據(jù)的有效性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
圖1b為本申請又一實施例提供的數(shù)據(jù)庫備份的校驗方法。如圖1b所示,該方法包括以下步驟:
s200:開始。
s201:確定至少一個數(shù)據(jù)庫實例是否能夠成功啟動;若是,執(zhí)行步驟s202;若否,執(zhí)行步驟s203。
s202:獲取待校驗數(shù)據(jù),待校驗數(shù)據(jù)包括成功啟動的至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),并繼續(xù)執(zhí)行步驟s204-s206。
可以啟動備份數(shù)據(jù)庫中至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。如果成功啟動,獲取啟動成功的至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),作為待校驗數(shù)據(jù)。之后驗證所述待校驗數(shù)據(jù)的完整性和可用性,如下述步驟s204-s206,此處不再贅述。
s203:丟棄啟動失敗的數(shù)據(jù)庫實例的數(shù)據(jù),并通知數(shù)據(jù)庫管理人員,結(jié)束操作。
s204:校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性。
s205:抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
s206:若完整性和可用性均通過驗證,存儲待校驗數(shù)據(jù)。
數(shù)據(jù)庫實例啟動失敗的情況可以包括數(shù)據(jù)庫實例不工作、停止響應或運行中斷的情況。當數(shù)據(jù)庫實例啟動失敗時,意味著數(shù)據(jù)庫實例的數(shù)據(jù)不完整或者有錯誤,可以不再進行之后的校驗操作。
在本申請實施例中,待校驗的數(shù)據(jù)為啟動成功的數(shù)據(jù)庫實例的備份數(shù)據(jù),即通過啟動數(shù)據(jù)庫實例對備份數(shù)據(jù)進行初步的校驗;初步校驗通過后,在驗證完整性與可用性,進一步提高了校驗的準確性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
在上述實施例或下述實施例中,若至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值不正確,則待校驗數(shù)據(jù)的完整性未通過驗證,可以丟棄待校驗數(shù)據(jù),例如從備份數(shù)據(jù)庫中刪除待校驗數(shù)據(jù)。
備份數(shù)據(jù)的md5值不正確,意味著備份數(shù)據(jù)相比于備份源的數(shù)據(jù)不夠完整,由此推斷,可能是數(shù)據(jù)傳輸過程中出現(xiàn)問題或者讀寫過程中出現(xiàn)問題。因此,可以從原備份源中,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
接著,對重新備份的至少一個數(shù)據(jù)庫實例的數(shù)據(jù)進行完整性校驗和可用性校驗。
可選地,若至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的可用性未通過驗證,可以丟棄待校驗數(shù)據(jù)。
備份數(shù)據(jù)的可用性未通過校驗,意味著備份數(shù)據(jù)中可能存在一些錯誤,導致備份數(shù)據(jù)不可用。此時,很可能是備份源的數(shù)據(jù)本身就不具備可用性,導致備份數(shù)據(jù)也不具備可用性。因此,可以更新備份源;從更新后的備份源中,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
接著,對重新備份的至少一個數(shù)據(jù)庫實例的數(shù)據(jù)進行完整性校驗和可用性校驗。
本實施例中,可以根據(jù)待校驗數(shù)據(jù)未通過完整性校驗或可用性校驗時,從原備份源或者更新后的備份源,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù),保證數(shù)據(jù)庫中更多數(shù)據(jù)的有效性
在上述實施例或下述實施例中,根據(jù)數(shù)據(jù)庫中不同的數(shù)據(jù)組織層級,可以針對待校驗數(shù)據(jù)進行不同層級的完整性校驗操作。基于此,檢測至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性的步驟,可以包括數(shù)據(jù)表層級的校驗操作、數(shù)據(jù)記錄層級的校驗操作以及數(shù)據(jù)項層級的校驗操作中任意一種校驗操作。
其中,數(shù)據(jù)表層級的校驗操作為在數(shù)據(jù)表層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性。
根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的不同分類,可以將一個數(shù)據(jù)庫劃分為至少一個數(shù)據(jù)表,可選地,一個數(shù)據(jù)庫實例可以對應至少一個數(shù)據(jù)表。基于此,可以針對每一個數(shù)據(jù)庫實例對應的至少一個數(shù)據(jù)表進行數(shù)據(jù)表層級的校驗操作。
可選地,計算所述至少一個數(shù)據(jù)庫實例對應的每一個數(shù)據(jù)表的數(shù)據(jù)的md5值,并與預先計算出的備份源中對應數(shù)據(jù)表的數(shù)據(jù)的md5值相比,若計算出的md5值相同,則待校驗數(shù)據(jù)通過完整性驗證;否則,待校驗數(shù)據(jù)未通過完整性驗證。
數(shù)據(jù)記錄層級的校驗操作為在數(shù)據(jù)記錄層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性。其中,數(shù)據(jù)記錄為對應于數(shù)據(jù)庫中一行信息的一組完整的相關信息。
可選地,可以校驗至少一個數(shù)據(jù)庫實例中每一項數(shù)據(jù)記錄的數(shù)據(jù)的md5值,并與預先計算出的備份源中對應數(shù)據(jù)記錄的數(shù)據(jù)的md5值相比,若計算出的md5值相同,則待校驗數(shù)據(jù)通過完整性驗證;否則,待校驗數(shù)據(jù)未通過完整性驗證。
數(shù)據(jù)項層級的校驗操作為在數(shù)據(jù)項層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性。其中,數(shù)據(jù)項可以是字母、數(shù)字或兩者的組合,是數(shù)據(jù)的不可分割的最小單位。
可選地,可以校驗至少一個數(shù)據(jù)庫實例中每一項數(shù)據(jù)項的數(shù)據(jù)的md5值,并與預先計算出的備份源中對應數(shù)據(jù)項的數(shù)據(jù)的md5值相比,若計算出的md5值相同,則待校驗數(shù)據(jù)通過完整性驗證;否則,待校驗數(shù)據(jù)未通過完整性驗證。
當然,除了采用三種校驗操作中的任意一種來校驗待校驗數(shù)據(jù)的完整性,還可以采用上述三種校驗操作中的任意兩種或三種都采用??蛇x地,若所采用的至少一種校驗操作均通過正確性校驗,確定待校驗數(shù)據(jù)通過完整性校驗;若所采用的任意一種校驗操作未通過正確性校驗,則待校驗數(shù)據(jù)未通過完整性校驗。
本實施例中,通過數(shù)據(jù)表層級、數(shù)據(jù)記錄層級以及數(shù)據(jù)項層級的校驗操作,全方位、多角度校驗待校驗數(shù)據(jù)的完整性,有效保證了待校驗數(shù)據(jù)的完整性。
可選地,抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性的過程,如圖2所示,可以包括步驟s201以及步驟s202。
s201:根據(jù)至少一個數(shù)據(jù)庫實例的重要度,確定至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率。
s202:按照至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率,分別抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
本實施例中,數(shù)據(jù)庫實例的重要度指數(shù)據(jù)庫實例中備份數(shù)據(jù)的重要度??蛇x地,備份數(shù)據(jù)的重要度越高,越應保證數(shù)據(jù)的可用性,則數(shù)據(jù)庫實例的抽樣訪問頻率應越高。在一示例中,數(shù)據(jù)庫實例的重要度分為較重要、重要以及次要三種級別,可以確定較重要的數(shù)據(jù)庫實例的抽樣訪問頻率為間隔12小時一次,重要的數(shù)據(jù)庫實例的抽樣訪問頻率為間隔24小時一次,次要的數(shù)據(jù)庫實例的抽樣訪問頻率為間隔72小時一次。
接著,根據(jù)至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率,分別抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
可選地,抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),可以是從至少一個數(shù)據(jù)庫實例中的每一個數(shù)據(jù)庫實例的備份數(shù)據(jù)中抽樣部分數(shù)據(jù)進行訪問操作?;诖耍瑢χ辽僖粋€數(shù)據(jù)庫實例中的第一數(shù)據(jù)庫實例,按照第一數(shù)據(jù)庫實例的抽樣訪問頻率,抽樣訪問第一數(shù)據(jù)庫實例的備份數(shù)據(jù),如圖3所示,包括步驟s2021、步驟s2022以及步驟s2023。
s2021:按照第一數(shù)據(jù)庫實例的抽樣訪問頻率,對第一數(shù)據(jù)庫實例的備份數(shù)據(jù)進行抽樣,以獲得抽樣數(shù)據(jù)。
s2022:對抽樣數(shù)據(jù)進行數(shù)據(jù)訪問操作,以獲得數(shù)據(jù)訪問操作結(jié)果。
s2023:若數(shù)據(jù)訪問操作結(jié)果正確,確定第一數(shù)據(jù)庫實例的備份數(shù)據(jù)通過可用性驗證。
其中,第一數(shù)據(jù)庫實例可以是至少一個數(shù)據(jù)庫實例中的任意一個。
步驟s2021中,抽樣數(shù)據(jù)可以是從數(shù)據(jù)庫實例的備份數(shù)據(jù)中抽樣的部分數(shù)據(jù)表的數(shù)據(jù)。根據(jù)抽樣訪問頻率,每次的抽樣數(shù)據(jù)可以相同也可以不同,在一示例中,可以每次都抽樣數(shù)據(jù)庫實例中數(shù)據(jù)表1和數(shù)據(jù)表2的數(shù)據(jù);也可以第一次抽樣數(shù)據(jù)庫實例中數(shù)據(jù)表1的數(shù)據(jù),第二次訪問數(shù)據(jù)庫實例中數(shù)據(jù)表2的數(shù)據(jù)。
接著,對抽樣數(shù)據(jù)進行數(shù)據(jù)訪問操作。其中,數(shù)據(jù)訪問操作包括數(shù)據(jù)查詢操作以及數(shù)據(jù)統(tǒng)計操作。可選地,可以通過數(shù)據(jù)庫應用提供的select*函數(shù)進行數(shù)據(jù)查詢操作,通過數(shù)據(jù)庫應用提供的count(*)函數(shù)進行數(shù)據(jù)統(tǒng)計操作。
select*函數(shù)用來查詢抽樣的數(shù)據(jù)表中的數(shù)據(jù),例如查詢數(shù)據(jù)表中的所有記錄,查詢列名稱等。如果查詢的數(shù)據(jù)與備份源的相應數(shù)據(jù)表中的數(shù)據(jù)相同,則數(shù)據(jù)查詢操作結(jié)果正確;否則,數(shù)據(jù)查詢操作結(jié)果不正確,第一數(shù)據(jù)庫實例的備份數(shù)據(jù)未通過可用性校驗,進而待校驗數(shù)據(jù)未通過可用性校驗。
count(*)用來統(tǒng)計抽樣的數(shù)據(jù)表中記錄行的數(shù)目。如果統(tǒng)計的數(shù)目與備份源的相應數(shù)據(jù)表中的數(shù)目之差,在預設誤差范圍內(nèi),則數(shù)據(jù)統(tǒng)計操作結(jié)果正確;否則,數(shù)據(jù)統(tǒng)計操作結(jié)果不正確,第一數(shù)據(jù)庫實例的備份數(shù)據(jù)未通過可用性校驗,進而待校驗數(shù)據(jù)未通過可用性校驗。
在一示例中,對數(shù)據(jù)表1進行count(*)操作,統(tǒng)計的數(shù)目為2000,備份源的數(shù)據(jù)表1中的數(shù)目為2010,則統(tǒng)計的數(shù)目與備份源中數(shù)據(jù)表1的數(shù)據(jù)之差為10,預設誤差范圍為-50~+50。可見,差值在預設誤差范圍內(nèi),則數(shù)據(jù)統(tǒng)計操作結(jié)果正確。
可選地,可以先進行數(shù)據(jù)查詢操作,再進行數(shù)據(jù)統(tǒng)計操作;也可以先進行數(shù)據(jù)統(tǒng)計操作,再進行數(shù)據(jù)查詢操作。若數(shù)據(jù)統(tǒng)計操作結(jié)果與數(shù)據(jù)查詢操作結(jié)果均正確時,第一數(shù)據(jù)庫實例的備份數(shù)據(jù)通過可用性校驗。若至少一個數(shù)據(jù)庫實例中的數(shù)據(jù)庫實例均通過可用性校驗,待校驗數(shù)據(jù)通過可用性校驗。
本實施例中,根據(jù)數(shù)據(jù)庫實例的重要度確定數(shù)據(jù)庫實例各自的抽樣訪問頻率,能夠保證重要度高的數(shù)據(jù)庫實例的可用性,進一步提高了待校驗數(shù)據(jù)的有效性。
上述實施例中,抽樣訪問的數(shù)據(jù)是從至少一個數(shù)據(jù)庫實例中的每一個數(shù)據(jù)庫實例的備份數(shù)據(jù)中抽樣的,但不限于此。當數(shù)據(jù)庫實例的數(shù)量較大時,還可以從至少一個數(shù)據(jù)庫實例中,抽樣訪問部分數(shù)據(jù)庫實例的數(shù)據(jù)。
可選地,抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性,包括:從至少一個數(shù)據(jù)庫實例中,選擇待校驗數(shù)據(jù)庫實例;抽樣訪問待校驗數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
可選地,可以根據(jù)數(shù)據(jù)庫實例的重要度,從至少一個數(shù)據(jù)庫實例中選擇待校驗數(shù)據(jù)庫實例,例如可以選擇較重要的數(shù)據(jù)庫實例作為待校驗數(shù)據(jù)庫實例。
接著,抽樣訪問待校驗數(shù)據(jù)庫實例的備份數(shù)據(jù),可以按照待校驗數(shù)據(jù)庫實例各自的抽樣訪問頻率,分別抽樣訪問數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。其中,待校驗數(shù)據(jù)的可用性校驗方法參見步驟s2021、步驟s2022以及步驟s2023,此處不再贅述。
上述實施例是將至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的整體作為待校驗數(shù)據(jù),可選地,還可以以數(shù)據(jù)庫實例為單位,將一個數(shù)據(jù)庫實例中的備份數(shù)據(jù)作為待校驗數(shù)據(jù),進行數(shù)據(jù)庫實例維度的完整性校驗和可用性校驗。
具體而言,若備份數(shù)據(jù)庫中數(shù)據(jù)庫實例啟動成功,獲取待校驗數(shù)據(jù)庫實例數(shù)據(jù),待校驗數(shù)據(jù)庫實例數(shù)據(jù)包括啟動成功的數(shù)據(jù)庫實例的備份數(shù)據(jù)。校驗所述數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)庫實例數(shù)據(jù)的完整性;抽樣訪問所述數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)庫實例數(shù)據(jù)的可用性。若待校驗數(shù)據(jù)庫實例數(shù)據(jù)的完整性和可用性均通過驗證,存儲待校驗數(shù)據(jù)庫實例數(shù)據(jù)。
當然,也可以先驗證可用性,再驗證完整性;也可以同時驗證。
若完整性未通過驗證,丟棄待校驗數(shù)據(jù)庫實例數(shù)據(jù),重新備份所述數(shù)據(jù)庫實例的數(shù)據(jù);對重新備份的數(shù)據(jù)庫實例的數(shù)據(jù)進行完整性校驗和可用性校驗。
若可用性未通過驗證,丟棄待校驗數(shù)據(jù)庫實例數(shù)據(jù),變更備份源,并從變更后的備份源,重新備份所述數(shù)據(jù)庫實例的數(shù)據(jù);對重新備份的數(shù)據(jù)庫實例的數(shù)據(jù)進行完整性校驗和可用性校驗。
本實施例中,從數(shù)據(jù)庫實例的維度進行完整性校驗和可用性校驗,實現(xiàn)了細粒度的校驗策略,能夠提高數(shù)據(jù)校驗的準確性;以及當校驗未通過時,重新備份數(shù)據(jù)庫實例的數(shù)據(jù),能夠減小重新備份的數(shù)據(jù)量,節(jié)約系統(tǒng)資源。
本申請實施例還提供了一種數(shù)據(jù)庫備份的校驗裝置300,如圖4所示,包括獲取模塊301、第一校驗模塊302、第二校驗模塊303以及存儲模塊304。
其中,獲取模塊301,用于獲取待校驗數(shù)據(jù),待校驗數(shù)據(jù)包括至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)。
第一校驗模塊302,用于校驗獲取模塊301獲取的至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性。
第二校驗模塊303,用于抽樣訪問獲取模塊301獲取的至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
存儲模塊304,用于在所述第一校驗模塊校驗的完整性和所述第二校驗模塊校驗的可用性均通過驗證時,存儲所述待校驗數(shù)據(jù)。
在本申請實施例中,通過校驗md5值的正確性來驗證待校驗數(shù)據(jù)的完整性;以及通過抽樣訪問待校驗數(shù)據(jù),驗證數(shù)據(jù)的可用性,若完整性與可用性均通過,則存儲待校驗數(shù)據(jù)。本申請實施例的上述校驗機制能夠準確校驗備份數(shù)據(jù)的有效性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
可選地,數(shù)據(jù)庫備份的校驗裝置300還包括確定模塊。
確定模塊,用于在獲取模塊301獲取待校驗數(shù)據(jù)之前,確定所述至少一個數(shù)據(jù)庫實例可成功啟動。
在本申請實施例中,待校驗的數(shù)據(jù)為啟動成功的數(shù)據(jù)庫實例的備份數(shù)據(jù),即通過啟動數(shù)據(jù)庫實例對備份數(shù)據(jù)進行初步的校驗;初步校驗通過后,在驗證完整性與可用性,進一步提高了校驗的準確性,保證備份數(shù)據(jù)能夠還原原始數(shù)據(jù)。
可選地,數(shù)據(jù)庫備份的校驗裝置300還包括丟棄模塊、第一備份模塊以及第二備份模塊。
其中,丟棄模塊,用于若完整性未通過驗證,丟棄待校驗數(shù)據(jù)。第一備份模塊在至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的完整性未通過驗證時,用于從原備份源中,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
可選地,丟棄模塊還用于:若可用性未通過驗證,丟棄待校驗數(shù)據(jù)。第二備份模塊在至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的可用性未通過驗證時,用于更新備份源;從更新后的備份源中,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù)。
本實施例中,可以根據(jù)待校驗數(shù)據(jù)未通過完整性校驗或可用性校驗時,從原備份源或者更新后的備份源,重新備份至少一個數(shù)據(jù)庫實例的數(shù)據(jù),保證數(shù)據(jù)庫中更多數(shù)據(jù)的有效性。
可選地,第一校驗模塊302在檢測至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)的完整性時,用于執(zhí)行以下至少一種校驗操作:
在數(shù)據(jù)表層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
在數(shù)據(jù)記錄層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
在數(shù)據(jù)項層級,校驗至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性;
若至少一種校驗操作均通過正確性校驗,確定待校驗數(shù)據(jù)通過完整性校驗。
本實施例中,通過數(shù)據(jù)表層級、數(shù)據(jù)記錄層級以及數(shù)據(jù)項層級的校驗操作,全方位、多角度校驗待校驗數(shù)據(jù)的完整性,有效保證了待校驗數(shù)據(jù)的完整性。
可選地,第二校驗模塊303在抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性時,具體用于:根據(jù)至少一個數(shù)據(jù)庫實例的重要度,確定至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率;按照至少一個數(shù)據(jù)庫實例各自的抽樣訪問頻率,分別抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
可選地,第二校驗模塊303在對至少一個數(shù)據(jù)庫實例中的第一數(shù)據(jù)庫實例,按照第一數(shù)據(jù)庫實例的抽樣訪問頻率,抽樣訪問第一數(shù)據(jù)庫實例的備份數(shù)據(jù)時,具體用于:按照第一數(shù)據(jù)庫實例的抽樣訪問頻率,對第一數(shù)據(jù)庫實例的備份數(shù)據(jù)進行抽樣,以獲得抽樣數(shù)據(jù);對抽樣數(shù)據(jù)進行數(shù)據(jù)訪問操作,以獲得數(shù)據(jù)訪問操作結(jié)果;若數(shù)據(jù)訪問操作結(jié)果正確,確定第一數(shù)據(jù)庫實例的備份數(shù)據(jù)通過可用性驗證。
本實施例中,根據(jù)數(shù)據(jù)庫實例的重要度確定數(shù)據(jù)庫實例各自的抽樣訪問頻率,能夠保證重要度高的數(shù)據(jù)庫實例的可用性,進一步提高了待校驗數(shù)據(jù)的有效性。
可選地,當數(shù)據(jù)庫實例的數(shù)量較大時,第二校驗模塊303在抽樣訪問至少一個數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性時,具體用于:從至少一個數(shù)據(jù)庫實例中,選擇待校驗數(shù)據(jù)庫實例;抽樣訪問待校驗數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)的可用性。
可選地,獲取模塊301還用于若備份數(shù)據(jù)庫中數(shù)據(jù)庫實例啟動成功,獲取待校驗數(shù)據(jù)庫實例數(shù)據(jù),待校驗數(shù)據(jù)庫實例數(shù)據(jù)包括啟動成功的數(shù)據(jù)庫實例的備份數(shù)據(jù)。
進一步地,第一校驗模塊302還用于校驗所述數(shù)據(jù)庫實例的備份數(shù)據(jù)的md5值的正確性,以驗證待校驗數(shù)據(jù)庫實例數(shù)據(jù)的完整性。
第二校驗模塊303還用于抽樣訪問所述數(shù)據(jù)庫實例的備份數(shù)據(jù),以驗證待校驗數(shù)據(jù)庫實例數(shù)據(jù)的可用性。
存儲模塊304,還用于在第一校驗模塊302校驗的完整性和第二校驗模塊303校驗的可用性均通過驗證時,存儲待校驗數(shù)據(jù)庫實例數(shù)據(jù)。
本實施例中,從數(shù)據(jù)庫實例的維度進行完整性校驗和可用性校驗,實現(xiàn)了細粒度的校驗策略,能夠提高數(shù)據(jù)校驗的準確性;以及當校驗未通過時,重新備份數(shù)據(jù)庫實例的數(shù)據(jù),能夠減小重新備份的數(shù)據(jù)量,節(jié)約系統(tǒng)資源。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。
本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內(nèi)。