服務器斷電導致虛擬機數(shù)據(jù)丟失的恢復方法詳解
本文實例講述了服務器斷電導致虛擬機數(shù)據(jù)丟失的恢復方法。分享給大家供大家參考,具體如下:
在服務器運行過程中如果出現(xiàn)意外情況突然斷電很容易引起服務器故障,服務器中的硬件設(shè)備損壞可以修復或者購買,但是服務器中的數(shù)據(jù)一旦發(fā)生故障丟失,對于企業(yè)來說將是不可估量的損失。那么服務器數(shù)據(jù)一旦丟失就除了痛哭之外別無他法了嗎?不是的,下面我將引用一個真實案例為大家講解意外斷電導致服務器數(shù)據(jù)丟失的數(shù)據(jù)恢復方法和過程。文中若有歧義之處歡迎探討。
虛擬機數(shù)據(jù)丟失情況描述
因服務器突然斷電原因?qū)е耎en Server服務器中一臺VPS(即Xen Server虛擬機)不可用,虛擬磁盤文件丟失。硬件環(huán)境是Dell 720服務器配戴一張H710P的RAID卡,由4塊希捷2T STAT硬盤組成的RAID 10,上層環(huán)境是Xen Server 6.2版本操作系統(tǒng),虛擬機是Windows Server 2003系統(tǒng),10G系統(tǒng)盤 + 5G數(shù)據(jù)盤兩個虛擬機磁盤,上層是Web服務器(ASP + SQL 2005的網(wǎng)站架構(gòu))。
分析故障原因
為確??蛻粼紨?shù)據(jù)的安全必須先將客戶的數(shù)據(jù)盤連接到恢復環(huán)境服務器上準備對數(shù)據(jù)進行鏡像備份,這一步中需要準備超過客戶硬盤總?cè)萘康拇鎯臻g將數(shù)據(jù)以底層扇區(qū)的方式進行鏡像備份。
在案例中分析底層數(shù)據(jù)發(fā)現(xiàn)Xen Server服務器中虛擬機的磁盤均以以LVM的結(jié)構(gòu)存放,即每個虛擬機的虛擬磁盤都是一個LV,并且虛擬磁盤的模式是精簡模式的。LVM的相關(guān)信息在Xen Server中都有記載,查看“/etc/lvm/backup/frombtye.com “下LVM的相關(guān)信息發(fā)現(xiàn)并沒有存在損壞的虛擬磁盤信息,因此可以斷定LVM的信息已經(jīng)被更新了。接著分析底層看能否找到未被更新的LVM信息,果不其然在底層發(fā)現(xiàn)了還未更新的LVM信息。如下圖:
根據(jù)未被更新的LVM信息找到了虛擬磁盤的數(shù)據(jù)區(qū)域,發(fā)現(xiàn)該區(qū)域的數(shù)據(jù)已被破壞。分析后發(fā)現(xiàn)造成虛擬機不可用的最終原因是因為虛擬機的虛擬磁盤被破壞,從而導致虛擬機中的操作系統(tǒng)和數(shù)據(jù)丟失。而導致這種情況的發(fā)生很有可能是虛擬機遭遇網(wǎng)絡攻擊或hack入侵后留下惡意程序造成的。仔細核對這片區(qū)域后發(fā)現(xiàn),雖然該區(qū)域有很多數(shù)據(jù)被破壞了,但還是發(fā)現(xiàn)了很多數(shù)據(jù)庫的頁碎片。因此可以嘗試將許多數(shù)據(jù)庫的頁碎片拼成一個可用的數(shù)據(jù)庫。
制定數(shù)據(jù)恢復方案:
1、實施方案一
根據(jù)RAR壓縮包的結(jié)構(gòu)可以找到很多壓縮包的數(shù)據(jù)開始位置,而RAR壓縮包文件的第一個扇區(qū)中會記錄此RAR的文件名。因此根據(jù)從客戶那里得知備份數(shù)據(jù)庫的壓縮包文件名和目前找到的壓縮包位置的文件名相匹配,即可找到備份數(shù)據(jù)庫壓縮包的開始位置。找到壓縮包的位置后仔細分析這片區(qū)域的數(shù)據(jù),然后將此區(qū)域的數(shù)據(jù)恢復出來重命名為一個RAR格式的壓縮文件。然后嘗試解壓此壓縮包,發(fā)現(xiàn)解壓報錯。
報錯如下圖所示:
仔細分析恢復出來的壓縮包發(fā)現(xiàn)中有部分數(shù)據(jù)被破壞了,因此解壓的時候報錯。嘗試使用RAR的修復工具看能否忽略錯誤,解壓部分數(shù)據(jù)。結(jié)果修復完成之后解壓的數(shù)據(jù)庫只有網(wǎng)站的部分代碼,并沒有數(shù)據(jù)庫的備份文件。因此可以判斷數(shù)據(jù)的備份文件在RAR壓縮包中是損壞的。
如下是解壓出來的部分網(wǎng)站代碼。
2、實施方案二
由于方案一并沒有將數(shù)據(jù)庫恢復出來,因此采用方案二來恢復數(shù)據(jù)。根據(jù)SQL Server數(shù)據(jù)庫的結(jié)構(gòu)去底層分析數(shù)據(jù)庫的開始位置,在數(shù)據(jù)庫的結(jié)構(gòu)中,第9個頁會記錄本數(shù)據(jù)庫的數(shù)據(jù)庫名。因此在客戶那里獲取數(shù)據(jù)庫的名稱之后,再分析底層找到此數(shù)據(jù)庫的開始位置。因為在數(shù)據(jù)庫的每個頁中都會記錄數(shù)據(jù)庫頁編號以及文件號,所以可以根據(jù)這些特征編寫程序去底層掃描符合數(shù)據(jù)庫頁的數(shù)據(jù)。
然后將掃描出來的碎片按順序重組成一個完整MDF文件,再通過MDF校驗程序檢測整個MDF文件是否完整。重建的MDF文件如下:
驗證數(shù)據(jù)
檢測沒問題之后再搭建數(shù)據(jù)庫環(huán)境,將重組后的數(shù)據(jù)庫附加到搭建好的數(shù)據(jù)庫環(huán)境中。然后查詢相關(guān)表數(shù)據(jù)是否正常,查詢最新數(shù)據(jù)是否存在。截圖如下:
虛擬機數(shù)據(jù)恢復總結(jié):
由于數(shù)據(jù)庫需要結(jié)合網(wǎng)站代碼才能更好的驗證數(shù)據(jù)庫的完整性。客戶從開發(fā)商里拿到了網(wǎng)站代碼搭建好了環(huán)境,然后將恢復好的數(shù)據(jù)庫發(fā)給用戶。經(jīng)用戶驗證后,數(shù)據(jù)庫沒問題,通過拼數(shù)據(jù)庫碎片的方式成功將數(shù)據(jù)庫恢復完成,整個數(shù)據(jù)恢復成功。
希望本文所述對大家服務器維護有所幫助。
相關(guān)文章
使用寶塔面板如何查看網(wǎng)站日志分析搜索引擎蜘蛛數(shù)據(jù)
網(wǎng)站日志(確切的講應該是服務器日志)是記錄WEB服務器接收處理請求以及運行錯誤等各種原始信息的文件。通過查看網(wǎng)站日志分析數(shù)據(jù)我們可以獲得很有有用的數(shù)據(jù),例如蜘蛛訪問、是否被惡意訪問、網(wǎng)站訪客來源等等2023-04-04Keepalived+HAProxy高可用集群K8S實現(xiàn)
這篇文章主要為大家介紹了Keepalived+HAProxy實現(xiàn)高可用集群K8S的構(gòu)建方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-03-03配置管理和服務發(fā)現(xiàn)之Confd和Consul使用場景詳解
這篇文章主要為大家介紹了配置管理和服務發(fā)現(xiàn)之Confd和Consul使用場景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03rsync同步時出現(xiàn)rsync: failed to set times on “xxxx”: Operation no
今天在同步數(shù)據(jù)的時候提示rsync: failed to set times on “xxxx”: Operation not permitted,一般來說要不是服務器時間不對或者權(quán)限沒有設(shè)置好2016-12-12