管理分片集合
重要
托管分片集合用户界面已弃用。 MongoDB Ops Manager 7.0.0 将不包含此功能。
Overview
分片将数据分发到多台机器上。 MongoDB使用分片来支持具有超大数据集和高吞吐量操作的部署。 MongoDB Ops Manager可以在这些集群上创建分片的集群和分分片的集合。
本页介绍了MongoDB Ops Manager如何管理分分片的集合,包括确定文档在分分片的集合中的分布式方式。
分片涉及定义分片分片键,然后使用该分片键对集合中的文档进行分区。 有关分片的更详细说明,请参阅MongoDB手册。
分片键由一个或多个索引字段组成,这些字段存在于集合中的每个文档中。 复合索引上的分片键称为复合分片键。 每个集合只能有一个分片键。 对集合进行分片后,就无法更改分片键。 分片集群可以支持分片和非分片集合。 有关选择分片键的最佳实践,请参阅MongoDB 手册。
分片集群尝试将分片集合中的文档平均分配给集群中的分片。 您可以使用分片区域来管理集合中文档的分布。
区域分片将集合的分片分片键范围与集群中的一个或多个分片关联(称为区域)。 MongoDB最终会将给定范围内的文档路由到关联的区域。 这样就可以进行有针对性的数据分发。 MongoDB Ops Manager支持分区分片和默认分片。 有关区域分片的更详细说明,请参阅MongoDB手册。
注意
标签感知分片和区域分片可以互换。 随着MongoDB 3.4的发布,标签感知分片过渡到区域分片。
以下过程说明了MongoDB Ops Manager如何:
管理分片集合
更改分分片集群均衡器的运行时间
创建新的分片的集合
将分片集合导入分片的 MongoDB Ops Manager
为分片集群定义区域
定义分片集合的范围
每个过程均假定您已单击 Deployment按钮以首先显示Deployment页面。
启用分片集合管理
您可以使用MongoDB Ops Manager分片的管理分片集合。 如果您希望MongoDB Ops Manager分片的管理片集合,则需要先在MongoDB Ops Manager中运行导入进程。 这样可以确保任何集合的配置都不会被意外覆盖。
对任何失败的导入进行故障排除。 (可选)
导入分片的集合时,可能会出现一些错误。
- 重叠范围
MongoDB Ops Manager不支持重叠的定义范围。
例子
复合分分片键可能看起来具有重叠的范围,但实际上并非如此。 此示例解释了其中的差异。
简单复合分分片键由两个整数组成,其值介于1和10之间。 每个数据数据块约为64 MB 的集合的数据数据块范围为:
minMax[$min, $min]
[1, 8]
[1,8]
[3,1]
[3,1]
[5,2]
[5,2]
[5,10]
[5,10]
[7,3]
[7,3]
[$max,$max]
这些范围基于两个值的组合(或复合),而不是每个值的单独值。 第二个值在每个数据段中上下波动,但其组合始终从最小值增加到最大值。
您可以使用
mongosh
直接在数据库上解决此问题。检查分片范围的状态。
查看范围是否可能重叠。
- 数据类型不匹配
对于每个范围, MongoDB Ops Manager要求分片键中每个字段的最小值和最大值为相同的BSON数据类型。 范围中的复合分片键可以为键中的每个字段使用不同的 BSON 类型。 MongoDB Ops Manager会在导入分片集合和创建范围时对此进行验证。
注意
Min键和Max键是不同的数据类型,也是不在范围混合BSON数据类型的唯一例外。
您可以使用
mongosh
直接在数据库上解决此问题。- Data type invalid
范围的最小值和最大值只能使用八种BSON数据类型:
字符串
整型
double
Long
Date
时间戳
ObjectId
MinKey / MaxKey
您可以使用
mongosh
直接在数据库上解决此问题。
更改分片集群负载均衡器运行时间
您可以使用MongoDB Ops Manager来设置分片集群何时跨分片平衡数据。
每个分片集群都有一个称为负载负载均衡器的进程,用于确保数据段在每个分片之间均匀分片。 在分片集群中迁移数据段可能会影响性能。 负载均衡器的效率取决于分片键的选择。 使用MongoDB Ops Manager 负载均衡器管理器界面设立负载均衡器Windows 可以运行 的特定 ,例如在非高峰时段安排负载均衡轮次。
如果要更改分分片集群的负载均衡窗口:
配置负载均衡器运行的时间窗口。
要更改负载均衡器的运行时间,请执行以下操作:
单击位于Schedule the Balancer的右侧。
在Start 框中,使用24 小时时间 键入窗口应开始的时间。
在Stop 框中,使用24 小时时间 键入窗口应结束的时间。
单击 Save(连接)。
注意
Start和Stop的值可以介于00:00
和23:59
之间,但Stop可以是早于Start的值。 如果Stop早于Start ,则Stop被视为在第二天。
例子
如果您希望迁移窗口介于下午11 : 00和上午2 : 00之间,则应在第二天设立Start设置为23:00
,并将Stop设置为02:00
。
创建新的分片集合
您可以使用分片的 MongoDB Ops Manager创建新的分片集合。
重要
如果选作分片分片键的一个或多个字段未编制索引,则自动化会在前台创建分分片键索引。 此操作可能会影响生产工作负载。 有关前台索引构建的更多信息,请参阅对已填充集合的索引构建操作。
MongoDB Ops Manager不支持覆盖分片 分片 的 复合索引 。要学习;了解有关分分片键上的复合索引的更多信息,请参阅分分片键索引。
在相应字段中键入 Database和 Collection名称。
Shard Key 1在 字段中输入分片键的名称。
分片键有两个分片的选项:
如果要使用哈希分分片键,请选中hashed 。 您可以展开Advanced Settings ,有选择地优化集合中文档的分布。 要进行优化,您可以执行以下操作:
选中
presplitHashedZones
复选框,根据为集合定义的区域和区域范围,为空集合或不存在的集合执行初始数据数据块创建和分配。指定使用哈希分片键对空集合进行分片时最初创建的最小数据段数。 我们建议使用
2
个数据段,但您可以为每个分片最多指定8192
个数据段。 此设置对应于分片集合的 MongoDBnumInitialChunks
设置。
要学习;了解有关这些选项的更多信息,请参阅sh.shardCollection()。
如果您想使用唯一的键名称,请选中Enforce Unique Key 。
分片键不能是唯一键和哈希键。
如果要创建复合分分片键,请单击+ add another field 。
您最多可以对复合分分片键中的一个键进行哈希处理。
如果您想使用唯一的键名称,请选中Enforce Unique Key 。
复合分片键包含的键不能超过三个。
重要
从MongoDB 4.4版本开始支持对复合分分片键进行哈希处理。 如果对复合分分片键进行哈希处理并希望降级到FCV 4.2 ,则必须先删除带有分片的键的分片集合。
单击 Set Up Ranges 以区域分片。(可选)
如果要在此集合上使用区域分片,请按照使用范围定义集合的分片方式下的步骤进行操作。
配置分区分片
注意
如果您分片的对分片集合使用分区分片,请按照本节中的接下来两个过程进行操作。 否则,您可以跳过本节。
将分片分组到区域
区域是一个或多个分片的命名项目。 创建一个或多个区域后,您可以将范围分片分片键及其相应的文档分配给区域。 MongoDB最终会将给定范围内的文档路由到关联的区域。 每个区域可以包含多个范围和多个分片。 每个分分片可以属于多个区域。 每个分片在Deployment下其名称分片显示其区域。
使用范围定义如何对集合进行分片
范围指定分片键中每个字段的最小值和最大值。 每个定义的范围都与一个区域相关联。 MongoDB 最终会将给定范围内的文档路由到关联区域。 最小值是分片键值的下限(含)。 最大值不包括分片键值的上限。 一个范围只能属于一个区域,但一个区域可以有多个范围。
一旦负载均衡器将范围移动到所需区域,文档就会根据配置的区域和范围进行路由。 一旦发生这种情况,范围内的文档将被路由到关联的区域,而范围之外的文档可能会被路由到集群中的任何分片。
禁用分片集合管理
单击 Unmanage(连接)。
重要
当分片的集合处于非托管状态时,不会删除您的分片的集合和区域。 无法再通过MongoDB Ops Manager界面托管这些集合和区域。