从MongoDB 8.0开始,您可以配置配置服务器来存储除通常的分分片集群元数据数据之外的应用程序数据。 同时提供配置服务器和分片服务器功能的mongod节点称为配置分片。 作为不带分分片服务器功能的独立运行--configsvr运行的mongod节点称为专用配置服务器。
分片集群必须具有配置服务器,但它可以是配置分分片(嵌入式配置服务器)或专用配置服务器。 使用配置分片可减少所需节点的数量,并可简化部署。 配置分片集群也称为嵌入式配置服务器集群。 您不能将同一配置服务器用于多个分分片的集群。
用例
配置分片的费用低于专用配置服务器,因为专用配置服务器作为其自身的副本集运行。配置分片将配置服务器角色组合到现有分片的副本集中,因此集群需要一个副本集而不是两个副本集。在分片数量较少的情况下,使用配置分片对性能没有可测量的影响。专用配置服务器将集群元数据与应用程序数据隔离,这是某些功能所需的。
如果使用以下一个或多个功能,则使用专用配置服务器:
Queryable Encryption collections
在 MongoDB Atlas 上,当集群分片数超过五个时,集群会自动从配置分片过渡到专用配置服务器。
行为
在嵌入式配置服务器集群中,配置分分片将用于存储集群元数据和用户数据。 它有助于降低分分片集群部署的复杂性。
您可以在配置分分片存储分片和分片的片集合数据。 它具有分片的所有属性,并分片配置服务器。
确认使用配置分片
您可以通过使用以下方法之一来确认分片集群是否使用了配置分片:
运行
mongosh中的sh.isConfigShardEnabled()方法。如果sh.isConfigShardEnabled()输出包含enabled: true,则集群使用配置分片。如果输出包含enabled: false,则集群不使用配置分片。连接到 时,对 数据库运行
mongoslistShards命令,并检查输出中是否存在将admin_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命令。