我们有两台服务器可用于MongoDB数据库,在这里我们需要复制和故障转移。
案例1:
对于复制,我们将Server1设置为主复制,server2设置为secondary...All工作正常。
期望:当server1下降时,server2仍然是次要的,它不是次要的automatically..it。因此,是否有可能server2将自动成为主要。
案例2: MongoDB复制必须有3台服务器,这样当server1下降时,server2将自动成为主服务器,server3将保持次要地位。(这个很好)
那么,如果我们只有两个服务器,有什么建议吗??
发布于 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编写(这是本次讨论的非主题,但请随时创建有关此问题的新问题)。
发布于 2018-02-08 14:35:41
使用2台服务器,您还可以通过设置
次级的优先级为0
https://docs.mongodb.com/manual/core/replica-set-priority-0-member/#replica-set-secondary-only-members。在这种情况下,如果主服务器关闭,您将无法使用。因为我认为你不想要可用性,因为你不希望你的中学永远成为主要的。我的解决方案应该对你有用。
https://stackoverflow.com/questions/48687257
复制相似问题