- 最近用到了该模块, 期间看了源码, 这里顺便做下笔记
- 本文前几小节讲MongoDump的运转流程, 后几小节讲代码方面的技术细节
- 源码版本: 100.6.1
- 源码仓库: https://github.com/mongodb/mongo-tools/blob/100.6.1/mongodump
备份逻辑就在MongoDump的Dump方法 (mongodump/mongodump.go/MongoDump.Dump)
Dump主要分4步:
- 各种初始化工作
- 备份metaData, index, users, roles, version 等基础数据
- 备份collections
- 备份oplog
后面会经常提到
Intent
, 这是MongoDump自己的一个抽象概念, 可以简单理解为备份任务单元, 例如一个collection的备份对应一个Intent, oplog的备份对应一个Intent等等; 在阅读源码时你可以将Intent
在脑海里替换成Task
. 关于Intent
详见本文后面章节核心逻辑见以下源码及注释(为了方便阅读, 这里我删减了些不关键的逻辑):