MongoDB服务1053错误、1067错误处理

起因

本人的MongoDB服务在windows服务器运行,且一直有读写的操作。因为服务器突然断电导致出错,再次重启服务器后无法正常运行MongoDB服务。

查阅了网上的众多资料后觉得实在很碎片化,于是记录下自己遇到的问题和解决成功的办法,如果你同样遇到了意外断开MongoDB服务(尤其是有读写操作运行的时候),那么极有可能遇到这两个错误,希望对你有用。

解决问题1:无法启动MongoDB服务

使用命令行工具或者windows服务启动MongoDB遇到如下报错,无法启动:

这个错误的解决办法很简单:删除该服务并重新创建一个服务。 MongoDB服务相当于注册表的一条命令,并不影响本地的数据,可以随便进行删除和重新创建。

  1. 删除原有的MongoDB服务
cmd 复制代码
 sc.exe delete MongoDB
  1. 创建新的MongoDB服务 这个方式有多种,一般分为两种创建的方式:
  • 一种直接命令输入指定数据库的存储路径 dbpath(可以有本地数据,不会影响) 和日志的路径logpath
  • 另一种则是使用config文件(位于MongoDB安装目录的bin目录下的mongod.cfg文件,一般位于C:\Program Files\MongoDB\Server\5.0\bin>),在config文件里面写入配置如数据库存储路径和日志,以及是否开启安全验证等,这样就可以避免多次直接在命令行中输入路径

为了方便使用,这里我们编辑一个简单的cfg文件(也可以编辑原本的mongod.cfg),在其中写入路径配置

cfg 复制代码
##数据文件
dbpath=E:\MongoDB\data

##日志文件
logpath=E:\MongoDB\log\mongo.log

然后在当前的bin目录下运行以下命令,表示按照config创建一个MongoDB服务。

cmd 复制代码
 mongod.exe --config "C:\Program Files\MongoDB\Server\5.0\bin\mongod.cfg" --install --serviceName "MongoDB" --serviceDisplayName "MongoDB"

创建成功是没有返回结果的,此时可以通过任务管理器-服务-打开服务-MongoDB)看到在启动的状态。

  1. 尝试启动MongoDB 这里可以可以尝试启动一下,如果直接可以启动说明数据库没有数据文件损坏。如果没有什么数据文件,推荐可以直接在新的文件夹下存储数据,也就是将dbpath路径置为新的文件夹。
cmd 复制代码
net start MongoDB

解决问题2: 进程意外错误

这个问题有多个原因,网上的处理方式一般是不针对数据受损的情况的,如果数据不受损,那么可以直接将dbpath路径下的mongod.lock文件删除(锁文件,不影响实际数据),然后再次使用net start命令启动,如果还是不行那么考虑数据受损的情况,那就使用repair命令修复。

使用repair命令,扫描所有的本地数据修复(耗时长)

(使用前删除lock文件)

该命令是MongoDB专门应对数据文件受损的一种修复机制,原理是删除所有搜索的索引和数据文档。所以最好在运行该命令前对数据文件进行备份!

直接在MongoDB的bin目录下运行以下命令:

cmd 复制代码
mongod.exe --dbpath E:\MongoDB\data --repair

该命令会对dbpath中的所有的数据文件进行扫描、检查、索引的重构。如果数据量大的话,时间耗费也会很久。参考本人千万级别的数据文档,运行了近一天一夜才结束。

在结束后会详细报告修复的集合。

最后运行执行启动MongoDB,这次一般都可以顺利进行执行。

cmd 复制代码
net start MongoDB

最后一定不要随便给正在读写的MongoDB数据库意外断开!!

相关推荐
杨云龙UP20 小时前
Docker 部署 MongoDB 6.0 数据库每日自动备份实践:本地 + 异地保留 7 天_20260429
linux·运维·数据库·mongodb·docker·容器·centos
稳联技术老娜1 天前
Profinet转EtherCAT网关通讯架构及EtherCAT超距故障解决原理
mongodb
别来无恙blwy2 天前
windows MongoDB升级-自动升级脚本-自动检测升级到任意版本
数据库·windows·mongodb
snow@li2 天前
数据库-MongoDB:常用语法 / MongoDB 核心知识技能梳理
数据库·mongodb
刘晨鑫16 天前
MongoDB数据库应用
数据库·mongodb
爬山算法7 天前
MongoDB(92)什么是变更流(Change Streams)?
数据库·mongodb
小冯不疯7 天前
旺店通与金蝶云星空入库单管理对接方案
mongodb
MongoDB 数据平台7 天前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
忍冬行者7 天前
MongoDB 三节点副本集离线部署运维手册
运维·数据库·mongodb
卢傢蕊8 天前
MongoDB
数据库·mongodb