shards
分片包含分片群集的分片数据子集。
集群的分片一起保存集群的整个数据集。
从MongoDB 3.6开始,必须将分片部署为副本集以提供冗余和高可用性。
用户,客户端或应用程序应仅直接连接到分片以执行本地管理和维护操作。
在单个分片上执行查询仅返回数据的子集。
连接到mongos以执行集群级操作,包括读取或写入操作。
重要
MongoDB不保证任何两个连续的块驻留在单个分片上。
主分片
分片群集中的每个数据库都有一个主分片,其中包含该数据库的所有非分片集合。
每个数据库都有自己的主分片。
主分片与副本集中的主分片无关。
通过选择具有最少数据量的群集中的分片,mongos在创建新数据库时选择主分片。
mongos使用listDatabase命令返回的totalSize字段作为选择条件的一部分。
要更改数据库的主分片,请使用movePrimary命令。
迁移主分片的过程可能需要很长时间才能完成,并且在完成之前不应访问与数据库关联的集合。
根据要迁移的数据量,迁移可能会影响整个群集操作。
在尝试更改主分片之前,请考虑对群集操作和网络负载的影响。
部署带有先前用作副本集的分片的新分片群集时,所有现有数据库将继续驻留在其原始副本集上。
随后创建的数据库可能驻留在集群中的任何分片上。
碎片状态
使用mongo shell中的 sh.status()
方法查看集群的概述。
此报告包括哪个分片是数据库的主分片以及分片中的分块。
分片群集安全性
使用内部身份验证可强制实施群集内安全性,并防止未经授权的群集组件访问群集。
您必须使用适当的安全设置启动群集中的每个mongod,以强制执行内部身份验证。
有关部署安全分片群集的教程,请参阅使用密钥文件访问控制部署分片群集。
分片本地用户
每个分片都支持基于角色的访问控制(RBAC),以限制对分片数据和操作的未授权访问。
使用 --auth
选项启动副本集中的每个mongod以强制执行RBAC。
或者,为群集内安全性强制执行内部身份验证还可以通过RBAC启用用户访问控制。
每个分片都有自己的分片本地用户。
这些用户不能用于其他分片,也不能用于通过mongos连接到群集。
有关启用将用户添加到启用RBAC的MongoDB部署的教程,请参阅启用身份验证。
参考资料
https://docs.mongodb.com/manual/core/sharded-cluster-shards/