如何恢复包含.wt文件的MongoDB归档tar文件
你遇到的问题根源在于:.wt是MongoDB WiredTiger存储引擎的底层数据文件,不能用mongorestore(用于恢复mongodump生成的逻辑备份),且直接覆盖运行中实例的data目录会因文件锁定、元数据缺失失败。以下是正确恢复流程:
前提条件
- 确保你的MongoDB 5.0版本与备份生成时的MongoDB版本一致(WiredTiger文件格式跨大版本不兼容)
- 已备份好当前MongoDB的data目录(避免数据丢失)
具体步骤
彻底停止MongoDB服务
在管理员权限的Windows命令提示符中执行:net stop MongoDB也可通过「服务」管理器找到MongoDB服务并停止,确保实例完全退出,无文件锁定。
清空目标data目录
将C:\Program Files\MongoDB\Server\5.0\data下的所有文件/文件夹移到你之前的备份位置,确保目标目录为空。完整解压归档到data目录
将restore-63bbdc996664dc2524cce24d.tar解压后的所有文件(包括所有.wt文件,以及WiredTiger、WiredTiger.turtle、WiredTiger.lock、mongod.lock等元数据文件)全部复制到data目录下。注意:如果归档中缺少这些元数据文件,说明该备份不完整,无法恢复——底层文件备份必须包含整个data目录的所有内容,仅集合.wt文件无法单独恢复。
验证文件权限
右键点击data目录 → 「属性」→ 「安全」,确保MongoDB服务的运行账户(通常是Local System或你指定的账户)拥有该目录及所有文件的读写权限。启动MongoDB服务并验证
执行命令启动服务:net start MongoDB启动后用
mongosh连接实例,执行show dbs、use <数据库名>、show collections、db.<集合名>.find()等命令验证数据是否恢复成功。
常见问题排查
- 如果启动服务失败,查看MongoDB日志(默认在
C:\Program Files\MongoDB\Server\5.0\log目录),日志会明确提示错误原因(如权限不足、元数据缺失、版本不兼容)。 - 若备份时MongoDB实例处于运行状态,备份的.wt文件可能损坏,这种情况下无法恢复,需使用逻辑备份(mongodump/mongorestore)或正确的物理备份方式(停止实例后备份data目录)。
内容的提问来源于stack exchange,提问作者Rustam Ansari

