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