如何将MongoDB的.wt备份文件恢复至其他系统?
解决MongoDB .wt文件恢复失败的问题
为啥mongorestore不管用?
.wt是MongoDB使用WiredTiger存储引擎时的底层数据存储文件,属于MongoDB的数据目录本身,根本不是mongorestore能处理的格式——mongorestore是用来恢复mongodump导出的BSON集合和元数据JSON文件的,直接扔一堆.wt文件给它,它当然不知道咋处理,只能挨个跳过。
正确的恢复方法
前置要求
- 目标系统的MongoDB版本必须和原数据库完全一致,主版本、次版本都得对上,比如原库是4.4.12,目标也得装4.4.12,版本不匹配大概率会导致数据加载失败甚至损坏。
- 先停止目标系统上正在运行的MongoDB服务,别在服务运行状态下修改数据目录。
Redhat Linux系统操作步骤
- 确认MongoDB数据目录:默认路径是
/var/lib/mongo,也可以查看/etc/mongod.conf里的storage.dbPath配置项确认。 - 清空默认数据目录的所有文件(先备份原目录内容,避免误删):
sudo rm -rf /var/lib/mongo/* - 将备份文件夹里的所有文件(包括.wt、
mongod.lock、WiredTiger文件夹等)完整复制到数据目录:sudo cp -r /mongoBackupfiles/* /var/lib/mongo/ - 修改数据目录权限,确保MongoDB进程能读写:
sudo chown -R mongod:mongod /var/lib/mongo - 启动MongoDB服务:
sudo systemctl start mongod - 检查服务状态,确认启动成功:
sudo systemctl status mongod
Windows系统操作步骤
- 确认MongoDB数据目录:默认路径是
C:\Program Files\MongoDB\Server\<你的版本号>\data,也可以查看mongod.cfg里的storage.dbPath配置项确认。 - 停止MongoDB服务:打开
services.msc,找到MongoDB服务后点击停止。 - 清空数据目录的所有文件(先备份原目录内容,避免误删)。
- 将备份文件夹里的所有文件(包括.wt、
mongod.lock、WiredTiger文件夹等)完整复制到数据目录。 - 设置数据目录权限:右键点击数据目录→选择「属性」→「安全」,确保MongoDB服务使用的账户(通常是
NETWORK SERVICE)拥有该目录的读写权限。 - 回到服务管理器启动MongoDB服务,检查服务是否正常运行。
额外注意事项
- 复制文件时必须迁移整个备份文件夹的所有内容,不能遗漏任何文件(包括隐藏文件、配置相关文件)。
- 如果启动MongoDB服务失败,查看日志定位问题:
- Linux日志路径:
/var/log/mongodb/mongod.log - Windows日志路径:通常在数据目录下的
mongod.log,或者通过服务属性查看日志路径。
- Linux日志路径:
- 若原数据库启用了认证、副本集等特性,恢复完成后需要重新配置对应参数。
内容的提问来源于stack exchange,提问作者MohoTa
相关产品推荐
相关产品推荐

