我有两个服务器,每个服务器都有一个 mongo 实例。
在第一台服务器上,我将 mongo 实例设置为主要服务器,而在第二台服务器上,我将 mongo 实例设置为次要服务器。
我没有机会让另一台服务器成为仲裁者。
我怎样才能在只有两个服务器的情况下使用 mongodb?
如果主要失败,次要自动成为主要?
谢谢!
我有两个服务器,每个服务器都有一个 mongo 实例。
在第一台服务器上,我将 mongo 实例设置为主要服务器,而在第二台服务器上,我将 mongo 实例设置为次要服务器。
我没有机会让另一台服务器成为仲裁者。
我怎样才能在只有两个服务器的情况下使用 mongodb?
如果主要失败,次要自动成为主要?
谢谢!
在副本集中拥有偶数个成员不是一个好习惯,因为它会导致选举问题。In order to be elected node is required to get majority of votes. 如果您有两个成员,则需要获得两票,如果至少有一个节点关闭,这是不可能的。有几种选择:
将轻量级仲裁节点添加到第一台或第二台服务器到replicaSet,因此您将在副本集中拥有三个成员。它不会阻止您在网络分区的情况下进行恢复,但它比只有两个节点副本集要好一些。
在主从模式下使用副本集,即没有自动恢复,您可以通过设置 votes:2 来实现它。如果primary宕机,你需要重新配置replica set并为secondary设置 votes:2,然后secondary会被选为primary。因此,您可以选择手动恢复。
我怎样才能在只有两个服务器的情况下使用 mongodb?
如果您真的想走这条路,我可能会补充说这是一条非常糟糕的路,那么您可以将您的主要成员设置为没有投票,在这种情况下,在发生故障转移时唯一的投票成员将是次要成员,但是,这会导致另一个问题。如果发生辅助故障转移,您将无法选出主要成员(任何成员的故障转移都会触发选举)。
因此,即使有 2 个成员,您可以考虑一次故障转移,但您不能同时考虑两者。