我尝试安装两个 mongo 节点,每个节点位于不同的位置,延迟较低。架构应该是:
一个节点位于 DC,另一个节点位于 DR。假设一次只有一个节点是主节点(DC 中的节点),如果 DC 宕机,DR 中的节点可以成为主节点(可以手动将其提议为主节点)。
当 DR 中的节点被手动更改为主节点时,我可以有时间再次启动 DC 中的节点,等待数据同步到 DC,然后降级 DR 中的节点,再次将 DC 中的节点更改为主节点。
我不确定副本集是否可以应用于此。请帮我解决这个问题。
谢谢。
我尝试安装两个 mongo 节点,每个节点位于不同的位置,延迟较低。架构应该是:
一个节点位于 DC,另一个节点位于 DR。假设一次只有一个节点是主节点(DC 中的节点),如果 DC 宕机,DR 中的节点可以成为主节点(可以手动将其提议为主节点)。
当 DR 中的节点被手动更改为主节点时,我可以有时间再次启动 DC 中的节点,等待数据同步到 DC,然后降级 DR 中的节点,再次将 DC 中的节点更改为主节点。
我不确定副本集是否可以应用于此。请帮我解决这个问题。
谢谢。
仅当大多数人可达时,MongoDB 才能选举 PRIMARY。两个节点中的一个不是多数节点。因此,当一个数据库离线时,另一个数据库无法成为主数据库。
在这种情况下,您可以做的是连接到可用的 MonogDB 并将其他成员修改为
{priority: 0, votes: 0}
. 那么“可以当选为PRIMARY的成员”的多数为1,则当选。当然,这不会是自动故障转移。另一种选择是部署仲裁者。MongoDB ARBITER 是一个非常轻的进程,它几乎不消耗任何处理能力并且不存储任何数据。
另请参阅 https://stackoverflow.com/questions/69658590/mongoclient-to-connect-to-multiple-hosts-to-handle-failover/69666511#69666511