MongoDB bson 备份文件完整导入恢复全流程(个人实操复盘版)

MongoDB BSON备份文件完整导入恢复全流程(本机专属环境版)

本机环境固定路径:

  1. MongoDB服务端目录:D:\software\mongo\8.0\bin
  2. Database Tools工具集(mongorestore):C:\Users\25973\AppData\Local\mongodb\mongodb-database-tools-windows-x86_64\bin
  3. BSON备份文件目录:C:\Users\25973\Downloads\上周\mtsp.20251119
  4. 目标恢复数据库名:mtsp

一、前置知识说明

  1. .bsonmongodump 导出的Mongo原生二进制存储文件,不能使用 mongoimport 导入 ,必须依靠 mongorestore 工具执行整库恢复。
  2. MongoDB 8.0及以上服务端压缩包不自带备份工具,需单独下载Database Tools工具包,本机已解压至AppData目录。
  3. 硬性前置条件:MongoDB数据库服务必须提前启动,否则无法写入BSON数据,会报端口连接拒绝。

二、步骤1:启动MongoDB数据库服务(2种方式,推荐Windows系统服务)

方式A:系统服务启动(根治127.0.0.1连接失败问题)

  1. 快捷键 Win+R,输入 service.msc 回车打开系统服务列表
  2. 在列表中找到 MongoDB Server,右键选择【启动】;右键属性将启动类型改为自动,实现开机自启
  3. 校验服务监听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目录,执行超大库恢复命令

  1. 新开独立CMD窗口,切换至工具集bin目录
cmd 复制代码
cd /d "C:\Users\25973\AppData\Local\mongodb\mongodb-database-tools-windows-x86_64\bin"
  1. 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文件的备份根目录

五、执行过程关键注意事项

  1. 磁盘空间要求 :Mongo数据目录 D:\software\mongo\8.0\data 所在磁盘剩余空间 ≥320GB,防止写入中途磁盘爆满中断恢复。
  2. 耗时参考(273GB备份)
    • 固态硬盘:2~6小时
    • 机械硬盘:6~15小时
  3. 运行期间两个CMD窗口均不可关闭:
    • MongoDB服务运行窗口(mongod)
    • 执行mongorestore恢复命令的窗口

六、步骤4:校验BSON数据是否完整导入成功

  1. 新开CMD,进入Mongo服务端目录连接数据库
cmd 复制代码
cd /d D:\software\mongo\8.0\bin
mongosh
  1. 切换目标库,查看全部集合
shell 复制代码
use mtsp
db.getCollectionNames()
  1. 抽样校验单集合数据量(替换为实际集合名称)
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集合,可按需修改集合名
相关推荐
数聚天成DeepSData6 小时前
遥感农业数据集下载全攻略
数据库·人工智能·深度学习·机器学习·自然语言处理·数据挖掘
一勺菠萝丶6 小时前
生产环境平滑升级实战-Nginx维护页数据库迁移与安全回滚
数据库·nginx·安全
心静自然凉8006 小时前
MySQL主从同步配置(一主一从)
数据库
haidy ahmed7 小时前
企微复杂审批流反序列化:动态表单解析引擎与EAV存储模型
数据库·人工智能·自动化·企业微信
Lihua奏7 小时前
MVCC:为什么多人同时读写数据,数据库还能不乱
数据库
952367 小时前
Redis - 应用
数据库·redis·分布式·缓存
青山木7 小时前
一把 Redis 分布式锁,踩透四个坑:锁争抢、僵尸锁、锁过期、锁丢失
java·数据库·redis·后端
数智化管理手记7 小时前
智能财务如何减少财务加班?智能财务落地需要哪些工具支撑?
大数据·网络·数据库·数据挖掘·精益工程
IvorySQL8 小时前
深度拆解 IvorySQL 去 O 核心解决方案
数据库·人工智能·postgresql
吴声子夜歌8 小时前
Redis 3.x——客户端
数据库·redis