数据库数据恢复——MongoDB数据库报错“错误1067”的数据恢复案例

MongoDB数据库介绍:
MongoDB数据库是文档数据存储库,将文档存储在集合之中,不是像MySQL一样的关系型数据库。
MongoDB数据库是开源数据库,同时提供具有附加功能的商业版本。
MongoDB数据库中的数据是以键值对(key-value pairs)的形式显示的,因此在模式设计上数据库受到的约束少,非常适合具有快速增长或其他变化需求的数据。
MongoDB提供了预定义的结构,用户可以按需采用其结构:

每个MongoDB数据库都包含以“顺次存放”的方式填充的文档集合,这些文档本身包含了各种字段和信息类型。
MongoDB数据库的安全性特征包括:基于角色的访问控制、身份验证、授权和审核等,可以实施安全传输层(TLS)和SSL协议的加密。
作为文档数据库,MongoDB数据库不限制用户存储数据的体量和类型,适合大数据的应用环境。得益于MongoDB的水平可扩展能力以及与云服务的敏捷性结合能力,MongoDB不但能够减少开发者的工作量,简化业务与项目的扩展流程,还能够提供高可用性和数据的快速恢复。
MongoDB数据库在数据的可靠性、一致性、安全性等方面不如MySQL。

MongoDB数据库数据恢复案例:
MongoDB数据库故障:

出于业务变化的需求,某公司一台服务器上的MongoDB数据库需要迁移数据,迁移完成后启动MongoDB数据库提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)。错误1067:进程意外终止。”

北亚企安数据恢复工程师通过和用户方的沟通以及对MongoDB数据库环境&底层数据的检查,发现该MongoDB数据库在迁移数据的过程中丢失了_mdb_catalog.wt文件,导致了数据库启动报错。

MongoDB数据库数据恢复过程:
1、将MongoDB数据库所涉及到的磁盘以只读方式做镜像备份,后续的数据分析和数据恢复操作都基于镜像文件进行,避免对原始数据造成二次破坏。
2、基于镜像文件多次扫描底层数据发现丢失的_mdb_catalog.wt文件已经被覆盖。
3、调整MongoDB数据库数据恢复策略。由于该MongoDB数据库是基于WiredTiger存储引擎的,北亚企安数据恢复工程师在Windows环境下编译出可执行的wt工具。

4、借助编译出的wt工具对MongoDB数据库集合文件内所有数据清洗回写,读取数据结果并写入到文件中。
5、创建一个全新的MongoDB数据库,创建相应数据量的集合,将文件逐一写入集合中,查询数据集并重建索引信息。
6、通过查询集合中的记录来确定记录类型并重建集合索引,集合恢复完成后已经可以正常查看其中数据。

7、协助用户方将全部集合进行索引重建之后,由用户方工程师对MongoDB数据库进行查询验证,经过多方验证确认恢复的数据完整有效。本次数据恢复工作完成。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据仓库工具箱-零售业务

文章目录 一、维度模型设计的4步过程1.1 第一步:选择业务过程1.2 第二步:声明粒度1.3 第三步:确定维度1.4 第四步:确定事实 二、零售业务案例研究2.1 第一步:选择业务过程2.2 第二步:声明粒度2.3 第三步&am…

移动端性能专项测试之内存 - 进阶篇

在 Android 系统中内存作为重要的资源,一直是开发及测试关注的重点,内存不足或者内存资源滥用都会导致严重的问题。本篇文章将会从底层出发给大家介绍 OOM(Out Of Memory)和 LMK(Low Memory Killer)等内存相…

魔法导航菜单

效果展示 CSS 知识点 使用 box-shadow 属性实现不定项曲面 整体页面布局 <div class"navigation"><ul><li class"active"><a href"#"><span class"icon"><ion-icon name"home-outline"…

Linux开发工具的使用(vim、gcc/g++ 、make/makefile)

文章目录 一 &#xff1a;vim1:vim基本概念2:vim的常用三种模式3:vim三种模式的相互转换4:vim命令模式下的命令集- 移动光标-删除文字-剪切/删除-复制-替换-撤销和恢复-跳转至指定行 5:vim底行模式下的命令集 二:gcc/g1:gcc/g的作用2:gcc/g的语法3:预处理4:编译5:汇编6:链接7:函…

044_第三代软件开发-保存PDF

第三代软件开发-保存PDF 文章目录 第三代软件开发-保存PDF项目介绍保存PDF头文件源文件使用 关键字&#xff1a; Qt、 Qml、 pdf、 painter、 打印 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff…

swift语言用哪种库适合做爬虫?

目录 1、Alamofire 2、URLSession 3、YepHttp 4、Kickbox 5、Vapor 注意事项 总结 在Swift语言中&#xff0c;可以使用第三方库来帮助进行网络爬虫的开发。以下是几个适合Swift语言使用的爬虫库&#xff0c;以及相应的代码示例&#xff1a; 1、Alamofire Alamofire是Sw…

RK3568平台开发系列讲解(音视频篇)RTMP 推流

🚀返回专栏总目录 文章目录 一、RTMP 的工作原理二、RTMP 流媒体服务框架2.1、Nginx 流媒体服务器2.2、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、 WebRTC流媒体传输协议等。 R…

C语言之pthread_once实例总结(八十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

从TCP到Socket,彻底理解网络编程是怎么回事

进行程序开发的同学&#xff0c;无论Web前端开发、Web后端开发&#xff0c;还是搜索引擎和大数据&#xff0c;几乎所有的开发领域都会涉及到网络编程。比如我们进行Web服务端开发&#xff0c;除了Web协议本身依赖网络外&#xff0c;通常还需要连接数据库&#xff0c;而数据库连…

Java中对象的比较:复写基类的equals+Comparble接口类的比较+比较器比较+PriorityQueue的比较+源码分析

文章目录 Java中对象的比较一、元素的比较二、对象的比较1.复写基类的equals2.基于Comparble接口类的比较3.基于比较器比较三种方法的对比 4. 集合框架中PriorityQueue的比较方式 Java中对象的比较 一、元素的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 二、…

【Python3】【力扣题】232. 用栈实现队列

【力扣题】题目描述&#xff1a; 栈&#xff1a;线性集合。后进先出。 队列&#xff1a;线性集合。先进先出。 【Python3】代码&#xff1a; 解题思路&#xff1a;两个栈&#xff0c;一个入队的栈&#xff0c;一个出队的栈。出栈时&#xff0c;若出队的栈为空&#xff0c;才将…

RabbitMQ 死信队列

在MQ中&#xff0c;当消息成为死信&#xff08;Dead message&#xff09;后&#xff0c;消息中间件可以将其从当前队列发送到另一个队列中&#xff0c;这个队列就是死信队列。而在RabbitMQ中&#xff0c;由于有交换机的概念&#xff0c;实际是将死信发送给了死信交换机&#xf…