MySQL组复制 – 是否支持断开节点的只读操作?

请考虑以下一些组织的拓扑结构,由4个分支(A,B,C,D)组成。 所有分支机构位于不同的地理位置,并与VPN相连:

在这里输入图像说明

这个组织使用基于MySQL的解决scheme。 为了提供高可用性和提高可伸缩性,我考虑使用MySQL组复制 。 我打算在每个分支中放入一个数据库节点,所有的“读取”操作将从本地节点执行,而“写入”操作将在“主”上执行。

我查了几次MySQL文档,但是我找不到这个问题的明确答案:在某些分支的VPN断开的情况下(例如,数据库将不再连接到组),该分支是否仍然能够执行“读取“针对本地数据库节点的操作?

我查了MySQL的官方文档,并没有find你的问题的答案,然后我GOOGLE了更多的信息,发现这篇文章 。 所以根据这篇文章,不可能从数据库读取,当没有连接到主。

当你启动一个新的服务器时,它将尝试从其他组成员中获取所有缺失的数据。 它将使用configuration的访问凭证并连接到另一个成员,以获取缺less的组事务。 在此期间,其状态将显示为“RECOVERING”,在此阶段,您不应在此服务器上执行任何操作。

但谷歌多一点,我发现你在这篇文章中的信息 。

注意,当一个成员自愿离开时,它首先启动一个dynamic组重新configuration。 这会触发一个程序,所有成员必须在没有离开服务器的情况下就新视图达成一致。 但是,如果一个成员不由自主地(例如意外停止或者networking连接断开)故障检测机制实现这个事实,并且提出了一个组的重新configuration,这个没有失败的成员。 如前所述,这需要该组中大多数服务器的同意。 如果该组无法达成协议(例如,以不会使大多数服务器联机的方式进行分区),则系统将无法dynamic更改configuration,因此,可以阻止分组,大脑的情况。 最终,这意味着pipe理员需要介入并解决这个问题。

这意味着,如果你的集群松动一个节点,它将工作,但“松散”的节点将被阻止,以防止裂脑的情况。

我认为在你的情况下更好地使用标准的主从复制,使用这种types的复制,即使没有networking连接,也可以从从设备读取数据。

我问MySql团队,并收到答案,如果节点断开,“读”操作将从本地节点可用。