MySQL主从复制

我正在尝试设置高可用的主从MySQL复制。 我打算在不同的networking上有两台服务器,一台作为主服务器运行,另一台作为从服务器运行,如下所示:

AB 10.0.1.0/24 | 10.0.2.0/24 __________________________ Master -----|---> Slave 10.0.1.20 | 10.0.2.20 

如果系统完全运行,我的应用程序服务器将连接到(并执行mysql写入) 10.0.1.20

在故障转移的情况下,从机将被升级,主机将如此closures:

  AB 10.0.1.0/24 | 10.0.2.0/24 __________________________ (DOWN) | Master 10.0.1.20 | 10.0.2.20 

所以,服务器A现在已经closures了,而且B已经升级到了MySQL主服务器。 但是,我需要我的应用程序服务器知道B已被提升,所有未来的写入应该是10.0.2.20

这对于只有一个主站和一个从站的情况是微不足道的,但是如果有一个主站和三个从站,应该如何处理呢? PHP应用程序如何知道要写入哪个mysql服务器? 我需要MySQL的升级自动发生在5秒钟内。 我不能让两台服务器使用心跳信号共享一个VIP,因为它们位于完全不同物理位置的两个不同的networking上。

这种故障转移通常如何处理类似的拓扑结构?

使用keepalived,ucarp,心跳或类似的东西有一个虚拟主IP,将回答到PHP应用程序。