数据复制服务 DRS-分片集群MongoDB迁移前清除孤儿文档:什么是孤儿文档
什么是孤儿文档
MongoDB负载均衡器(Balancer)会根据集合的分片键(Shard key)均衡数据。Balancer的工作原理是:需要Balancer的数据块(Chunk)先复制到目标Shard,成功后再删除原Shard上的Chunk,来完成一次Chunk迁移,通过多次Chunk迁移来实现均衡。在Chunk迁移时,如果发生网络闪断等不可预知的场景,完成了复制但没有完成删除,那么对同一条文档会同时存在于两个Shard上。因为Chunk迁移在MongoDB上是感知的,config会更新这条文档应该在哪个Shard上,那么另一个Shard上的文档会存在但不会被感知,后续的update、delete操作都不会作用于这个错误的Shard上的文档,那么这条文档被称为孤儿文档(Orphaned Document)。