數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境&故障:
一個(gè)運(yùn)行在存儲(chǔ)上的SQLServer數(shù)據(jù)庫(kù),有1000多個(gè)文件,大小幾十TB。數(shù)據(jù)庫(kù)每10天生成一個(gè)NDF文件,每個(gè)NDF幾百GB大小。數(shù)據(jù)庫(kù)包含兩個(gè)LDF文件。
存儲(chǔ)損壞,數(shù)據(jù)庫(kù)不可用。管理員試圖恢復(fù)數(shù)據(jù)庫(kù),發(fā)現(xiàn)有數(shù)個(gè)ndf文件大小變?yōu)?KB。
雖然NDF文件大小變?yōu)?KB,但是NDF文件在磁盤上還可能存在??梢試L試通過(guò)掃描&拼接數(shù)據(jù)庫(kù)碎片來(lái)恢復(fù)NDF文件,然后修復(fù)數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)過(guò)程:
1、將存儲(chǔ)上所有磁盤標(biāo)記后取出,經(jīng)過(guò)硬件工程師檢測(cè)沒(méi)有發(fā)現(xiàn)有硬盤存在硬件故障,都可以正常讀取。以只讀方式將所有磁盤進(jìn)行扇區(qū)級(jí)全盤鏡像。鏡像完成后將所有磁盤按照原樣還原到原存儲(chǔ)中。后續(xù)的數(shù)據(jù)分析和數(shù)據(jù)恢復(fù)操作都基于鏡像文件進(jìn)行,避免對(duì)原始數(shù)據(jù)造成二次破壞。
2、北亞企安數(shù)據(jù)恢復(fù)工程師編寫(xiě)數(shù)據(jù)庫(kù)碎片掃描程序掃描數(shù)據(jù)庫(kù)碎片。根據(jù)NDF文件的頁(yè)面特征,按照文件號(hào)和頁(yè)號(hào)拼接碎片,重組生成那些大小變?yōu)?kb的NDF文件。
3、使用SQLServer文件檢測(cè)工具檢測(cè)所有數(shù)據(jù)文件,結(jié)果發(fā)現(xiàn)拼接出的數(shù)個(gè)NDF文件有少量的空頁(yè),其他文件正常。
4、進(jìn)一步分析發(fā)現(xiàn)數(shù)據(jù)頁(yè)在存儲(chǔ)層面已經(jīng)不存在了,這些數(shù)據(jù)頁(yè)無(wú)法恢復(fù),即這幾個(gè)NDF文件無(wú)法完整恢復(fù)。
5、嘗試附加數(shù)據(jù)庫(kù),報(bào)錯(cuò) “處理數(shù)據(jù)庫(kù)的日志時(shí)出錯(cuò),如果可能請(qǐng)從備份還原。如果沒(méi)有可用的備份,可能需要重新生成日志?!?br />
6、修改系統(tǒng)表,從系統(tǒng)表剔除掉最后添加的LDF文件,計(jì)算并修改校驗(yàn)。嘗試進(jìn)行無(wú)日志附加數(shù)據(jù)庫(kù),報(bào)錯(cuò):“數(shù)據(jù)庫(kù)存在一致性錯(cuò)誤。”
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
7、修改系統(tǒng)表中記錄這幾個(gè)損壞的NDF文件的塊數(shù)量的值,改為和拼接出來(lái)的NDF文件塊的數(shù)量一致,更改這4個(gè)NDF文件首頁(yè),計(jì)算并修改校驗(yàn)值。
8、無(wú)日志附加數(shù)據(jù)庫(kù),仍然報(bào)錯(cuò)“數(shù)據(jù)庫(kù)存在一致性錯(cuò)誤?!?br />
9、由于空頁(yè)都出現(xiàn)在這幾個(gè)NDF文件后面的十幾個(gè)塊中,截?cái)辔募?duì)數(shù)據(jù)完整性影響不大。重新修改系統(tǒng)表和NDF文件,將數(shù)據(jù)庫(kù)中記錄NDF文件的塊數(shù)量的值改為等于報(bào)錯(cuò)的塊前一頁(yè),計(jì)算并修改校驗(yàn)。
10、重新進(jìn)行無(wú)日志附加數(shù)據(jù)庫(kù),報(bào)錯(cuò)“由于數(shù)據(jù)庫(kù)沒(méi)有完全關(guān)閉,無(wú)法重新生成日志。”
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
11、修改MDF文件中的數(shù)據(jù)庫(kù)的狀態(tài)值,讓數(shù)據(jù)庫(kù)認(rèn)為是完全關(guān)閉的。
12、重新附加數(shù)據(jù)庫(kù),附加成功。
北亞企安數(shù)據(jù)恢復(fù)—SQLServer數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)
數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)結(jié)果:
數(shù)據(jù)庫(kù)文件成功附加后,由用戶方通過(guò)數(shù)據(jù)庫(kù)中的對(duì)象進(jìn)行查詢&驗(yàn)證,經(jīng)過(guò)查詢驗(yàn)證,確定表中信息基本完整,數(shù)據(jù)恢復(fù)完整。用戶方認(rèn)可數(shù)據(jù)恢復(fù)結(jié)果。
審核編輯 黃宇
-
數(shù)據(jù)恢復(fù)
+關(guān)注
關(guān)注
10文章
573瀏覽量
17452 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3799瀏覽量
64389 -
SQLserver
+關(guān)注
關(guān)注
0文章
18瀏覽量
7002
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論