翻译或纠错本页面
受标记作用的分片¶
MongoDB支持对某个范围的 shard key 加标记并将其分配到某个或某几个分片的分片方式.
使用了以下的部署模式后,均衡器会遵循按照范围标记的协定:
将某些数据固定存储到某些特定的分片上.
确保绝大多数相关的数据所存储的分片与应用服务器在地理位置上接近.
这篇文档描述了在MongoDB部署中,使用标记进行分片的行为,选项和使用方法.
注意事项¶
- Shard key range tags are distinct from replica set member tags.
哈希分片 不支持受标记作用的分片方式.
分片标记包含范围的最小值,不包含范围的最大值.
行为和选项¶
使用了标记方式的分片之后,范围下限小于标记的范围上限的数据块,会被均衡器迁移到这个标记所在的分片上.
在均衡过程中,如果均衡器发现有数据块不符合配置文件中的配置,它会将此数据块按照配置文件中的配置转移到合适的分片中.
在使用标记方式对集群进行配置后,集群需要一定的时间将数据按照标记的规则进行迁移,花费的时间取决于数据块的数量与数据块在分片间的分布.
一旦配置完成,均衡器在 均衡过程 中就开始遵循配置好的标记.
参见
跨越多个标记的数据块¶
一个数据块的 shard key 范围可能被多个标记所包含,在这种情况下,均衡器会将数据块迁移到范围上限距离自己的范围下限最近的标记所在的分片中.
示例
给定一个有两个标记的集合:
- Shard key values between 100 and 200 have tags to direct corresponding chunks to shards tagged NYC.
- Shard key values between 200 and 300 have tags to direct corresponding chunks to shards tagged SFO.
在这个集合中,均衡器会将 shard key 范围在 150 到 220 的数据块迁移到 NYC 标记所在的分片,因为 150 距离 200 要比距离 300 近一些.
为了确保你的集合没有潜在的模糊不清的数据块标记,参见 在你的标记边界进行分裂 .之后就可以人工迁移数据块到合适的分片中,或者等待均衡过程自动进行数据迁移.