数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例

news2025/1/15 6:44:39

MongoDB数据库数据恢复环境:
一台Windows Server操作系统的虚拟机,虚拟机上部署有MongoDB数据库。

MongoDB数据库故障&检测:
在未关闭MongoDB服务的情况下,工作人员将MongoDB数据库文件拷贝到其他分区,然后将原数据库文件所在分区进行了格式化的操作,格式化完成后将数据库文件拷回原分区,重新启动MongoDB服务,发现MongoDB服务无法启动并报错。

在MongoDB服务没有关闭的情况下,对MongoDB数据库文件进行拷贝的操作会导致mongod.lock文件以及WiredTiger.lock文件拷贝出现错误。这种情况下只需要在拷贝出来的文件中删除这两个文件,然后再次启动MongoDB服务,由MongoDB自行重新生成即可。
北亚企安数据恢复工程师检测拷贝出的数据库文件后发现_mdb_catalog.wt文件丢失。
_mdb_catalog.wt文件存储了MongoDB中所有集合的元数据,数据库启动时需要从这个文件中读取相关的信息。_mdb_catalog.wt文件丢失导致数据库无法获取数据库中集合对应的WT table名字、集合的创建选项、集合的索引信息等元数据,所以数据库无法启动。

MongoDB数据库数据恢复过程:
1、将MongoDB数据库涉及到的虚拟机进行镜像备份,后续的数据分析和数据恢复都基于镜像文件进行,避免对原始数据造成二次破坏。
2、尝试从文件系统的角度恢复_mdb_catalog.wt文件。使用工具对数据库所在分区进行扫描,扫描结果中并没有找到_mdb_catalog.wt文件的信息。根据MongoDB数据库中数据文件的特征值再次扫描数据库分区,也没有发现_mdb_catalog.wt相关的数据区域。由此可以判断,_mdb_catalog.wt文件已经被彻底覆盖破坏掉,无法恢复。只能从数据库的层面恢复数据。
3、本案例部署的MongoDB数据库是基于WiredTiger存储引擎的数据库系统,可以使用WiredTiger实用工具包提取数据库中的数据。
a、下载WiredTiger实用工具包,在windows环境下编译出可执行的wt工具。

b、完成wt工具的编译后,使用编译出来的wt工具对数据库的集合文件中的数据进行清洗回写。完成清洗回写操作后,直接读取文件中的数据并写入到一个.dump文件中。这时数据库的各个集合文件中的全部可用数据都提取出来了。
4、重新创建一个MongoDB数据库,根据提取出来的集合文件创建对应数量的空集合,然后使用编译好的wt工具将提取出来的.dump文件一一写入到新创建的空集合中。这个时候可以通过查询集合中的数据确认这些集合与元数据库中集合的对应关系。
5、修改集合名称,重建索引信息。由于该MongoDB数据库中存在Gridfs存储的大字段(文件)集合,所以通过查询集合中的记录确定记录类型。确定fs.files和fs.chunks集合的位置后,修改这两个集合名称为xxx.files和xxx.chunks,重建集合索引,Gridfs集合恢复完成,这时可以正常查看到其中数据:

6、协助用户方将全部集合重建索引后,由用户方对数据库整体进行查询验证,经过反复验证后确认数据无误,本次数据恢复工作完成。

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

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

相关文章

【idea】解决idea 执行maven build总下载 Downloading maven-metadata.xml文件

可以看到如下日志中打印了执行的命令行,其中包含 --update-snapshots,是强制更新的意思。 日志内容如下: D:\env\jdk1.8.0_261\bin\java.exe --update-snapshots -s D:\env\apache-maven-3.8.6\conf\settings.xml -Dmaven.repo.localD:\env\…

元素的点击操作

元素的点击操作 .click 语法 // 单击某个元素 .click()// 带参数的单击 .click(options)// 在某个位置点击 .click(position)// 在某个位置点击,且带参数 .click(position, options)// 根据页面坐标点击 .click(x, y)// 根据页面坐标点击,且带参数 .c…

三极管基础知识

三极管 基本概念应用电路 基本概念 三极管 NPN 和PNP 电流方向 PNP是从e 流向 b c NPN是从 b c流向e 应用电路 箭头出发方向的电极比箭头指向方向的电极,高0.7v才导通。 NPN控制下游是否接到地,PNP控制上游的电源能否接过来。

功率放大器在无线收发系统中的作用

功率放大器在无线收发系统中也扮演着至关重要的角色。无线通信是一种通过电磁波传输信息的技术,它具有便捷、灵活、广覆盖等优势,在现代社会得到了广泛应用。而功率放大器则是无线收发系统中的核心组件之一,主要用于增强信号的功率和距离。下…

印刷企业实施WMS仓储管理系统需要哪些硬件设施

随着科技的快速发展,印刷企业的运营模式也正在经历着变革。为了提升效率,降低成本,并实现精细化管理,越来越多的印刷企业开始引入WMS仓储管理系统解决方案。然而,要成功实施这样的系统,必要的硬件设施是不可…

C#语言高阶开发

目录 数据结构 集合 动态数组ArrayList 习题:声明一个Monster类,有一个Attack方法,用一个ArrayList去封装Monster的对象,装10个,遍历monster的list让他们释放攻击方法 哈希表HashTable 创建一个武器类,有一个属性叫做id,每个…

