【数据库数据恢复】MongoDB数据库启动失败的数据恢复案例

news2025/1/11 17:55:39

数据库数据恢复环境:
Windows Server操作系统服务器,部署MongoDB数据库。

数据库故障&分析:
在MongoDB数据库服务未关闭的情况下,管理员将MongoDB数据库文件从原分区拷贝到其他分区,然后将MongoDB数据库所在原分区格式化,格式化完成又将MongoDB数据库文件拷回原分区,启动MongoDB服务失败并报错。

 

在MongoDB数据库服务没有关闭的情况下,直接拷贝MongoDB数据库文件,mongod.lock和WiredTiger.lock这2个文件拷贝出来是有问题的。正确的操作方法是:在拷贝出的数据库文件中将这两个文件删除后再次启动服务,这2个文件会由MongoDB自行重新生成。
通过检测拷贝出的MongoDB数据库文件发现_mdb_catalog.wt文件丢失。
_mdb_catalog.wt文件里存储了MongoDB数据库中所有集合的元数据,MongoDB数据库启动时需要从_mdb_catalog.wt文件中读取相关信息。如果_mdb_catalog.wt文件丢失,MongoDB数据库就无法获取数据库中集合对应的名字、集合的创建选项、集合的索引信息等元数据,数据库无法启动。

数据库数据恢复过程:
1、对MongoDB数据库所涉及的硬盘以只读方式进行全盘镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免在恢复数据的过程中对原始数据造成二次破坏。
2、尝试从文件系统的层面恢复_mdb_catalog.wt文件。扫描数据库分区没有发现和_mdb_catalog.wt文件相关的信息。根据MongoDB数据库数据文件的特征值扫描数据库分区,也没有发现和_mdb_catalog.wt相关的数据区域。所以可以断定_mdb_catalog.wt文件已经被彻底破坏,无法恢复,只能从数据库层面恢复数据了。
3、该案例中部署的MongoDB数据库基于WT存储引擎,可以使用WT实用工具包提取数据库中的数据。下载WT实用工具包并在windows环境下编译出可执行的wt工具。

 

4、编译完成后,北亚企安数据恢复工程师使用wt工具清洗数据库的集合文件中的数据,完成清洗后直接读取文件中的数据并写入到一个dump文件中。将数据库的各个集合文件中的全部可用数据提取出来。
5、创建一个MongoDB数据库,根据提取出的集合文件创建对应数量的空集合。使用wt工具将提取出来的dump文件一一写入到新创建的空集合中。
6、通过查询集合中的数据来确认这些写入dump文件的集合与元数据库中集合的对应关系,修改集合名称并重建索引信息。
7、通过查询集合中的记录,确定记录类型。确定fs.files和fs.chunks集合的位置后,修改这两个集合名称为xxx.files和xxx.chunks后并重建集合索引,集合恢复完成后就可以正常查看其中数据。

 

 

数据库数据验证:
协助用户方工程师对全部集合进行索引重建之后,由用户对数据库进行查询验证,确认数据无误,本次数据恢复工作完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网页解析--接上篇--bs4/xpath

网页解析完成的是从下载回来的html文件中提取所需数据的方法,一般会用到的方法有: 正则表达式:将整个网页文档当成一个字符串用模糊匹配的方式来提取出有价值的数据 Beautidul Soup:一个强大的第三方插件 lxml:解析html网页或者xm…

一文详解 PoseiSwap,Nautilus Chain 上的首个 DEX

前不久,首个 Layer3 概念的新链 Nautilus Chain 推出了测试网“Triton” 引发瞩目,据了解过,经过一个月的Triton I测试历程,Nautilus Chain社区成员突破200,000,同时测试网激励活动注册地址数突破180,000,链…

Kotlin中lateinit 和 Lazy 的区别

Kotlin中Lateinit 和 Lazy 的区别 latinit 我们可能不想在定义它们时初始化我们的值,相反我们可能想在以后的任何时间初始化并在我们的应用程序中使用它们。但是在使用我们的值之前,一定要记住,我们的值必须先初始化,然后才能使用…

高斯混合模型 GMM 的详细解释

高斯混合模型(后面本文中将使用他的缩写 GMM)听起来很复杂,其实他的工作原理和 KMeans 非常相似,你甚至可以认为它是 KMeans 的概率版本。 这种概率特征使 GMM 可以应用于 KMeans 无法解决的许多复杂问题。 因为KMeans的限制很多…

【factoryio】虚拟仓储实现(入仓出仓)

实现虚拟工厂场景之一的智能仓储实验 注:本文仅供参考 目录 引 入仓部分 1.上料部分 1.效果 2.实现 2.入仓部分 1.效果 2.实现 3.入仓扩展 1.行列控制和优先级 2.入仓优化和完善 出仓部分 1.出仓 2.后传送带 3.出仓效果 1.效果 2.优先级 3.完…

Linux时间服务器(ntp)

