从MongoDB 8.0开始,您可以配置配置服务器来存储除通常的分分片集群元数据数据之外的应用程序数据。 同时提供配置服务器和分片服务器功能的 mongod节点称为配置分片。 作为不带分分片服务器功能的独立运行--configsvr运行的mongod节点称为专用配置服务器。
关于此任务
如果集群的分片数不超过三个,则可以考虑使用配置分片片。
有关详细信息,请参阅配置分片使用案例。
兼容性
您可以对以下环境中托管的部署执行此任务:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
此任务在MongoDB Atlas免费或灵活层级上不可用。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
步骤
创建配置服务器副本集。
对于生产部署,请部署至少包含三个成员的配置服务器副本集。
注意
配置服务器副本集不得使用与任意分片副本集相同的名称。
对于本教程,配置服务器副本集成员与以下主机有关:
配置服务器副本集节点 | 主机名 |
|---|---|
成员 0 |
|
成员 1 |
|
成员 2 |
|
启动配置服务器副本集的每个节点。
启动每个
mongod时,使用配置文件或命令行指定mongod设置。如果使用配置文件,请设置:
sharding: clusterRole: configsvr replication: replSetName: <replica set name> net: bindIp: localhost,<hostname(s)|ip address(es)> 将
sharding.clusterRole更改为configsvr。replication.replSetName为配置服务器副本集的所需名称。net.bindIp选项为以下之一:主机名/IP解决。
以逗号分隔的主机名或 IP 地址列表,远程客户端可使用这些列表连接到实例(包括配置服务器副本集的其他成员以及分分片集群的其他成员)。
警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
适合您部署的其他设置,如
storage.dbPath和net.port。有关配置文件的更多信息,请参阅配置选项。
启动
mongod,并将--config选项设立为配置文件路径。mongod --config <path-to-config-file> 如果使用命令行选项,请使用
--configsvr、--replSet、--bind_ip和其他适合部署的选项启动mongod。 示例:mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)> 警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
有关初创企业参数的更多信息,请参阅
mongod参考页面。将mongosh连接到配置服务器成员之一。
mongosh --host <hostname> --port <port> 启动新副本集。
从
mongosh运行rs.initiate()方法。rs.initiate()可以采用可选的副本集配置文档。 在副本集配置文档中,包括:将
_id设置为在replication.replSetName或--replSet选项中指定的副本集名称。对于配置服务器副本集,
configsvr字段设置为true。members数组,为副本集的每个节点包含一个文档。
重要
仅在副本集的一个
mongod实例上运行rs.initiate()。rs.initiate( { _id: "myReplSet", configsvr: true, members: [ { _id : 0, host : "cfg1.example.net:27019" }, { _id : 1, host : "cfg2.example.net:27019" }, { _id : 2, host : "cfg3.example.net:27019" } ] } ) 有关副本集配置文档的更多信息,请参阅自管理副本集配置。
为分片集群启动mongos 。
使用配置文件或命令行参数启动 mongos,从而指定配置服务器。
如果使用配置文件,请将 sharding.configDB 设置为配置服务器副本集名称以及至少一个采用 <replSetName>/<host:port> 格式的副本集节点。
警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
sharding: configDB: <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 net: bindIp: localhost,<hostname(s)|ip address(es)>
启动 mongos,同时指定 --config 选项和配置文件的路径。
mongos --config <path-to-config>
有关配置文件的更多信息,请参阅配置选项。
如果使用命令行参数,请启动mongos并指定--configdb 、 --bind_ip和其他适合部署的选项。 示例:
警告
将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证和强化网络基础设施。
mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019,cfg3.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>
包括适合您部署的任何其他选项。
点,您的分分片集群由mongos和配置服务器组成。 您现在可以使用mongosh连接到分分片集群。
确认集群使用配置分片
要确认分分片集群现在使用配置分分片,请运行serverStatus 命令以检查configServerInShardCache 状态是否返回true :
db.adminCommand( { serverStatus: 1, } ).shardingStatistics.configServerInShardCache
true