addShard
定义
addShard
将分分片副本集添加到分片集群。
提示
在
mongosh
中,还可以通过sh.addShard()
辅助方法运行此命令。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { addShard: "<replica_set>/<hostname><:port>", name: "<shard_name>" } )
命令字段
注意
该命令包含以下字段:
字段 | 类型 | 说明 | |
---|---|---|---|
| 字符串 | 分片副本集至少一个成员的副本集名称、主机名和端口。任何其他副本集节点主机名都必须以逗号分隔。 例如:
| |
| 字符串 | 可选。 分片的名称。 如果未指定,MongoDB 会自动提供一个唯一名称。 |
Considerations
均衡
将分片添加到分片集群时,会影响所有现有分片集合的集群分片之间的数据段平衡。负载均衡器将开始迁移数据段,以便集群实现平衡。有关更多信息,请参阅负载均衡器内部结构。
隐藏成员
DDL 操作
如果您在集群执行分片操作(修改集合的操作,例如reshardCollection
)时添加分片,则addShard
仅在并发 DDL 操作完成后才会执行。
示例
以下命令将副本集添加为分片:
use admin db.runCommand( { addShard: "repl0/mongodb3.example.net:27327"} )
警告
请勿使用localhost
作为主机名,除非您的配置服务器也在localhost
上运行。