moveRange
定义
兼容性
此命令在以下环境中部署的部署中可用
MongoDB Atlas:MongoDB在云中部署的完全托管服务
注意
此命令在所有MongoDB Atlas集群中都受支持。有关Atlas对所有命令的支持信息,请参阅不受支持的命令。
MongoDB企业版:基于订阅、自主管理的MongoDB版本
MongoDB社区版:源代码可公开、免费使用、自主管理的MongoDB版本
语法
该命令具有以下语法
db.adminCommand( { moveRange: <namespace>, toShard: <ID of the recipient shard>, min: <min key of the range to move>, // conditional max: <max key of the range to move>, // conditional forceJumbo: <bool>, // optional waitForDelete: <bool>, // optional writeConcern: <write concern>, // optional secondaryThrottle: <bool> // optional } )
命令字段
该命令包含以下字段
字段 | 类型 | 描述 |
---|---|---|
toShard | 字符串 | 接收分片的服务器ID。 |
min | key | 要移动的键范围的最低键。如果不指定 如果不指定
|
max | key | 要移动的键范围的最高键。如果不指定 如果不指定
|
布尔值 | 可选。 标志,用于确定命令是否可以移动一个范围,该范围太大而无法迁移(请参阅迁移块大小限制)。该范围可能或可能没有标记为大块。
默认为 警告 带有 此选项会导致即使块的大小大于配置的块大小,也会迁移块。在迁移期间,集合保持不可用。 要在此长时间阻塞期间迁移这些大块,请参阅平衡超出大小限制的范围。 | |
writeConcern | 文档 | |
secondaryThrottle | 布尔值 | 可选。
有关更多信息,请参阅辅助节点节流。 |
范围迁移部分描述了范围如何在MongoDB的碎片之间移动。
注意事项
仅在某些场景下使用 moveRange
,例如
数据初始导入
大量批量导入操作
大多数情况下,允许均衡器在分片集群中创建和平衡范围。
示例
以下示例使用一个具有
分片键
x
配置的128MB分片大小
边界为
[x: 0, x: 100)
的分片
指定 min
和 max
以下表格列出了将 min
和 max
设置为不同值的结果
min | max | 结果 |
---|---|---|
0 | 100 | 将范围内的所有文档移动到接收器分片。 |
10 | 30 | 创建三个子范围
将 |
0 | 20 | 创建两个子范围
将 |
40 | 100 | 创建两个子范围
将 |
指定 min
但不指定 max
以下表格列出了将 min
设置为各种值的测试结果
min | 键范围中的数据量 | 结果 |
---|---|---|
0 | 小于 128 MB 的数据包含在键 x: 0 和 x: 100 之间。 | 将范围内的所有文档移动到接收器分片。 |
10 | 小于 128 MB 的数据包含在键 x: 0 和 x: 100 之间。 | 创建两个子范围
将 |
10 | 128 MB 的数据包含在键 x: 10 和 x: 30 之间。 | 创建三个子范围
将 |
指定 max
但不指定 min
以下表格列出了将 max
设置为各种值的测试结果
max | 键范围中的数据量 | 结果 |
---|---|---|
100 | 小于 128 MB 的数据包含在键 x: 0 和 x: 100 之间。 | 将范围内的所有文档移动到接收器分片。 |
10 | 小于 128 MB 的数据包含在键 x: 0 和 x: 100 之间。 | 创建两个子范围
将 |
30 | 128 MB 的数据包含在键 x: 10 和 x: 30 之间。 | 创建三个子范围
将 |