mongodb高可用宕机后再重启报错not master and slaveOk=false,code=13435,codeName=NotMasterNoSlaveOk

发布问题 回首页

mongodb高可用宕机后再重启报错not master and slaveOk=false,code=13435,codeName=NotMasterNoSlaveOk

★ 1 1 person favorited this question

服务器01
mongos
shard server1节点
shard server2节点
shard server3仲裁

服务器02
mongos
shard server1节点
shard server2仲裁
shard server3节点

服务器03
mongos
shard server1仲裁
shard server2节点
shard server3节点

自己搭建了一个副本集加分片的3*3的mongodb集群。测试是否是高可用
搭建完毕后查询每个副本集状态正常。
然后特意关闭服务器01上的服务,模拟当某个机器关闭后是否高可用、
killall mongod
killall mongos
发现集群仍然能使用
然后重启服务器01上的mongod和mongos
数据库依然正常
但是查询状态的时候,发现查询状态和刚开始的搭建的查询状态不太一样。粘贴如下:
2017-11-20T19:45:13.771+0800 E QUERY [thread1] Error: error: {
“ok” : 0,
“errmsg” : “not master and slaveOk=false”,
“code” : 13435,
“codeName” : “NotMasterNoSlaveOk”
} :
问题一:为什么挂机后重启的状态发生了改变呢?

rex 在大约 之前评论了回答
  • 提问于
  • 回答数1 个
  • 浏览 4 次
  • 最新活跃于

1 个回答1

1
TJ answered about

这个是正常的。mongodb的主从节点角色不是固定的。主节点宕机后重启就会变成从节点,除非你手动指定某些节点的优先级别。

rex 在大约 之前评论了回答
1 Comment
  • 您好,为什么我在其他节点查询状态都是13435这个状态呢?如果重启后主变成了重,那另外一个除了选举的节点就会变成主。但是在那里查到的也是这个错误 -

问题状态

  • Open

类别

2个参与者

mongodb高可用宕机后再重启报错not master and slaveOk=false,code=13435,codeName=NotMasterNoSlaveOk》有10个想法

  1. 谢答,但个人认为不准确,1.mr我觉得不适合实时计算,更贴合后期数据统计需求,2.aggregate必须支持自定义函数,就好像你定义个abc(1,2)一样肯定是计算了,现在的问题是abc(1,2)这个参数我想传个字段进去,比如abc($qty,2)这样….他就不好使了….难道大家没有在aggregate中用字段进行计算的经历么?

发表评论