MongoDB教程
MongoDB运算符
MongoDB命令
MongoDB数据库
MongoDB Shell
MongoDB云和工具

MongoDB 分片方法

#1、 sh.addShard( )

在任何分片群集中,我们可以使用此方法向其添加分片副本集。 add shard方法始终在mongos实例上运行。
示例
必须指定副本集和主机名。如果您为副本集的任何一个成员指定其他主机名,则如果我们指定任何其他主机名,则所有主机名都必须与同一副本集相关。
下面的示例添加了一个名为replJTP的副本集,并且指定副本集的一个成员:
sh.addShard("replJTP/mongodb3.example.net:27327")

#2、 sh.addShardTag(shard,tag)

此方法用于返回sh.addShardToZone()并为每个分片分配一个分片ID。指定的功能仍适用于MongoDB 3.2、但是在MongoDB 3.4中,它提供了区域分片作为标记感知分片的子类。
示例
下面的示例添加了三个标记, Java , MongoDB 和 Python ,分为三个碎片:
sh.addShardTag("shard0000", "Java")
sh.addShardTag("shard0001", "MongoDB")
sh.addShardTag("shard0002", "Python")

#3、 sh.enableSharding(database,primaryShard)

该方法的名称表明,它用于为参数中的指定数据库启用分片。当我们为任何数据库启用分片时,我们可以使用sh.shardCollection()方法对指定数据库的集合进行分片。此方法包装enableSharding命令。
语法
sh.enableSharding(
   <database>,
   <primary shard> 
)
示例
以下示例为从mongos运行的JTP数据库启用分片:
sh.enableSharding("JTP")

#4、 sh.startBalancer(timeout,interval)

此方法用于分片群集在指定的时间和间隔内启动平衡器。可以使用此方法为分片群集启用自动拆分选项。此方法还是balencerStart命令的包装。即开始平衡的方法不会等待。

#5、 sh.stopBalancer(timeout,interval)

停止平衡方法用于禁用分片群集中正在运行的平衡器。可以使用此方法删除对指定分片群集的自动拆分。如果在mongod实例上运行,sh.stopBalancer()方法将返回错误,而我们只能在mongos实例上运行。

#6、 convertShardKeyToHashed(<Object>)

该方法返回参数中指定的输入对象的哈希值。该方法将指定的分片键转换为使用哈希索引所使用的类似哈希函数的哈希方法。另外,对于参数中的特定键,该方法可用于查看哈希值是什么。
示例
考虑分片集合使用哈希分片键[1]
use JTP
db.orders.createIndex( { _id: "hashed" } )
sh.shardCollection( "JTP.tutorial", { _id : "hashed" } )
如果集合中存在以下文档,则_id字段的哈希值用于分发文档:
{
  _id: ObjectId("5b2be413c06d26ff9ca"),
  "item" : "Java",
  "qty" : 25
}

#7、 sh.updateZoneKeyRange(namespace, minimum, maximum, zone)

将一系列分片键值与一个区域相关联。该方法的助手sh.updateZoneKeyRange()和sh.addTagRange()可以在数据库命令和未分片的集合上运行此方法。不能通过现有分片集合的范围来创建具有上下边界重叠的分片键值的范围。
让我们以现有范围为10到10的示例为例。 20个键值。我们无法创建15到30的新范围,因为新范围会与现有范围重叠。
示例
我们在其中有一个碎片集合下面的示例查询,即带有分片键{t: 10}的lidihuo.collection。它创建一个范围,其下限为10,上限为20,位于alpha区域:
sh.updateZoneKeyRange(
   "lidihuo.collection",
   { t : 10 },
   { t : 20 },
   "alpha"
)
现在,通过将null传递给zone字段,下面的操作将删除先前创建的范围。
sh.updateZoneKeyRange(
   "lidihuo.collection",
   { t : 10 },
   { t : 20 },
   null
)
目标范围的边界必须与最小值和最大值匹配。下面的查询尝试删除旧范围,但将{t: 0}指定为最小范围:
sh.updateZoneKeyRange(
   "lidihuo.collection",
   { t : 0 },
   { t : 20 },
   null
)

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4