mongodump 是什么
mongodump / mongorestore 是 MongoDB 官方自带的逻辑备份工具对:导出 BSON 数据与元数据,可用 --gzip 压缩、用 --archive 生成单文件便于搬运,恢复时支持 --drop 覆盖同名集合与按命名空间过滤。它适合中小数据量与需要按库表挑着恢复的场景,超大数据量下应配合 --oplog 或改用文件系统/云快照方案。
基本信息
| 适用平台 | MongoDB 4.x 及以上(随 MongoDB Database Tools 独立发布) |
|---|---|
| 产物 | BSON 数据文件 + 元数据 JSON;--archive 打包成单个文件 |
| 过滤选项 | --db、--collection、--nsInclude 按范围导出 |
| 一致性 | 副本集可用 --oplog 捕获导出期间的变更,得到更接近单一时点的副本 |
| 分片集群 | 备份前先停均衡器(sh.stopBalancer),完成后恢复均衡 |
典型使用场景
- 按库或按集合迁移:调整分片键或合并集群时只搬指定数据
- 误删集合恢复:从最近的备份里只恢复那一个集合,不影响其他库
- 跨版本升级:逻辑导出在目标版本重新导入,绕开存储格式差异
- 开发测试取数:从生产导出脱敏子集导入测试环境
- 小规模集群的日常备份:配置简单,配合定时任务即可落地
备份与恢复
备份与恢复
# 全实例导出为压缩单文件,便于流转与归档
mongodump --uri="mongodb://backup@127.0.0.1:27017" \
--gzip --archive=/backup/mongo-$(date +%F).archive
# 副本集加 --oplog:记录导出期间的变更,提高一致性
mongodump --uri="mongodb://backup@127.0.0.1:27017" --oplog \
--gzip --archive=/backup/mongo-oplog.archive
# 只导出指定库的指定集合
mongodump --uri="mongodb://backup@127.0.0.1:27017" --db=appdb \
--collection=orders --gzip --out=/backup/orders
# 恢复:--drop 会先删除同名集合再导入
mongorestore --uri="mongodb://restore@127.0.0.1:27017" \
--gzip --archive=/backup/mongo-2026-10-12.archive --drop常用选项读法
| 选项 | 作用 | 注意点 |
|---|---|---|
| --archive | 把整个导出打包成单个文件 | 便于搬运,但不能按文件粒度挑内容,需靠过滤参数 |
| --gzip | 压缩数据文件,显著减小体积 | 压缩耗 CPU,导出窗口会略变长 |
| --oplog | 副本集下记录导出期间变更,用于得到一致时点 | 需要 oplog 覆盖整个导出窗口,否则会失败 |
| --drop | 恢复前删除同名集合 | 指向生产库等同于覆盖数据,必须先确认目标环境 |
| --nsInclude | 按命名空间过滤导出范围 | 模式写法需与库集合命名一致 |
分片集群备份前先停均衡器(sh.stopBalancer),完成后再启动,避免备份过程中块迁移造成各分片数据分布不一致。
mongodump 是逻辑工具且默认单线程,数据量大时导出窗口很长,期间新增数据不在副本里;有严格 RPO 要求的集群应改用文件系统或云快照,并配合 oplog 补齐。