mongodump 做什么
mongodump 是 MongoDB 官方自带的逻辑备份工具,把库或集合的内容导出成 BSON 文件,通常与 mongorestore 配对使用。它通过查询接口读数据,对服务端的影响比物理备份方式小,但速度也更慢,适合中小规模数据库以及按库、按集合做选择性备份的场景。
基本信息
| 语法 | mongodump --uri="..." --out=<目录> |
|---|---|
| 常用选项 | --gzip、--archive、--db、--collection、--oplog、--query |
| 产物结构 | <out>/<db>/<collection>.bson 与对应的 metadata.json |
| 一致性 | 复制集上使用 --oplog 取得一致时间点快照 |
| 适用规模 | 中小规模库;超大库应评估文件系统快照等物理方式 |
典型使用场景
- 上线或结构变更前的整库留档
- 只备份某个库或某张集合,做定点备份
- 跨环境搬运数据:备份后在测试环境恢复验证
- 配合 --query 只导出满足业务条件的一部分文档
- 作为快照备份的补充手段,便于按集合找回单条数据
常用备份命令
常用备份命令
# 整库导出并压缩,输出目录带日期便于归档
mongodump --uri="mongodb://app:secret@m1:27017/app?authSource=app" --gzip --out=/backup/mongo/2026-10-13
# 只导出单个集合
mongodump --uri="mongodb://app:secret@m1:27017/app" --collection=orders --out=/backup/mongo/orders
# 复制集上取一致时间点快照:同时记录 oplog
mongodump --uri="mongodb://app:secret@m1:27017/app" --oplog --out=/backup/mongo/pit-2026-10-13
# 打成单个归档文件,便于压缩与传输
mongodump --uri="mongodb://app:secret@m1:27017/app" --archive=/backup/mongo/app-2026-10-13.archive --gzip
# 确认产物大小与目录结构
du -sh /backup/mongo/2026-10-13 && ls -l /backup/mongo/2026-10-13/app常用选项与取舍
| 选项 | 作用 | 注意 |
|---|---|---|
| --out | 指定输出目录 | 目录不存在会自动创建 |
| --gzip | 压缩每个 bson 文件 | 节省空间但增加 CPU 开销 |
| --archive | 输出为单个归档文件 | 可与 --gzip 组合,便于整体传输 |
| --oplog | 导出期间同时记录 oplog | 复制集专用,用于取得一致快照 |
| --db / --collection | 限定导出范围 | 范围越小越快,适合定点留档 |
| --query | 按条件导出部分文档 | 仅在指定 collection 时可用 |
未加 --oplog 时,备份期间产生的新写入不在快照范围内,各集合之间也可能处于不同时间点。对一致性要求高的场景应使用 --oplog,或从只读副本、隐藏节点执行备份。
逻辑备份会持续读取数据,耗时越长占用的连接与 IO 越多;大库建议从副本节点执行,避免主节点的写入延迟受到直接影响。