两个数据中心之间失去连接

Lost connection between two data centers

目前我正在为这个问题而苦恼。

假设我有一个 MongoDB 实例,作为副本集拆分为欧洲(包含主要数据中心)和美国的两个数据中心。每个数据中心都包含每个需要的组件(mongod、mongos、rcrs)。甚至后端和前端也在两个数据中心分开。

如果欧洲和美国之间的联系中断了,现在会发生什么?美国的 mongo 实例会选择一个新的主实例并继续自行运行吗?如果是这种情况,如果欧盟和我们之间的连接是固定的,会发生什么?

这在很大程度上取决于您如何设置副本集。如果连接断开,则可以先达到多数的数据中心将选举出主要数据中心。我的意思是,如果您在美国的数据中心只有 2 个成员,而 3 个成员在欧洲,并且假设这只是网络故障并且系统实际上没有停机,那么欧洲数据中心可以达到多数,因为它有 3 个成员,所以主要会在欧洲,因为剩下的 2 名成员不会占多数。即使在美国有一个成为主要的,它也会在发现它无法达到大多数时立即下台。以始终具有主分区的方式设计副本集分区总是更好。

当整个系列回来时,会有很多东西在起作用,比如 - 最新数据、优先级、隐藏成员等。如果说美国的那个有优先级,但因为它没有最新数据,它不能立即成为主要的。只有在同步到最新记录后,它才会成为主要记录。

希望这能有所帮助。