You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遭遇MongoServerSelectionError连接失败,重启mongod后数据丢失求助

解决MongoDB重启后集合为空但数据文件夹仍存在的问题

看起来你遇到的是WiredTiger存储引擎恢复异常导致的“假丢失”问题——数据其实还在磁盘上,只是MongoDB启动时没有正确加载它们。结合你提供的日志,关键线索是这两行:

2020-06-29T15:40:37.918+0100 I STORAGE [initandlisten] WiredTiger message [1593441637:918201][14532:140731272224336], txn-recover: Set global recovery timestamp: 0
2020-06-29T15:40:37.939+0100 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)

这说明WiredTiger在恢复时回滚到了初始时间戳(相当于空数据库状态),但你的数据文件(.wt格式)还在C:\data\db\目录里,所以文件夹大小还是3GB。下面是一步步的修复方案:

第一步:紧急备份数据目录

先别做任何操作,先备份! 把整个C:\data\db\目录复制到另一个安全的位置(比如D盘的MongoBackup文件夹)。这是防止后续操作失误导致真·数据丢失的关键。

第二步:彻底停止MongoDB进程

打开Windows任务管理器,找到所有名为mongod.exe的进程,右键选择“结束任务”,确保MongoDB完全停止运行。

第三步:跳过日志恢复启动MongoDB

打开命令提示符(CMD),导航到MongoDB的bin目录(比如C:\Program Files\MongoDB\Server\4.0\bin),运行以下命令:

mongod --dbpath C:\data\db\ --nojournal

这个命令会让MongoDB跳过损坏的journal日志,直接加载磁盘上的原始数据文件。启动完成后,用MongoDB Shell或者你的Node.js代码连接数据库,看看集合是否恢复了。

第四步:如果跳过日志无效,尝试修复数据库

如果上面的方法没效果,先关闭mongod,再运行修复命令:

mongod --dbpath C:\data\db\ --repair

⚠️ 注意:--repair会重建数据的索引和结构,可能会丢失部分未提交的临时数据,但能修复大部分文件损坏问题。修复完成后,正常启动MongoDB:

mongod --dbpath C:\data\db\

第五步:验证数据并预防未来问题

启动成功后,检查你的集合和数据是否恢复。如果一切正常,记得:

  • 以后关闭MongoDB时,用db.shutdownServer()命令(在MongoDB Shell中),不要直接杀进程或断电;
  • 可以考虑开启MongoDB的访问控制(添加用户名密码),避免未授权操作;
  • 定期备份数据目录,或者使用MongoDB的备份工具(比如mongodump)。

内容的提问来源于stack exchange,提问作者kai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:57:30