📜  MongoDB分片命令

📅  最后修改于: 2020-11-23 01:08:46             🧑  作者: Mango

MongoDB分片命令

分片是一种在不同计算机上分发数据的方法。 MongoDB可以使用分片来支持大规模数据集和高吞吐量操作的部署。

MongoDB sh.addShard( )命令

使用此命令将分片副本集添加到分片群集中。如果将其添加到群集的碎片中,则会影响块的平衡。它开始传输块以平衡集群。

/ <:端口>, <:端口>,…

句法:

sh.addShard("/<:port>")

例:

sh.addShard("repl0/mongodb3.example.net:27327")

输出:

它将添加一个分片以指定副本集的名称和副本集至少一个成员的主机名。

MongoDB sh.addShardTag()命令

该命令以分片中的标签或标识符为后盾。 MongoDB使用这些标识符将属于标记范围的线程发送到指定的分片。

例:

sh.addShardTag("shard0000", "NYC")
sh.addShardTag("shard0001", "LAX")
sh.addShardTag("shard0002", "NRT")

它将向三个不同的分片添加三个标签。

MongoDB sh.addShardToZone(碎片,区域)

此命令将指定的分片添加到指定的区域。在版本3.4中引入了此命令。仅将那些块分配给该区域覆盖的分片。

例:

sh.addShardToZone("shard0000", "JFK")
sh.addShardToZone("shard0001", "LAX")
sh.addShardToZone("shard0002", "NRT")

//将LGA与shard0000关联:

sh.addShardToZone("shard0000", "LGA")

// shard0000与LGA区域和JFK区域都关联。

MongoDB sh.addTagRange(namespace,min,max,tag)命令

使用此命令将一定范围的分片键值附加到分片标签。区域范围始终不包括上限,而包括下限。

例:

我们的分片键为{state:1,zip:1},

下面的示例生成一个特定的标签范围,该范围涵盖加利福尼亚州的邮政编码:

sh.addTagRange( "statedb.collection",
                { state: "CA", zip: MinKey },
                { state: "CA", zip: MaxKey },
                "NY"
              )

MongoDB sh.disableBalancing(name_space)命令

使用此命令将禁用参数中指定分片的平衡器。它对块的平衡没有任何影响,但对同一集群中的其他分片集合没有任何影响。

MongoDB sh.enableBalancing(namespace)命令

该命令为参数中的指定分片启用平衡器。它对块的平衡没有任何影响,但对同一集群中的其他分片集合没有任何影响。

MongoDB sh.disableAutoSplit命令

此命令在配置设置集合中删除自动拆分标志。启用分片群集的自动拆分选项后,MongoDB会基于分片键值将其自动分块。

sh.disableAutoSplit()只能从连接到指定mongos实例的mongo shell执行。如果在mongod实例上运行sh.disableAutoSplit()命令将返回错误

MongoDB updateZoneKeyRange命令

借助此命令,将创建或删除分片键值范围与区域之间的关系。使用db.runCommand({ })方法来运行updateZoneKeyRange。您必须在管理数据库上运行addShardToZone。

句法:

{
  updateZoneKeyRange: ,
  min: ,
  max: ,
  zone:  | 
}

例:

下面的示例在alpha区域上创建一个范围,其下限为1,上限为10:

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

以下查询通过将null传递给zone字段来删除先前创建的范围。

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

现在检查分片的状态: