MongoDB的孤儿文档是如何产生的

以下是对迁移过程描述:
1、balancer向源shard发送moveChunk命令;
2、源shard内部执行moveChunk命令,并保证在迁移的过程中,新插入的document还是写入源shard;
3、如果需要的话,目标shard创建需要的索引;
4、目标shard从源shard请求数据;注意,这里是一个copy操作,而不是move操作;
5、在接收完chunk的最后一个文档后,目标shard启动一个同步拷贝进程,保证拷贝到在迁移过程中又写入源shard上的相关文档;
6、完全同步之后,目标shard向config server报告新的metadata(chunk的新位置信息);
7、在上一步完成之后,源shard开始删除旧的document。

如果能保证以上操作的原子性,在任何步骤出问题应该都没问题;如果不能保证,那么在第4,5,6,7步出现机器宕机,都有可能出问题。

原文地址:https://www.cnblogs.com/yyml181231/p/12693720.html