分片群集的每个成员都必须能够连接到群集中的所有其他成员。这包括所有分片和配置服务器。确保网络和安全系统(包括所有接口和防火墙)都允许这些连接。
小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片群集成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
如果将其中localhost
一个IP地址或其中一个IP地址用作任何主机标识符的主机名部分,则必须将该标识符用作群集中任何其他MongoDB组件的主机设置。
例如,该sh.addShard()
方法采用host
目标分片的主机名的参数。如果设置host
为
localhost
,则必须localhost
用作集群中所有其他分片的主机。
以下步骤将部署配置服务器副本集。
对于生产部署,请部署至少具有三个成员的配置服务器副本集。出于测试目的,您可以创建单成员副本集。
注意
配置服务器副本集不得使用与任何分片副本集相同的名称。
对于本教程,配置服务器副本集成员与以下主机相关联:
配置服务器副本集成员 | 主机名 |
---|---|
会员0 | cfg1.example.net |
成员1 | cfg2.example.net |
成员2 | cfg3.example.net |
启动每个时 mongod
,mongod
通过配置文件或命令行指定
设置。
如果使用配置文件,请设置:
sharding.clusterRole
到configsvr
,
replication.replSetName
到配置服务器副本集的所需名称,
net.bindIp
远程客户端(包括配置服务器副本集的其他成员以及分片群集的其他成员)可以用来连接到实例的主机名/ IP地址或主机名或IP地址的逗号分隔列表的选项。
适用于您的部署的其他设置,例如
storage.dbPath
和net.port
。有关配置文件的更多信息,请参阅配置选项。
mongod
使用--config
设置为配置文件路径的选项开始。
从mongo
外壳运行该rs.initiate()
方法。
rs.initiate()
可以获取可选的副本集配置文档。在
副本集配置文档中,包括:
_id
组到副本集名称在任一指定replication.replSetName
或--replSet
选项。configsvr
字段true
。members
每个副本集中每个成员都有一个文档的数组。重要
仅在副本集的一个实例rs.initiate()
上运行。
mongod
启动并启动配置服务器副本集(CSRS)后,继续创建分片副本集。
对于生产部署,请使用至少包含三个成员的副本集。出于测试目的,您可以创建单成员副本集。
注意
分片副本集不得使用与配置服务器副本集相同的名称。
对于每个分片,使用以下步骤创建分片副本集:
启动每个时 mongod
,mongod
通过配置文件或命令行指定
设置。
如果使用配置文件,请设置:
replication.replSetName
到所需的副本集名称,
sharding.clusterRole
的选项shardsvr
,
net.bindIp
ip的选项或逗号分隔的ip列表,远程客户端(包括配置服务器副本集的其他成员以及分片群集的其他成员)可以使用ip连接到实例。
适用于您的部署的其他设置,例如
storage.dbPath
和net.port
。有关配置文件的更多信息,请参阅配置选项。
mongod
使用--config
设置为配置文件路径的选项开始。
从mongo
外壳运行该rs.initiate()
方法。
rs.initiate()
可以获取可选的副本集配置文档。在
副本集配置文档中,包括:
_id
设置为replication.replSetName
或--replSet
选项中指定的副本集名称的字段。members
每个副本集中每个成员都有一个文档的数组。下面的示例启动一个三成员副本集。
重要
仅在副本集的一个实例rs.initiate()
上运行。
mongod
mongos
为分片群集启动¶mongos
使用配置文件或命令行参数启动a 以指定配置服务器。
如果使用配置文件,则将设置
sharding.configDB
为配置服务器副本集名称,并以<replSetName>/<host:port>
格式设置副本集的至少一个成员
。
开始mongos
指定--config
选项和配置文件的路径。
有关配置文件的更多信息,请参阅 配置选项。
在mongo
连接到的Shell中
mongos
,使用sh.addShard()
方法将每个分片添加到集群。
以下操作将单个分片副本集添加到集群:
重复这些步骤,直到群集包含所有所需的碎片。
在分片集合之前,必须为集合的数据库启用分片。对数据库启用分片并不会重新分发数据,但可以在该数据库中分片集合。
在mongo
连接到的外壳程序上
mongos
,使用sh.enableSharding()
方法在目标数据库上启用分片。在数据库上启用分片可以在数据库中分片集合。
为数据库启用分片后,MongoDB会为该数据库分配一个主分片, 其中MongoDB将所有数据存储在该数据库中。
要分片集合,请mongos
从
mongo
外壳连接到并使用sh.shardCollection()
方法。
分片和索引
如果集合已经包含数据,则必须
在分片集合之前创建一个支持
分片键的索引。如果集合为空,则MongoDB将创建索引作为的一部分
sh.shardCollection()
。
MongoDB提供了两种分片收集策略: