3.2版本复制集同步的过程参考MongoDB 复制集同步原理解析
在 3.4 版本里 MongoDB 对复制集同步的全量同步阶段做了2个改进
- 在拷贝数据的时候同时建立所有的索引,在之前的版本里,拷贝数据时会先建立_id索引,其余的索引在数据拷贝完之后集中建立
- 在拷贝数据的同时,会把同步源上新产生的oplog拉取到本地local数据库的临时集合存储着,等数据全量拷贝完,直接读取本地临时集合的oplog来应用,提升了追增量的效率,同时也避免了同步源上oplog不足导致无法同步的问题。
上图描述了这2个改进的效果,实测了『10GB的数据,包含64个集合,每个集合包含2个索引字段,文档平均1KB』,3.4版本的全量同步相比3.2版本性能约有20%的提升,如果数据集很大,并且在同步的过程中有写入,提升的效果会更明显,并且彻底解决了因同步源oplog不足而导致全量同步失败的问题。