Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

使用配置分片启动分片集群

在此页面上

  • 关于此任务
  • 步骤
  • 了解详情

从MongoDB 8.0开始,您可以配置配置服务器来存储除通常的分分片集群元数据数据之外的应用程序数据。 同时提供配置服务器和分片服务器功能的 mongod节点称为配置分片。 作为不带分分片服务器功能的独立运行--configsvr运行的mongod节点称为专用配置服务器。

如果集群的分片数不超过三个,则可以考虑使用配置分片片。

有关详细信息,请参阅配置分片使用案例。

您可以对以下环境中托管的部署执行此任务:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

此任务在Atlas共享层或Atlas Serverless 上不可用。

1

对于生产部署,请部署至少包含三个成员的配置服务器副本集。

注意

配置服务器副本集不得使用与任意分片副本集相同的名称。

对于本教程,配置服务器副本集成员与以下主机有关:

配置服务器副本集节点
主机名
成员 0
cfg1.example.net
成员 1
cfg2.example.net
成员 2
cfg3.example.net
  1. 启动配置服务器副本集的每个节点。

    启动每个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.dbPathnet.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 参考页面。

  2. 将mongosh连接到配置服务器成员之一。

    mongosh --host <hostname> --port <port>
  3. 启动新副本集。

    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" }
    ]
    }
    )

    有关副本集配置文档的更多信息,请参阅自管理副本集配置

2

使用配置文件或命令行参数启动 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连接到分分片集群。

3

mongosh连接到mongos 。 指定host portmongos和运行 的 :

mongosh --host <hostname> --port <port>
4

此示例将专用配置服务器配置为作为配置分片运行:

db.adminCommand( {
transitionFromDedicatedConfigServer: 1
} )
5

要确认分分片集群现在使用配置分分片,请运行serverStatus 命令以检查configServerInShardCache 状态是否返回true

db.adminCommand( {
serverStatus: 1,
} ).shardingStatistics.configServerInShardCache
true

后退

使用嵌入式配置服务器将副本集转换为分片集群