SQL Server是一個可擴展的、高性能的、為分布式客戶機/服務器計算所設計的數據庫管理系統,實現了與WindowsNT的有機結合,提供了基于事務的企業級信息管理系統方案 。本次需要進行數據恢復的服務器是一臺r520型號存儲,共有7塊SAS硬盤分別組成RAID1和RAID5兩組磁盤陣列 。
主要SQL Server數據庫存放在C盤中,在使用過程中,客戶發現C盤容量即將占滿,于是將數據庫路徑指向了D盤,在D盤生成了一個.ndf文件 。
客戶在繼續使用了大約10天之后,數據庫出現故障,連接失效,無法正常附加查詢 。在遇到這種情況是應該如何進行正確操作呢?
【備份數據】
考慮到數據的安全性以及可還原性,在做數據恢復之前需要對所有源數據做備份,以防萬一其他原因導致數據無法再次恢復 。使用dd命令或winhex工具將所有磁盤都鏡像成文件 。
【故障分析】
首先分析故障原因:由于數據庫文件所在磁盤容量不足,導致數據庫無法繼續正常運行,出現邏輯錯誤;
再分析RAID組結構:客戶服務器上共7塊300G硬盤,其中2塊硬盤做RAID 1,用于安裝操作系統,其余5塊硬盤做RAID 5存放數據 。分析RAID 1和RAID 5的相關結構,重組虛擬出RAID 1和RAID 5,查看其中數據 。
再分析原始數據庫文件:由于客戶在數據庫發生故障之后,進行過多次數據庫恢復嘗試,并且每一次嘗試都是在源環境下進行的,導致原始數據庫文件被更改覆蓋,并且磁盤空間被多次復寫,無法使用嘗試恢復之后的數據庫文件進行修復 。詢問客戶得知,客戶在數據庫發生故障的時候,備份過一分原始的故障數據庫文件 。
【數據庫修復】
從虛擬出的RAID 5空間中將客戶之前備份的數據庫文件拷貝出來,嘗試在數據庫中附加,附加失敗 。錯誤提示主數據庫文件和次級數據庫文件不匹配,查看.ndf文件底層,發現.ndf文件中幾乎沒有數據,嘗試取消.mdf文件和.ndf文件之間關聯,只用.mdf文件進行附加 。
嘗試后發現,只用.mdf文件附加時也發生錯誤,但是錯誤提示改變 。
此時錯誤提示日志文件(.ldf)和數據庫文件(.mdf)不匹配 。之后對數據庫嘗試進行無數據庫附加,附加成功 。但是發現數據庫系統表損壞,無法正常使用 。對數據庫的系統表嘗試修復,但由于系統表損壞過于嚴重,無法修復 。
【數據庫記錄提取】
解析數據庫文件中的數據庫記錄,編寫相應的程序提取數據庫文件中的數據庫記錄 。根據客戶以前的數據庫備份獲取數據庫中的表結構,重構表結構并肩提取出的數據庫記錄導入到新的表中,進行數據驗證,如數據沒有問題,即本次數據恢復成功 。
【北亞數據恢復小貼士】
猜你喜歡
- Python中sqlalchemy庫如何使用?Python中sqlalchemy庫的使用方法
- mysql實現分頁查詢 mysql分頁語句怎么寫
- 數據庫中弱實體是什么 數據庫中弱實體解說
- sql數據庫insert用法 insert into語法錯誤有什么原因
- 2016數據庫安裝教程 sql2016安裝教程圖解
- 2021數據庫考試題及答案 mysql題目和詳細答案
- 數據庫刪除表命令 刪除表sql數據
- sql優化的方法及思路 mysql慢查詢優化方法
- 貴州茶樹種質資源數據庫的建立研究
- 數據庫常用的關系運算是什么 數據庫常用的關系運算解說
