【數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)】磁盤空間不足導(dǎo)致sql server數(shù)據(jù)庫(kù)故障的恢復(fù)

數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境:
一臺(tái)Dell PowerEdge某型號(hào)存儲(chǔ),數(shù)塊SAS硬盤分別組建raid1和raid5兩組磁盤陣列。其中2塊磁盤組建的RAID1,用于安裝操作系統(tǒng);其余幾塊磁盤組建raid5,用于存放數(shù)據(jù)。
上層安裝的windows服務(wù)器,部署有sql server數(shù)據(jù)庫(kù),sql server數(shù)據(jù)庫(kù)存放在C盤分區(qū)。
數(shù)據(jù)庫(kù)故障&分析:
管理員發(fā)現(xiàn)存放sql server數(shù)據(jù)庫(kù)的C盤剩余空間不足,于是將數(shù)據(jù)庫(kù)路徑指向D盤,在D盤生成了一個(gè).ndf文件。
大約半個(gè)月之后,數(shù)據(jù)庫(kù)出現(xiàn)故障,無(wú)法連接和附加查詢。
由于數(shù)據(jù)庫(kù)文件所在磁盤的容量不足,數(shù)據(jù)庫(kù)無(wú)法正常運(yùn)行,出現(xiàn)邏輯錯(cuò)誤。
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
1、將存儲(chǔ)設(shè)備中所有磁盤以只讀方式進(jìn)行全盤鏡像備份,后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對(duì)原始數(shù)據(jù)造成二次破壞。
2、基于鏡像文件分析存儲(chǔ)中RAID1和RAID5的結(jié)構(gòu),獲取RAID相關(guān)信息,利用這些信息虛擬重組RAID1和RAID5。
3、由于管理員在發(fā)現(xiàn)數(shù)據(jù)庫(kù)出現(xiàn)故障之后進(jìn)行過(guò)多次數(shù)據(jù)庫(kù)恢復(fù)操作。每次恢復(fù)操作都是在原環(huán)境下進(jìn)行的,導(dǎo)致原始的數(shù)據(jù)庫(kù)文件被更改覆蓋,磁盤空間被多次復(fù)寫(xiě),所以無(wú)法使用嘗試恢復(fù)之后的數(shù)據(jù)庫(kù)文件進(jìn)行修復(fù)。所幸的是,經(jīng)過(guò)溝通得知在數(shù)據(jù)庫(kù)發(fā)生故障的時(shí)候,對(duì)原始數(shù)據(jù)庫(kù)文件進(jìn)行過(guò)備份。
4、從虛擬重組出來(lái)的RAID5的空間中將管理員備份的數(shù)據(jù)庫(kù)文件拷貝出來(lái),嘗試在數(shù)據(jù)庫(kù)中附加,附加失敗,錯(cuò)誤提示如下:

錯(cuò)誤提示主數(shù)據(jù)庫(kù)文件和次級(jí)數(shù)據(jù)庫(kù)文件不匹配。
5、查看.ndf文件底層,發(fā)現(xiàn)該文件中幾乎沒(méi)有數(shù)據(jù)。嘗試取消.mdf文件和.ndf文件之間的關(guān)聯(lián)并只用.mdf文件進(jìn)行附加,依然報(bào)錯(cuò)但錯(cuò)誤提示發(fā)生變化。錯(cuò)誤提示如下:

錯(cuò)誤提示日志文件(.ldf)和數(shù)據(jù)庫(kù)文件(.mdf)不匹配。
6、嘗試對(duì)數(shù)據(jù)庫(kù)進(jìn)行無(wú)數(shù)據(jù)庫(kù)附加,附加成功。但是發(fā)現(xiàn)數(shù)據(jù)庫(kù)系統(tǒng)表?yè)p壞,無(wú)法正常使用。

7、嘗試修復(fù)數(shù)據(jù)庫(kù)的系統(tǒng)表,但系統(tǒng)表?yè)p壞過(guò)于嚴(yán)重,無(wú)法修復(fù)。
8、北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)程序解析&提取數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)庫(kù)記錄。
9、根據(jù)數(shù)據(jù)庫(kù)備份獲取數(shù)據(jù)庫(kù)的表結(jié)構(gòu),重構(gòu)表結(jié)構(gòu)并將提取出的數(shù)據(jù)庫(kù)記錄導(dǎo)入到新的表中。
數(shù)據(jù)驗(yàn)證:
由用戶方對(duì)提取出的數(shù)據(jù)庫(kù)記錄進(jìn)行驗(yàn)證,經(jīng)過(guò)反復(fù)驗(yàn)證,確認(rèn)數(shù)據(jù)完整有效,本次數(shù)據(jù)恢復(fù)工作完成。
Tips:
部署數(shù)據(jù)庫(kù)時(shí)要合理分配數(shù)據(jù)庫(kù)文件所在磁盤的空間,及時(shí)清理垃圾數(shù)據(jù),保證數(shù)據(jù)庫(kù)的正常、安全運(yùn)行。