1.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 2.配置ssh免密登陆,能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 一.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 1、软件安装 [rootl…

高速前行的低代码,其能力边界到底在哪?

最近半年,有好些来自不同岗位、不同立场的人开始问同一个问题:低代码平台的边界是什么?低代码无所不能吗? “全民开发”、“人人都是开发者”这样的口号愈演愈烈,“低代码能力有没有边界”、“边界在哪”,这…

数据要素化全面提速,数据复制将迎来春天?

数据复制市场将迎来真正的春天? 目前看的确如此。近日,国家发改委密集发文,从产权、分配、流通、安全等多个角度解读“数据二十条”( 《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》,简称“数据二…

算法的时间复杂度和空间复杂度(1)

1.算法效率 2.时间复杂度 3.空间复杂度 1.算法效率 如何衡量一个算法的好坏&#xff1f; 比如对于以下斐波那契数列&#xff1a; long long Fib(int N) { if(N < 3) return 1; return Fib(N-1) Fib(N-2)&#xff1b; } 斐波那契数列的递归实现方式非常简洁&#xff0c;但…

SOFA Weekly|SOFA 开源五周年来自社区家人的祝福、社区本周贡献 issue 精选

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展欢迎留言互动&#xff5e;SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&#…

《程序员面试金典(第6版)》面试题 10.05. 稀疏数组搜索(二分法,分治算法入门题目,C++)

题目描述 稀疏数组搜索。有个排好序的字符串数组&#xff0c;其中散布着一些空字符串&#xff0c;编写一种方法&#xff0c;找出给定字符串的位置。 示例1: 输入: words [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s “t…

2023有哪些便宜好用的蓝牙耳机?性价比最高的无线耳机排行

不管入手什么东西&#xff0c;性价比永远能成为人们入手的最重要的参考要素之一。那么&#xff0c;在蓝牙耳机市场中&#xff0c;有哪些便宜好用的蓝牙耳机&#xff1f;针对这个问题&#xff0c;我来给大家推荐几款性价比最高的无线耳机&#xff0c;一起来看看吧。 一、南卡小音…

采购系统是如何管理供应商的?

随着数字化的推进&#xff0c;企业面临着越来越多的供应商管理问题。企业采购数字化转型已经成为大势所趋&#xff0c;对于采购数字化转型而言&#xff0c;供应商管理是重要一环。 供应商准入管理 在供应商准入阶段&#xff0c;企业需要从供应商资质、财务能力、信誉能力、管理…

vite 安装腾讯im组件TUIKit问题记录

按照vue3ts要求安装依赖包 即时通信 IM Web & H5-含 UI 集成方案&#xff08;荐&#xff09;-文档中心-腾讯云 (tencent.com) 这个版本的文档采用全局安装sass&#xff1a; npm install -g sass sass-loader10.1.1 实际安装后遇到无法解析sass的错误提示&#xff0c;使用…

JumpServer堡垒机部署+基本使用

文章目录JumpServer 堡垒机一、理论知识&#xff1a;1、堡垒机与跳板机的区别2、JumpServer4A认证二、实践实验:1、初始化环境准备2、MySQL数据库部署3、Python3.6 程序部署4、Redis数据库部署5、Core组件部署6、Koko组件部署7、Guacamole组件部署1、安装FFmpeg2、安装Guacamol…

socket 及 字节序转换(嵌入式学习)

socket 及 字节序转换socket简介Socket为什么需要Socket&#xff1f;socket类型Socket通信模型字节序主机字节序到网络字节序网络字节序到主机字节序IP地址转换socket简介 1、1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口 2、1986…

SAP MDG —— 使用DIF导入物料主数据 Part2 配置和应用

文章目录关于使用DIF处理物料主数据的相关信息配置定义数据传输对象类型 Object Types文件源和存档目录Web Dynpro 应用导入选项MDG_BS_FILE_IMPORT 的选择项本章小结关于使用DIF处理物料主数据的相关信息 配置 定义数据传输对象类型 Object Types 路径&#xff1a; MDGIMG-…

读懂AUTOSAR :DiagnosticLogAndTrace DLT(四)-- API解析

一、周期调用的函数&#xff1a;Dlt_TxFunction 根据参数DltGeneralTrafficShapingSupport&#xff0c;决定如何去发送DLT消息。如果为TRUE&#xff0c;那需要参考参数DltLogChannelTrafficShapingBandwidth为每个Log通道设置发送带宽&#xff1b;如果为FALSE&#xff0c;那么…

《LKD3粗读笔记》(9)内核同步介绍

文章目录1、临界区和竞争条件2、 加锁3、死锁4、争用和扩展性实现内核同步的意义是什么&#xff1f; 目前内核支持SMP&#xff0c;所以共享资源一定要防止并发访问&#xff0c;如果多个执行线程同时访问和操作数据&#xff0c;就可能发生各线程之间相互覆盖共享数据情况&#x…

ABeam News | 松下家电(中国)生产销售一体化SAP S/4HANA项目正式启动

近日&#xff0c;由德硕管理咨询&#xff08;上海&#xff09;有限公司参与实施的松下家电&#xff08;中国&#xff09;生产销售一体化SAP S/4HANA项目正式上线&#xff0c;松下集团代表董事全球副总裁本间哲朗先生及ABeam大中华区董事长兼总经理中野洋辅先生出席了项目启动会…