MongoDB BSON备份文件完整导入恢复全流程(本机专属环境版)
本机环境固定路径:
- MongoDB服务端目录:
D:\software\mongo\8.0\bin - Database Tools工具集(mongorestore):
C:\Users\25973\AppData\Local\mongodb\mongodb-database-tools-windows-x86_64\bin - BSON备份文件目录:
C:\Users\25973\Downloads\上周\mtsp.20251119 - 目标恢复数据库名:
mtsp
一、前置知识说明
.bson是mongodump导出的Mongo原生二进制存储文件,不能使用mongoimport导入 ,必须依靠mongorestore工具执行整库恢复。- MongoDB 8.0及以上服务端压缩包不自带备份工具,需单独下载
Database Tools工具包,本机已解压至AppData目录。 - 硬性前置条件:MongoDB数据库服务必须提前启动,否则无法写入BSON数据,会报端口连接拒绝。
二、步骤1:启动MongoDB数据库服务(2种方式,推荐Windows系统服务)
方式A:系统服务启动(根治127.0.0.1连接失败问题)
- 快捷键
Win+R,输入service.msc回车打开系统服务列表 - 在列表中找到
MongoDB Server,右键选择【启动】;右键属性将启动类型改为自动,实现开机自启 - 校验服务监听27017端口(新开CMD窗口执行)
cmd
cd /d D:\software\mongo\8.0\bin
mongosh
正常进入交互命令行、无connection refused报错,代表本地127.0.0.1:27017数据库服务就绪。
方式B:CMD临时手动启动(仅临时调试,关闭窗口服务直接停止)
cmd
cd /d D:\software\mongo\8.0\bin
mongod --dbpath D:\software\mongo\8.0\data --logpath D:\software\mongo\8.0\log\mongod.log --port 27017
注意:该CMD窗口必须全程保持打开,关闭即停止Mongo服务。
三、步骤2:确认BSON备份目录标准结构
进入 C:\Users\25973\Downloads\上周\mtsp.20251119,目录结构如下:
plaintext
mtsp.20251119
├─ 集合1.bson
├─ 集合1.metadata.json
├─ 集合2.bson
├─ 集合2.metadata.json
└─ ...
整个文件夹为完整单库备份,不要单独导入单个.bson文件,直接恢复整个根文件夹效率最高。
四、步骤3:切换Tools目录,执行超大库恢复命令
- 新开独立CMD窗口,切换至工具集bin目录
cmd
cd /d "C:\Users\25973\AppData\Local\mongodb\mongodb-database-tools-windows-x86_64\bin"
- 273GB大库优化恢复命令(并发提速,覆盖旧数据)
cmd
mongorestore --drop --numParallelCollections 8 --numInsertionWorkersPerCollection 8 -d mtsp "C:\Users\25973\Downloads\上周\mtsp.20251119"
参数说明表
| 参数 | 功能作用 |
|---|---|
--drop |
导入前清空目标mtsp库全部集合,规避主键重复冲突报错 |
--numParallelCollections 8 |
同时并行恢复8个集合,利用多核CPU大幅提速 |
--numInsertionWorkersPerCollection 8 |
单个集合开启8条数据并发写入,缩短超大备份耗时 |
-d mtsp |
指定数据恢复到本地名为mtsp的数据库 |
| 末尾引号路径 | 存放全部BSON文件的备份根目录 |
五、执行过程关键注意事项
- 磁盘空间要求 :Mongo数据目录
D:\software\mongo\8.0\data所在磁盘剩余空间 ≥320GB,防止写入中途磁盘爆满中断恢复。 - 耗时参考(273GB备份)
- 固态硬盘:2~6小时
- 机械硬盘:6~15小时
- 运行期间两个CMD窗口均不可关闭:
- MongoDB服务运行窗口(mongod)
- 执行mongorestore恢复命令的窗口
六、步骤4:校验BSON数据是否完整导入成功
- 新开CMD,进入Mongo服务端目录连接数据库
cmd
cd /d D:\software\mongo\8.0\bin
mongosh
- 切换目标库,查看全部集合
shell
use mtsp
db.getCollectionNames()
- 抽样校验单集合数据量(替换为实际集合名称)
shell
db.你的集合名.countDocuments()
正常打印集合列表、返回数据总条数,代表BSON文件全部导入完成。
七、常见报错与踩坑解决方案
报错1:'mongorestore' 不是内部或外部命令
- 原因:MongoDB服务端bin目录不自带Tools工具,未切换至AppData下的工具目录执行命令
- 解决:严格执行步骤3第一条cd切换命令,进入tools/bin目录后再运行mongorestore
报错2:connect refused 无法连接 127.0.0.1:27017
- 原因:
service.msc中MongoDB Server服务未启动 - 解决:执行步骤1方式A,启动系统Mongo服务后,重新执行恢复命令
报错3:duplicate key error 主键冲突
- 原因:目标mtsp库已存在同名数据,未添加
--drop清空参数 - 解决:命令追加
--drop参数,导入前自动清理库内旧数据
报错4:磁盘空间不足,写入中断
- 原因:Mongo数据盘剩余空间小于备份文件体积
- 解决:清理磁盘文件,保证至少预留50GB以上空闲空间再执行恢复
八、拓展:单独导入单个BSON文件(不推荐,特殊场景使用)
cmd
cd /d "C:\Users\25973\AppData\Local\mongodb\mongodb-database-tools-windows-x86_64\bin"
mongorestore -d mtsp -c user --drop "C:\Users\25973\Downloads\上周\mtsp.20251119\user.bson"
- 参数
-c user:指定将该bson导入到mtsp库下的user集合,可按需修改集合名