Shards

在本页面

shard包含sharded cluster的分片数据的子集。群集的分片一起保存了群集的整个数据集。

从 MongoDB 3.6 开始,必须将分片部署为replica set,以提供冗余和高可用性。

用户,Client 端或应用程序应仅直接连接到分片以执行本地 Management 和维护操作。

在单个分片上执行查询只会返回一部分数据。连接到mongos以执行集群级别的操作,包括读取或写入操作。

Important

MongoDB 不保证任何两个连续的chunks驻留在单个分片上。

Primary Shard

分片群集中的每个数据库都有一个primary shard,其中包含该数据库的所有未分片集合。每个数据库都有其自己的主碎片。主分片与副本集中的primary没有关系。

在创建新数据库时,mongos通过选择群集中数据量最少的分片来选择主分片。 mongos使用listDatabase命令返回的totalSize字段作为选择标准的一部分。

主碎片图。主分片包含非分片的集合以及分片的集合中的文档块。分片 A 是主要分片。

要更改数据库的主分片,请使用movePrimary命令。迁移主分片的过程可能需要花费大量时间才能完成,并且在完成之前,您不应该访问与数据库关联的集合。根据要迁移的数据量,迁移可能会影响整个群集的操作。在尝试更改主分片之前,请考虑对集群操作和网络负载的影响。

当您部署具有以前用作副本集的分片的新sharded cluster时,所有现有数据库将 continue 驻留在其原始副本集上。随后创建的数据库可以驻留在集群中的任何分片上。

Shard Status

使用mongo Shell 中的sh.status()方法可以查看群集的概述。此报告包括哪个分片是数据库的主要分片,以及分片中的chunk分布。有关更多详细信息,请参见sh.status()方法。

分片群集安全性

使用Internal Authentication来增强群集内部的安全性,并防止未经授权的群集组件访问群集。您必须使用适当的安全设置启动群集中的每个mongod,以强制执行内部身份验证。

有关部署安全分片群集的教程,请参见使用密钥文件访问控制部署分片群集

分片本地用户

每个分片都支持基于角色的访问控制 (RBAC),以限制对分片数据和操作的未授权访问。使用--auth选项启动副本集中的每个mongod以强制执行 RBAC。或者,对集群内部安全性强制执行Internal Authentication还可以通过 RBAC 进行用户访问控制。

每个分片都有其自己的分片本地用户。这些用户不能用于其他分片,也不能用于通过mongos连接到集群。

有关启用用户添加到启用 RBAC 的 MongoDB 部署的教程,请参阅Enable Auth