sh.removeRangeFromZone()

在本页面

Definition

删除一系列分片键值和zone之间的关联。

sh.removeRangeFromZone()接受以下参数:

Parameter Type Description
namespace string 分片集合的namespace与区域关联。


必须将收集分片以使操作成功。
| minimum | document | shard key值范围的下限。
<fieldname> : <value>的形式指定分片键的每个字段。该值必须与分片键具有相同的 BSON 类型。
| maximum | document | shard key个值的范围的上限。
<fieldname> : <value>的形式指定分片键的每个字段。该值必须与分片键具有相同的 BSON 类型。

使用sh.removeRangeFromZone()删除未使用的,过期的或有冲突的范围与区域之间的关联。

如果没有范围与传递给removeShardFromZone()的最小和最大范围匹配,则不会删除任何内容。

连接到mongos实例时仅发出sh.removeTagRange()

Behavior

sh.removeShardFromZone()不会删除与指定范围关联的区域。

有关分片群集中区域的更多信息,请参见zone手册页。

Balancer

删除范围和区域之间的关联会删除约束,使该区域内的碎片上的范围保持的块数保持不变。在下一轮平衡器中,平衡器可以迁移该区域先前覆盖的块。

有关迁移如何在分片群集中工作的更多信息,请参见分片集群平衡器的文档。

Security

对于以authentication运行的分片群集,您必须通过以下任一方式进行身份验证:

or, alternatively

内置clusterAdminclusterManager角色具有发布sh.removeRangeFromZone()的适当权限。有关更多信息,请参见基于角色的访问控制的文档页面。

Example

给定一个具有{ a : 1 }的分片键的分片集合exampledb.collection,以下操作将删除范围为1的下限和10的上限的范围:

sh.removeRangeFromZone( "exampledb.collection",
                { a : 1 },
                { a : 10 }
              )

minmax必须与目标范围的边界完全匹配。以下操作尝试删除以前创建的范围,但将{ a : 0 }指定为min绑定:

admin = db.getSiblingDB("admin")
admin.runCommand(
   {
      updateZoneKeyRange : "exampledb.collection",
      min : { a : 0 },
      max : { a : 10 },
      zone : null
   }
)

尽管{ a : 0 }{ a : 10 }的范围涵盖了现有范围,但它并不完全匹配,因此sh.removeRangeFromZone()不会删除任何内容。

复合分片键

给定一个具有{ a : 1, b : 1 }的分片键的分片集合exampledb.collection,以下操作将删除范围为{ a : 1, b : 1}的下限和{ a : 10, b : 10 }的上限的范围:

sh.removeRangeFromZone( "exampledb.collection",
                { a : 1, b : 1 },
                { a : 10, b : 10 }
              )

在前面的示例中,如果存在一个范围为{ a : 1, b : 5 }的下限和{ a : 10, b : 1 }的上限,则该操作不会删除该范围,因为它与传递给sh.removeRangeFromZone()的最小值和最大值不完全匹配。

首页