文档菜单
文档首页
/
MongoDB 手册
/ /

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

本页内容

  • 关于此任务
  • 步骤
  • 了解更多信息

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

如果你的集群有3个或更少的分片,你可以考虑使用配置分片。

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

你可以在以下环境中执行此任务

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

注意

此任务在Atlas共享层或Atlas无服务器上不可用。

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.clusterRoleconfigsvr

    • replication.replSetName 为配置服务器副本集的期望名称。

    • net.bindIp 选项为以下之一

      • 主机名/IP 地址。

      • 远程客户端可以使用的主机名或 IP 地址的逗号分隔列表,以连接到实例(包括配置服务器副本集的其他成员以及分片集群的其他成员)。

      注意

      在将您的实例绑定到公共可访问 IP 地址之前,您必须确保集群不受未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少,请考虑启用身份验证强化网络基础设施

    • 根据您的部署情况适当设置附加配置,例如 storage.dbPathnet.port。有关配置文件的更多信息,请参阅配置选项。

    使用 --config 选项将配置文件路径设置为启动 mongod

    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。指定 mongos 运行的 hostport

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

此示例配置一个专用配置服务器以运行为配置分片

db.adminCommand( {
transitionFromDedicatedConfigServer: 1
} )
5

为了确认分片集群现在使用配置分片,运行 serverStatus 命令来检查 configServerInShardCache 状态返回 true

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

返回

将副本集转换为具有嵌入式配置服务器的分片集群