首页/数据/NoSQL 速查/mongorestore 恢复与重命名
MongoDB99 条

mongorestore 恢复与重命名

mongorestore 还原 mongodump 产物:支持 --drop 覆盖已有集合、--oplogReplay 回放增量,以及 nsFrom/nsTo 迁移到新库名。

NoSQL 速查数据更新于 2026-10-13

mongorestore 做什么

mongorestore 是 mongodump 的配套工具,把 BSON 备份还原成集合。除了常规恢复,它还支持 --drop 覆盖已有集合、--oplogReplay 回放增量,以及用 nsFrom 与 nsTo 把数据迁移到新的库名,是跨环境搬运数据的主要手段。

基本信息

语法mongorestore --uri="..." <备份目录>
常用选项--gzip、--drop、--oplogReplay、--nsFrom 与 --nsTo
覆盖语义--drop 会先删除目标集合再恢复
演练建议先恢复到临时库名验证完整性
权限要求目标库需要有写入与建集合权限

典型使用场景

  • 故障恢复:把备份还原回原库
  • 跨环境搬运:把生产备份恢复到测试或预发环境
  • 只恢复单张集合,避免影响其他数据
  • 用 nsFrom 与 nsTo 改名恢复到临时库做验证
  • 回放 oplog 增量,把数据推进到更接近故障时刻的状态

常用恢复命令

常用恢复命令
# 常规恢复:覆盖已有集合
mongorestore --uri="mongodb://app:secret@m1:27017/app?authSource=app" --gzip --drop /backup/mongo/2026-10-13

# 改名恢复到另一个库,不影响原数据
mongorestore --uri="mongodb://ops:secret@m1:27017" \
  --nsFrom="app.orders" --nsTo="staging.orders" /backup/mongo/2026-10-13

# 只恢复指定的集合
mongorestore --uri="mongodb://app:secret@m1:27017/app" \
  --nsInclude="app.orders" /backup/mongo/2026-10-13

# 回放 oplog 增量,把数据推进到更近的时间点
mongorestore --uri="mongodb://app:secret@m1:27017" --oplogReplay /backup/mongo/pit-2026-10-13

常用选项与取舍

选项作用注意
--drop恢复前先删除目标集合先演练确认备份可用再执行
--nsFrom / --nsTo把数据恢复到新的命名空间源库名写错可能静默产生空库
--nsInclude只恢复匹配的集合批量恢复时的选择手段
--oplogReplay回放备份中的 oplog需要备份时带了 --oplog
--gzip读取压缩过的备份文件与 mongodump 的压缩选项配对使用
--drop 会先删除目标集合再恢复,一旦备份本身不完整就无处可退;执行前先在临时库演练一次,确认恢复后的文档数与业务预期一致。
恢复不会自带业务账号与角色配置,跨环境恢复后要单独核对用户权限,否则会出现数据齐全却没人能访问的情况。

易错点

  • 恢复不会自动重建业务用户的权限配置,跨环境恢复后必须核对账号与角色是否齐全
  • 不带 --drop 恢复时与已有文档 _id 冲突的记录会被跳过,最终文档数少于预期却不报错
  • nsFrom 里的库名写错时恢复过程不会明确报错,可能产生一个空库,验证步骤要用实际条数确认
  • 把生产备份直接以 --drop 恢复到生产同名库,一旦备份时间点不对就没有回退余地,正确做法是先恢复到临时库校验

数据来源与参考

  • MongoDB Manual: mongorestore
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