配置分片
从MongoDB 8.0开始,您可以配置配置服务器来存储除通常的分分片集群元数据数据之外的应用程序数据。 同时提供配置服务器和分片服务器功能的 mongod
节点称为配置分片。 作为不带分分片服务器功能的独立运行--configsvr
运行的mongod
节点称为专用配置服务器。
分片集群必须具有配置服务器,但它可以是配置分分片(嵌入式配置服务器)或专用配置服务器。 使用配置分片可减少所需节点的数量,并可简化部署。 配置分片集群也称为嵌入式配置服务器集群。 您不能将同一配置服务器用于多个分分片的集群。
用例
如果集群的分片数不超过三个,则可以考虑使用配置分片片。
如果您的应用程序对可用性和弹性有很高的要求,请考虑部署专用的配置服务器。 专用配置服务器为关键集群操作提供隔离性、专用资源和一致的性能。
如果满足以下一个或多个条件,则应使用专用配置服务器:
您计划使用三个以上的分片。
您计划使用时间序列集合或可Queryable Encryption集合。
您计划使用可查询备份(on-Prem)。
行为
在嵌入式配置服务器集群中,配置分分片将用于存储集群元数据和用户数据。 它有助于降低分分片集群部署的复杂性。
您可以在配置分分片存储分片和分片的片集合数据。 它具有分片的所有属性,并分片配置服务器。
确认使用配置分片
要确认分片集群使用了配置分分片,请在连接到listShards
admin
时对 数据库运行mongos
命令,并检查输出中是否存在将_id
设立为"config"
的文档。如果listShards
输出不包含将_id
设立为"config"
的文档,则集群不使用配置分分片。
以下示例运行 listShards
命令并尝试查找 _id
设立为 "config"
的文档。
db.adminCommand({ listShards: 1 })["shards"].find(element => element._id === "config")
在此示例中,返回的文档已将 _id
设立为 "config"
,这确认此集群使用配置分片。
{ _id: "config", host: "configRepl/localhost:27018", state: 1, topologyTime: Timestamp({ t: 1732218671, i: 13 }), replSetConfigVersion: Long('-1') }
命令
要将专用配置服务器配置为作为配置分片运行,请运行transitionFromDedicatedConfigServer
命令。
要将配置分片配置为作为专用配置服务器分片,请运行transitionToDedicatedConfigServer
命令。