分片
分片包含分片集群的分片数据子集。集群的分片一起保存集群的整个数据集。
从 MongoDB 3.6 开始,分片必须部署为副本集以提供冗余和高可用性。
用户、客户端或应用程序应仅直接连接到分片以执行本地管理和维护操作。
对单个分片执行查询只会返回数据的一个子集。连接到mongos以执行集群级别的操作,包括读取或写入操作。
IMPORTANT
MongoDB 不保证任何两个连续的块驻留在单个分片上。
主分片
分片集群中的每个数据库都有一个主分片,其中包含该数据库的所有未分片集合。每个数据库都有自己的主分片。主分片与副本集中的主节点无关。
mongos
在创建新数据库时,通过选择集群中数据量最少的分片来选择主分片 。mongos 使用 listDatabases 命令返回的 totalSize 字段作为选择标准的一部分。
要更改数据库的主分片,请使用movePrimary
命令。迁移主分片的过程可能需要很长时间才能完成,在完成之前您不应访问与数据库关联的集合。根据迁移的数据量,迁移可能会影响整个集群的运行。在尝试更改主分片之前,请考虑对集群运行和网络负载的影响。
当您使用以前用作副本集的分片部署新的分片集群时,所有现有数据库将继续存储在其原始副本集上,之后创建的数据库可以存储在集群中的任何分片上。
分片状态
使用sh.status()
方法在mongosh
查看集群的概况。该报告包括哪个分片是数据库的主分片以及跨分片的块]分布。有关详细信息,请参阅sh.status()
方法。
分片集群的安全
使用内部/成员身份验证来实施集群内安全并防止未经授权的集群组件访问集群。您必须使用适当的安全设置启动集群中的每个 mongod,以强制执行内部身份验证。
从 MongoDB 5.3 开始,SCRAM-SHA-1
不能用于集群内身份验证。仅 支持SCRAM-SHA-256
在以前的 MongoDB 版本中,SCRAM-SHA-1 和 SCRAM-SHA-256 都可以用于集群内身份验证,即使没有明确启用 SCRAM。
有关部署安全分片集群的教程,请参阅使用密钥文件身份验证部署分片集群。
分片本地用户
每个分片都支持基于角色的访问控制 (RBAC),以限制对分片数据和操作的未授权访问。使用--auth
的选项强制 RBAC启动mongod
副本集中的每个副本。或者,为集群内安全实施内部/成员身份验证也可以通过 RBAC 实现用户访问控制。
从 MongoDB 5.3 开始,SCRAM-SHA-1 不能用于集群内身份验证。仅 支持 SCRAM-SHA-256。
在以前的 MongoDB 版本中,SCRAM-SHA-1 和 SCRAM-SHA-256 都可以用于集群内身份验证,即使没有明确启用 SCRAM。
每个分片都有自己的分片本地用户。这些用户不能在其他分片上使用,也不能用于通过mongos
连接到集群
有关启用将用户添加到启用 RBAC 的 MongoDB 部署的教程,请参阅启用访问控制。
参见
原文 - Shards
译者:陆文龙