MongoDB 數據庫恢復-誤刪除數據文件、delete、勒索病毒破壞 無oplog日誌 恢復實操

目錄

MongoDB數據丟失的場景

MongoDB存儲結構分析

MongoDB數據恢復代碼實現

MongoDB數據恢復步驟

MongoDB數據恢復近期案例1

MongoDB數據恢復近期案例2

技術支持



MongoDB數據丟失的場景

MongoDB是一款NoSQL-文檔存儲 數據庫,目前沒有商用恢復軟件或工具。

MongoDB出現SQL命令誤刪除(整個庫、集合、文件)、操作系統rm誤刪除文件、勒索病毒惡意破壞等,或者在擴容、均衡等操作出現異常,都可能導致數據無法訪問,需要數據恢復。


MongoDB存儲結構分析

  MongoDB 的邏輯結構是一種層次結構。主要由:文檔(document)、集合(collection)、數據庫(database)這三部分組成:

MongoDB的數據存儲db文件中,此文件結構如下:

當db文件被物理被刪除刪除時,爲了達到最大化數據恢復,需要從Document的級別恢復。以下爲ns文件和db文件的關鍵結構信息:

class DiskLoc {

    int _a;  // 數據文件編號,如mydb.0編號爲0

    int ofs; // 文件內部偏移

 };

每個數據文件包含一個固定長度頭部DataFileHeader

 class DataFileHeader {

        DataFileVersion version;

        int fileLength;

        DiskLoc unused;

        int unusedLength;

        DiskLoc freeListStart;

        DiskLoc freeListEnd;

        char reserve[];

 };

struct Extent {

        unsigned magic;

        uint32 myLoc;   

        DiskLoc xnext;

        DiskLoc xprev;

        int length;  // extent總長度

        DiskLoc firstRecord;  // extent內第一個record位置指針

        DiskLoc lastRecord;   // extent內最後一個record位置指針

        char _extentData[4];  // extent數據

};

class Record {

        int _lengthWithHeaders;  // Record長度

        int _extentOfs;          // Record所在的extent位置指針

        int _nextOfs;                  // 前一個Record位置信息

        int _prevOfs;                  // 後一個Record位置信息

        char _data[4];            // Record數據

};


MongoDB數據恢復代碼實現

通過解析MongoDB源代碼,及對應數據庫文件結構,我們編寫了MongoDB數據恢復工具,核心代碼如下:

打開源文件代碼:申請READONLY只讀權限,確保對源文件是隻讀訪問,杜絕二次破壞!

 


MongoDB數據恢復步驟

  • 將Data-Unit_MongoDB_Restore.exe放在有足夠可用空間的目錄下。如果需要從某分區中搜索碎片,如D盤,則一定不能將工具放在D盤,切記!
  • 運行恢復工具,如果提示缺少dll,請安裝vc_redist.2015x64.exe

支持以下4種數據源:

  • 裸磁盤(整個磁盤):直接輸入磁盤序號,如下圖,以管理員權限運行工具,輸入數字2,則掃描磁盤2。注意windows的磁盤從0開始編號

  • 分區:以管理員身份運行工具,輸入盤符,如 D
  • 鏡像文件(裸磁盤或分區的鏡像文件,支持任意文件系統,如ext3、ext4、XFS、NTFS、VMFS5、VMFS6、vmdk、VHD文件,等等):用鼠標,直接將文件拖入cmd窗口即可
  • 殘缺的db文件:用鼠標,直接將文件拖入cmd窗口即可
  • 按下回車開始掃描,Data-Unit_MongoDB_Restore自動將找到的數據輸出到MongoDB_restor_file目錄

MongoDB數據恢復近期案例1

MongoDB數據恢復近期案例2


技術支持

溫馨提示:如重要數據丟失,建議在行動前諮詢專業工程師,以免數據遭到二次破壞。

企業級恢復支持:https://shop65444600.taobao.com

官方網站:http://www.data-unit.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章