Sql Server數據庫未知原因丟失數據恢復過程


故障描述:

5塊2T硬盤組建RAID5,划分LUN供windows服務器使用。在windows服務器內裝有Sql Server2008數據庫。存儲空間內共有三個邏輯分區,大小分別為500G、800G、2.3T。數據庫文件丟失,主要涉及五個數據庫,表個數約為6000個左右。丟失原因未知,且不能確定數據存儲位置。三個數據庫的大小分別為8G、15G、20G。在文件丟失后服務器仍處於開機狀態,但並未寫入大量數據。

初檢流程:

1、使用RAID信息及內部數據塊信息重組RAID。

重組RAID

2、提取LUN內三個分區鏡像。
3、掃描文件系統內丟失文件,未找到被刪除數據庫文件。
4、初檢結果為數據庫文件丟失,通過文件系統角度無法恢復。

恢復流程:

1、制定恢復方案。在數據庫文件被刪除且判定為無法恢復文件后,只能通過掃描數據頁,並提取頁內記錄的方式進行恢復。
2、使用北亞自主編數據頁掃描程序掃描分區內數據頁並提取。在分別掃描兩個分區鏡像后發現500G系統盤內數據頁數量極少且數據頁斷裂情況嚴重,另一分區內掃描到數據頁個數較多。暫定此分區為數據庫文件存儲空間。


掃描數據頁

3、重組系統表。Sql Server數據庫使用系統表來管理所有用戶表,在這些系統表內記錄了各表的列數、數據類型及約束信息等。解析系統表過程中發現提取出的數據頁內系統表損壞,無法正常讀取信息。在與客戶溝通后得知有備份文件,且備份完成后沒有大量改動表結構,系統表可用。
4、還原備份。


還原備份

5、分別提取三個庫中各表表結構信息

提取表結構信息

6、解析表結構腳本。將各表的列信息存入數據庫內便於后續使用。

掃描腳本文件

表結構信息存入數據庫

7、解析系統表獲取用戶表id信息、關聯表結構與數據頁。(為保護客戶隱私,后續步驟涉及用戶表表名及數據頁內數據部分均未截圖)

8、新建數據庫,使用北亞自主編寫軟件解析記錄並導入到恢復環境內。

9、整理恢復結果。在此分區內除數據庫文件外還存有備份文件若干,所以在導出記錄后可能存在重復數據,必須去重。編寫SQL存儲過程進行去重。

數據庫去重

  10、客戶驗證數據。客戶在查驗過數據后表示數據可以接受,移交數據到客戶存儲設備,恢復成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM