中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MongoDB數據庫文件損壞恢復數據全過程

發布時間:2020-02-26 23:41:14 來源:網絡 閱讀:3404 作者:宋國建 欄目:MongoDB數據庫

一.故障描述

客戶設備環境為一臺操作系統為Windows Server 2008的服務器,部署MongoDB數據庫。由于業務需要,客戶在未關閉MongoDB數據庫服務的情況下,對數據庫文件進行了拷貝。將數據庫文件拷貝到其他分區后,客戶對原數據庫分區進行了格式化操作,后將數據庫文件拷回原分區,重新啟動MongoDB服務,這時,客戶發現服務無法啟動。報錯如下:
MongoDB數據庫文件損壞恢復數據全過程
圖一:

二.故障檢測

一般來說,在服務沒有關閉的情況下,直接對MongoDB數據庫文件進行拷貝,由于服務還在運行,會導致mongod.lock文件以及WiredTiger.lock文件拷貝出現錯誤,這個時候在拷貝出的文件中刪除這兩個文件,再次啟動服務,由MongoDB自行重新生成即可。
但是通過對客戶拷貝出的文件進行現場檢測發現,客戶拷貝出的數據庫文件中,_mdb_catalog.wt文件丟失。
mdb_catalog.wt文件里存儲了MongoDB中所有集合的元數據,數據庫啟動時需要從這個文件中讀取相關的信息。由于此文件丟失,導致數據庫無法獲取數據庫中集合對應的名字,集合的創建選項,集合的索引信息等元數據,數據庫無法啟動。

三.數據恢復

首先我們嘗試從文件系統的角度對_mdb_catalog.wt文件進行恢復。
使用專業數據恢復軟件對數據庫分區進行掃描,查看掃描結果,并沒有_mdb_catalog.wt文件的信息。根據MongoDB數據庫中,數據文件的特征值,對數據庫分區進行掃描,也沒有發現_mdb_catalog.wt相關的數據區域。由此判斷,_mdb_catalog.wt文件已經被徹底覆蓋破壞,無法恢復。
此時只能從數據庫的層面想辦法提取其中的數據了。
客戶所部署的MongoDB數據庫是基于WT存儲引擎的數據庫系統,這樣的話我們就可以使用WT實用工具包提取數據庫中的數據。
首先下載WT實用工具包,然后再windows環境下編譯出可執行的wt工具。
MongoDB數據庫文件損壞恢復數據全過程
圖二:
編譯完成后,使用wt工具,先對數據庫的集合文件中的數據進行清洗,完成后,直接讀取文件中的數據,寫入到一個dump文件中。
這個時候我們就已經把數據庫的各個集合文件中的全部可用數據提取出來了,下一步我們要做的就是還原數據庫環境。
重新創建一個MongoDB數據庫,根據我們提取出的集合文件,創建對應數量的空集合,然后使用wt工具,將提取出來的dump文件一一寫入到新創建的空集合中。這個時候就可以通過查詢集合中的數據,確認這些集合與元數據庫中集合的對應關系,修改集合名稱,重建索引信息,到這,數據恢復基本就已經完成了。
通過查詢集合中的記錄,確定記錄類型,從而確定fs.files和fs.chunks集合的位置后,修改這兩個集合名稱為xxx.files和xxx.chunks后,重建集合索引,集合恢復完成,可以正常查看其中數據:
MongoDB數據庫文件損壞恢復數據全過程
圖三:
MongoDB數據庫文件損壞恢復數據全過程
圖四:

四.數據驗證

協助客戶對全部集合進行索引重建之后,客戶對數據庫整體進行查詢驗證,數據無誤,此次數據恢復圓滿成功。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定远县| 韩城市| 蒙山县| 阳曲县| 肃北| 安国市| 德安县| 滁州市| 万安县| 财经| 宜宾县| 正镶白旗| 荔波县| 景谷| 霍林郭勒市| 德保县| 米脂县| 巴彦淖尔市| 姚安县| 海晏县| 永年县| 侯马市| 庆安县| 如东县| 新巴尔虎左旗| 分宜县| 武城县| 玉环县| 尤溪县| 舒兰市| 昌图县| 曲麻莱县| 拉萨市| 保康县| 任丘市| 中西区| 邛崃市| 抚顺县| 石棉县| 精河县| 固镇县|