重要
从3.4开始,mongod
不再支持将已弃用的镜像实例用作配置服务器(SCCC)。在将分片群集升级到3.4之前,必须将配置服务器从SCCC转换为CSRS。
要将配置服务器从SCCC转换为CSRS,请参阅MongoDB 3.4手册“将配置服务器升级到副本集”。
配置服务器存储分片群集的元数据。元数据反映分片群集中所有数据和组件的状态和组织。元数据包括每个分片上的块列表以及定义块的范围。
该mongos
实例缓存此数据,并将其用于路由读取和写入操作,以正确的碎片。mongos
当集群的元数据发生更改时(例如Chunk Splits或添加shard),更新缓存。分片还从配置服务器读取块元数据。
配置服务器还存储身份验证配置信息,例如基于角色的访问控制或群集的内部身份验证设置。
MongoDB还使用配置服务器来管理分布式锁。
每个分片群集必须具有自己的配置服务器。不要将相同的配置服务器用于不同的分片群集。
警告
在配置服务器上执行的管理操作可能会对分片群集的性能和可用性产生重大影响。根据受影响的配置服务器的数量,群集可能会在一段时间内处于只读或脱机状态。
在版本3.4中更改。
从MongoDB 3.2开始,分片群集的配置服务器可以部署为副本集(CSRS),而不是三个镜像配置服务器(SCCC)。对配置服务器使用副本集可提高配置服务器之间的一致性,因为MongoDB可以利用配置文件的标准副本集读取和写入协议。另外,将副本集用于配置服务器允许分片群集具有3个以上的配置服务器,因为副本集最多可具有50个成员。要将配置服务器部署为副本集,配置服务器必须运行WiredTiger存储引擎。
在3.4版中,MongoDB 删除了对SCCC配置服务器的支持。
当用于配置服务器时,以下限制适用于副本集配置:
该admin
数据库和配置数据库位于配置服务器上。
该admin
数据库包含与身份验证和授权相关的集合,以及其他系统*。供内部使用的集合。
该配置数据库包含包含分片群集的元数据的集合。当元数据发生更改时(例如在块迁移或块拆分之后),MongoDB会将数据写入配置数据库。
用户应避免在正常操作或维护过程中直接写入config数据库。
在写入配置服务器时,MongoDB使用的写入关注为"majority"
。
MongoDB从admin
数据库中读取身份验证和授权数据以及其他内部用途。
config
当mongos
开始或在元数据更改之后(例如在块迁移之后)时,MongoDB从数据库读取。分片还从配置服务器读取块元数据。
从副本集配置服务器读取时,MongoDB使用“
读取关注”级别"majority"
。
如果配置服务器副本集丢失其主服务器并且无法选择主服务器,则集群的元数据将变为只读。您仍然可以从分片读取和写入数据,但是在副本集可以选择主副本之前,不会发生任何块迁移或块拆分。
在分片簇,mongod
和mongos
实例监视分片集群中的副本集(例如碎片副本集,配置服务器副本集)。
如果所有配置服务器都不可用,则群集可能无法运行。为了确保配置服务器保持可用和完整,配置服务器的备份至关重要。与集群中存储的数据相比,配置服务器上的数据很小,并且配置服务器的活动负载相对较低。
对于3.2分片群集,如果监视配置服务器副本集的连续不成功尝试次数超过
replMonitorMaxFailedChecks
参数值,则在重新启动实例之前,监视
mongos
或mongod
实例将变得不可用。有关解决
方法,请参阅
v3.2故障排除指南。
有关更多信息,请参见配置服务器副本集成员不可用。
配置服务器将元数据存储在配置数据库中。
重要
config
在配置服务器上进行任何维护之前,请始终备份数据库。
要访问config
数据库,请从mongo
shell 发出以下命令
:
通常,永远不要config
直接编辑数据库的内容。该config
数据库包含以下集合:
有关这些集合及其在分片群集中的作用的更多信息,请参见Config数据库。有关读取和更新元数据的更多信息,请参见 配置服务器上的读取和写入操作。
使用内部/成员身份验证来加强集群内部的安全性,并防止未经授权的集群组件访问集群。您必须mongod
使用适当的安全设置启动集群中的每个服务器,以强制执行内部身份验证。
有关部署安全的分片群集的教程,请参阅使用密钥文件身份验证部署分片群集。