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