【數(shù)據(jù)庫數(shù)據(jù)恢復(fù)】Sql Server數(shù)據(jù)庫數(shù)據(jù)恢復(fù)案例

數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境:
5塊硬盤組建RAID5,劃分LUN供windows服務(wù)器使用,共有三個(gè)邏輯分區(qū);
在windows服務(wù)器內(nèi)部署有Sql Server數(shù)據(jù)庫。
數(shù)據(jù)庫故障:
未知原因?qū)е聰?shù)據(jù)庫文件丟失,涉及5個(gè)數(shù)據(jù)庫,數(shù)千個(gè)表,不能確定數(shù)據(jù)存儲位置。
數(shù)據(jù)庫文件丟失后服務(wù)器仍在運(yùn)行,但未寫入大量數(shù)據(jù)。
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)過程:
1、對故障設(shè)備中所有硬盤以只讀方式進(jìn)行完整鏡像備份,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對原始數(shù)據(jù)造成二次破壞。
2、基于鏡像文件分析raid5,獲取raid相關(guān)信息并利用信息及內(nèi)部數(shù)據(jù)塊信息重組RAID。
重組RAID:

3、提取LUN內(nèi)的三個(gè)分區(qū)鏡像。
4、掃描文件系統(tǒng)內(nèi)丟失的文件,未找到被刪除的數(shù)據(jù)庫文件,通過文件系統(tǒng)層面無法恢復(fù)數(shù)據(jù)庫數(shù)據(jù)。
5、經(jīng)過北亞企安數(shù)據(jù)恢復(fù)工程師團(tuán)隊(duì)的會診,最終敲定通過掃描數(shù)據(jù)頁并提取頁內(nèi)記錄的數(shù)據(jù)恢復(fù)方案來恢復(fù)數(shù)據(jù)庫數(shù)據(jù)。
6、使用北亞企安自主編寫的數(shù)據(jù)頁掃描程序掃描分區(qū)內(nèi)數(shù)據(jù)頁并進(jìn)行提取。在分別掃描兩個(gè)分區(qū)鏡像后發(fā)現(xiàn)系統(tǒng)盤內(nèi)數(shù)據(jù)頁數(shù)量極少且數(shù)據(jù)頁斷裂情況嚴(yán)重;另一分區(qū)內(nèi)掃描到數(shù)據(jù)頁數(shù)量較多,暫定此分區(qū)為數(shù)據(jù)庫文件存儲空間。
掃描數(shù)據(jù)頁:

7、Sql Server數(shù)據(jù)庫使用系統(tǒng)表來管理所有用戶表,在這些系統(tǒng)表內(nèi)記錄了各表的列數(shù)、數(shù)據(jù)類型及約束信息等。解析Sql Server系統(tǒng)表過程中發(fā)現(xiàn)提取出的數(shù)據(jù)頁內(nèi)系統(tǒng)表損壞,無法正常讀取信息。與用戶方溝通后得知有備份文件,且備份后沒有進(jìn)行過大的表結(jié)構(gòu)改動,系統(tǒng)表可用。
8、還原備份。
還原備份:

9、提取數(shù)據(jù)庫中各表的表結(jié)構(gòu)信息。
提取表結(jié)構(gòu)信息:

10、解析表結(jié)構(gòu)腳本。將各表的列信息存入數(shù)據(jù)庫內(nèi)。
掃描腳本文件:

表結(jié)構(gòu)信息存入數(shù)據(jù)庫:

11、解析系統(tǒng)表獲取用戶表id信息、關(guān)聯(lián)表結(jié)構(gòu)與數(shù)據(jù)頁。
12、新建數(shù)據(jù)庫,使用北亞企安自主編寫軟件解析記錄并導(dǎo)入到恢復(fù)環(huán)境內(nèi)。
13、整理恢復(fù)結(jié)果。在此分區(qū)內(nèi)除了存放數(shù)據(jù)庫文件外還存放一些備份文件,所以在導(dǎo)出記錄后可能存在重復(fù)數(shù)據(jù),北亞企安數(shù)據(jù)恢復(fù)工程師編寫程序進(jìn)行去重。
數(shù)據(jù)庫去重:

14、去重后由用戶方工程師進(jìn)行對恢復(fù)出來的數(shù)據(jù)庫文件進(jìn)行檢測驗(yàn)證,經(jīng)過仔細(xì)查驗(yàn)后確認(rèn)數(shù)據(jù)完整可用。
15、由數(shù)據(jù)恢復(fù)工程師協(xié)助用戶方工程師將恢復(fù)出來的數(shù)據(jù)遷移到準(zhǔn)備好的環(huán)境中。