MongoDB区域分片实现报错:未启用--shardsvr分片服务
解决MongoDB Zone分片时的NoShardingEnabled错误
兄弟,这个报错其实说得明明白白:你的分片节点没以**分片服务器(shardsvr)**的身份启动,所以MongoDB直接拒绝了分片相关的命令。咱们一步步来搞定它:
第一步:检查分片节点的启动配置
先确认你的两个分片mongod实例,是不是启动时漏掉了--shardsvr参数,或者配置文件里没设置对应的集群角色:
- 如果是命令行启动,正确的启动命令应该长这样:
mongod --shardsvr --dbpath /你的分片数据路径 --port 27018 --replSet shard1
(shard1是你的分片副本集名称,端口默认27018可自定义,但--shardsvr必须加)
- 如果是用配置文件启动,配置文件里必须包含这一项:
sharding: clusterRole: "shardsvr"
第二步:停止当前的分片mongod实例
先把有问题的分片节点停掉,用mongosh连接进去执行:
use admin db.shutdownServer()
或者用系统命令终止进程(注意别误杀其他MongoDB进程)。
第三步:重新启动分片节点
用加了--shardsvr参数的命令,或者修改后的配置文件来启动分片mongod实例。比如用配置文件启动:
mongod -f /你的分片配置文件路径.yaml
第四步:重试Zone分片操作
等分片节点重新加入集群后,再去执行之前的Zone配置、chunk移动操作,应该就不会再报这个错误了。
额外提醒:如果你的分片是副本集,要确保副本集里的所有节点都配置了shardsvr角色,不然后续可能还会出现其他异常。
内容的提问来源于stack exchange,提问作者Ankit Jani
相关产品推荐
相关产品推荐

