首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDb复制和故障转移

MongoDb复制和故障转移
EN

Stack Overflow用户
提问于 2018-02-08 13:58:28
回答 2查看 6.7K关注 0票数 2

我们有两台服务器可用于MongoDB数据库,在这里我们需要复制和故障转移。

案例1:

对于复制,我们将Server1设置为主复制,server2设置为secondary...All工作正常。

期望:当server1下降时,server2仍然是次要的,它不是次要的automatically..it。因此,是否有可能server2将自动成为主要。

案例2: MongoDB复制必须有3台服务器,这样当server1下降时,server2将自动成为主服务器,server3将保持次要地位。(这个很好)

那么,如果我们只有两个服务器,有什么建议吗??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-09 03:07:37

当server1下降时,不是次要的server2仍然是次要的automatically..it。因此,是否有可能server2将自动成为主要。

在一个2节点的复制集中,没有。

我是否需要3台服务器强制进行MongoDB复制,以便当server1下降时,server2将自动成为主服务器,而server3将保持次要状态。

是。

MongoDB副本集旨在提供高可用性和冗余性。为了实现这一点,复制集将有一个主节点(该节点将被写入)和第二个节点(如果主节点发生了什么事情,该节点可以接管)。

为了实现这一点,MongoDB使用了一种投票机制,节点必须获得多数票才能成为主节点。脱机节点将不投票。

因此,在具有3个节点的副本集中,您可以脱机拥有一个节点,但仍然有一个主节点。在5个节点设置中,可以有2个脱机节点,等等。

这个设计是为了防止网络分区造成的所谓的“分裂大脑”场景,在这种情况下,你有两个主服务器,两个应用程序同时写到两个主服务器。一旦分区清除,就不可能知道哪一个主体包含正确的数据。为了防止这种情况,MongoDB将不允许写操作,而是保护数据的一致性。

如果您只有两个包含数据的节点,可以使用仲裁节点。但是,请记住,与仲裁者一起工作有一些注意事项,例如使用w:majority编写(这是本次讨论的非主题,但请随时创建有关此问题的新问题)。

票数 6
EN

Stack Overflow用户

发布于 2018-02-08 14:35:41

使用2台服务器,您还可以通过设置

次级的优先级为0

https://docs.mongodb.com/manual/core/replica-set-priority-0-member/#replica-set-secondary-only-members。在这种情况下,如果主服务器关闭,您将无法使用。因为我认为你不想要可用性,因为你不希望你的中学永远成为主要的。我的解决方案应该对你有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48687257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档