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 会先删除目标集合再恢复,一旦备份本身不完整就无处可退;执行前先在临时库演练一次,确认恢复后的文档数与业务预期一致。
恢复不会自带业务账号与角色配置,跨环境恢复后要单独核对用户权限,否则会出现数据齐全却没人能访问的情况。