91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

龙山县| 临洮县| 麻阳| 龙江县| 岗巴县| 眉山市| 新竹县| 阆中市| 民县| 和田县| 金溪县| 石嘴山市| 临桂县| 包头市| 仁怀市| 容城县| 上杭县| 金阳县| 安西县| 南和县| 泰宁县| 武穴市| 梅州市| 甘洛县| 榆林市| 海原县| 昌吉市| 松桃| 赤水市| 乐山市| 江陵县| 临朐县| 吉首市| 牡丹江市| 大化| 武鸣县| 穆棱市| 黄陵县| 全州县| 朔州市| 特克斯县|