gpt4 book ai didi

MongoDB ReplicaSet - 当只剩下 PRIMARY 时,PRIMARY 角色降为 SECONDARY

转载 作者:可可西里 更新时间:2023-11-01 09:18:16 35 4
gpt4 key购买 nike

我正在研究使用 MongoDB ReplicaSet 实现高可用性。

但是刚刚发现在3个节点的ReplicaSet中,如果PRIMARY mongod是唯一剩下的(也就是另外2个mongod实例死亡或者被关闭),然后在几秒后它切换角色到SECONDARY 并不再接受写入。这使得副本集的值(value)低于单个实例。

我知道并理解 PRIMARY 选举,但是 PRIMARY 角色被固定到一个服务器(通过使用 priority 设置为 10)和(例如由于网络问题)其他服务器成为无法访问,为什么主服务器就放弃了?!

在 Windows (mongodb-win32-x86_64-2008plus-2.4.8) 和 Linux (CentOS) 上使用 2.4.8 以及在 Linux 上使用 2.0.x 进行测试

赏金开始:

如果副本集在 PRIMARY 感到孤独时放弃,有什么替代方案可以确保 100% 的可用性?或者可能需要针对该案例进行特殊配置。当前的实现使得 ReplicaSet 在出现网络问题时变得脆弱。

更新:

唉,我之前没有说过#3 宕机的场景(剩下 PRIMARY 和 SECONDARY)过了一会儿,SECONDARY 下降了。然后 PRIMARY 真的只是“放弃”,因为已经知道 #3 有一段时间不可用了。这实际上是在我的测试环境中测试的。

var rsconfig = {"_id":"rs4","members":[{"_id":0,"host":"localhost:27041","priority":10},{"_id":1,"host":"localhost:27042"},{"_id":2,"host":"localhost:27043","arbiterOnly":true}]}
printjson(rsconfig)
rs.initiate(rsconfig)

我们最初想把 SECONDARY 和#3(也就是 ARBITER)放在同一台服务器上,但是由于标题的问题,我们不能使用这样的配置。

感谢 Alan Spencer 首先解释了 MongoDB 采用的逻辑。

最佳答案

这是预料之中的,因为大多数成员都关闭了 MongoDB 不假定最后剩下的成员是一致的。

当您拥有大多数成员时,有几个选项:http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

关于MongoDB ReplicaSet - 当只剩下 PRIMARY 时,PRIMARY 角色降为 SECONDARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20001056/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com