Docs 菜单

Docs 主页开发应用程序MongoDB Manual

分片

在此页面上

  • 主分片
  • 分片状态
  • 分片集群的安全性

分片包含分片集群的分片数据的子集。集群的分片共同保存集群的整个数据集。

分片必须作为副本集部署,以提供冗余和高可用性。

重要

分片集群使用写关注 "majority" 进行大量内部操作。由于 PSA 副本集的性能问题,不建议在分片集群中使用仲裁节点。

警告

通常情况下,不要直接在分片上执行操作,因为这些操作可能会导致数据损坏或数据丢失。用户、客户端或应用程序只能直接连接到分片来执行本地管理或维护操作。

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

重要

MongoDB 不保证任何两个连续的数据段都位于同一个分片上。

分片集群中的每个数据库都有一个主分片,用于保存该数据库的所有未分片集合。每个数据库都有自己的主分片。主分片与副本集中的主节点没有关系。

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

主分片的示意图。主分片包含非分片集合以及分片集合中文档的数据段。分片 A 为主分片。

要更改数据库的主分片,请使用 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 选项启动副本集中的每个 mongod,以实施 RBAC。或者,为了确保集群内部的安全性,可以实施内部/成员身份验证,这也支持通过 RBAC 实现用户访问控制。

从 MongoDB 5.3 开始,SCRAM-SHA-1不能用于集群内身份验证。仅支持 SCRAM-SHA-256

在先前的 MongoDB 版本中,SCRAM-SHA-1 和 SCRAM-SHA-256 均可用于集群内身份验证,即使未显式启用 SCRAM。

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

有关向启用 RBAC 的 MongoDB 部署中添加用户的教程,请参阅启用访问控制

← 分片集群组成部分