Apache配置文件详解

引言: Apache是一种功能强大的Web服务器软件,通过配置文件可以对其行为进行高度定制。对于初学者来说,理解和正确配置Apache的配置文件是非常重要的。本文将详细解释Apache配置文件的各个方面,并给出一些入门指南,帮助读者快速上手。 1、主配置文件(httpd.conf): 主…

集群路径规划学习(一)之EGO-swarm仿真

代码调试与编译 源代码下载 https://github.com/ZJU-FAST-Lab/ego-planner-swarm/tree/master 按照代码要求配置安装环境 sudo apt-get install libarmadillo-dev 文件对应拷贝与调整 新建工作空间文件夹 XF_EGOworkspace 新建src 在src文件夹下开启终端,输…

(c语言)偶然发现的易错点

1.scanf函数中的占位符是严格调用的&#xff0c;占位符是什么类型就只会读取相应类型。 2.printf函数和参数调用时则会发生截取和扩展来转化为相应类型 &#xff08;1&#xff09;字符型参数以整形输出 #include<stdio.h> int main() {char p a;printf("%d&quo…

一个工具让你明白“万丈高楼平地起”,拒绝重复造轮子!

大家在公司工作当中是不是很多时间装环境很麻烦&#xff0c;一个项目要上线了&#xff0c;开始网上搜了一边又一遍的环境搭建教程&#xff1f;等到下一个项目要上线了&#xff0c;又上网上搜了一边又一遍的环境搭建教程。关键天花乱坠的互联网&#xff0c;找不到很靠谱的呀。有…

【腾讯云云上实验室-向量数据库】腾讯云VectorDB:深度学习场景下的新一代数据存储方案

引言 ​  在深度学习领域的实践中&#xff0c;一般会涉及到向量化处理的数据&#xff0c;如图像、文本、音频等&#xff0c;这些数据的存储和检索对于许多深度学习任务至关重要。传统的关系型数据库和NoSQL数据库在存储和检索这类大规模向量数据时&#xff0c;通常不能满足高…

铸就匠心,打造西部最具权威的行业商会组织

中国商报陕西报道&#xff08;记者 朱清平&#xff09;西安市五金机电商会(以下简称商会)第二届一次会员代表大会暨新任理事、监事就职典礼于11月17日在西安经开洲际酒店召开。 商会于2018年10月成立,在5年的发展中,依托“一带一路”发展的“快车道”,通过新丝路国际工业品数字…

Vatee万腾的数字化探险:Vatee科技创新勾勒新的独特轨迹

在数字化时代的浪潮中&#xff0c;Vatee万腾以其强大的科技创新力量&#xff0c;开启了一场引人瞩目的数字化探险之旅。这不仅是一次技术的探索&#xff0c;更是对未知领域的大胆冒险&#xff0c;为科技的未来勾勒出一条独特的轨迹。 Vatee的数字化探险并非仅仅局限于技术的提升…

Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法

文章目录 一、redis什么是RedisRedis使用场景1、缓存2、数据共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式锁4、全局ID5、计数器6、限流7、位统计 Redis有5中数据类型&#xff1a; SSHLZRedis中一个key的值每天12点过期&#xff…

对比多家互联网医院系统技术代码:数字医疗服务的背后

1. 在线问诊模块 1.1 A医疗系统 A医疗系统采用WebSocket实现实时通信&#xff0c;使用Node.js和Socket.io来建立WebSocket连接&#xff1a; // 服务器端 Node.js 代码 const express require(express); const http require(http); const socketIo require(socket.io);const…

世微 dc-dc降压恒流 LED汽车大灯 单灯 14V5A 68W车灯驱动方案 AP5191

产品描述 AP5191是一款PWM工作模式,高效率、外围简单、外置功率MOS管&#xff0c;适用于4.5-150V输入的高精度降压LED恒流驱动芯片。输出最大功率150W&#xff0c;最大电流6A。AP5191可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5191 工作频率可以…

unityplayer.dll如何安装?unityplayer.dll缺失的解决方法

Unityplayer.dll是Unity引擎所需的一个重要动态链接库&#xff08;DLL&#xff09;文件&#xff0c;负责在运行Unity创建的游戏或应用程序时处理相关的软件逻辑。如果此文件意外丢失&#xff0c;可能会导致错误提示&#xff0c;甚至阻止程序的正常运行。因此&#xff0c;对于许…

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞

思福迪 运维安全管理系统 test_qrcode_b 远程命令执行漏洞 一、漏洞描述二、漏洞影响三、网络测绘四、漏洞复现1.手动复现2.自动化复现3.python源代码 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任…

京东数据分析报告:2023年10月京东平台大家电销售数据汇总分析

10月份&#xff0c;大家电市场的销售数据已经新鲜出炉&#xff0c;大盘销售整体向好。 鲸参谋数据显示&#xff0c;今年10月&#xff0c;京东平台大家电市场的销量为400万&#xff0c;环比增长约10%&#xff1b;销售额将近87亿&#xff0c;环比增长约11%&#xff0c;同比涨幅不…

ResizeObserver观察元素宽度的变化

ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver观察元素宽度的变化 ResizeObserver 构造函数创建一个新的 ResizeObserver 对象&#xff0c;它可以用于监听 Element 内容盒或边框盒或者 SVGElement 边界尺寸的大小。查看详细说明 案例 &l…