我正在尝试设置高可用性主从 MySQL 复制。我计划在不同的网络上安装两台服务器,其中一台作为主服务器运行,另一台作为从服务器运行,如下所示:
A B
10.0.1.0/24 | 10.0.2.0/24
__________________________
Master -----|---> Slave
10.0.1.20 | 10.0.2.20
10.0.1.20
如果系统完全正常运行,我的应用程序服务器将连接到(并执行 mysql 写入) 。
在故障转移情况下,从服务器将被提升,而主服务器将关闭,如下所示:
A B
10.0.1.0/24 | 10.0.2.0/24
__________________________
(DOWN) | Master
10.0.1.20 | 10.0.2.20
因此,服务器A
现在已关闭并B
已升级为 MySQL 主服务器。但是,我需要我的应用服务器知道它B
已升级,并且所有未来的写入操作都应在 上进行10.0.2.20
。
对于只有一个主服务器和一个从服务器的情况,这很简单,但是如果有一个主服务器和三个从服务器,应该如何处理?PHP 应用程序如何知道要写入哪个 mysql 服务器?我需要自动升级 mysql 从服务器,并在 5 秒内完成。我无法让两台服务器使用心跳共享 VIP,因为它们位于完全不同的物理位置的两个不同网络上。
使用类似的拓扑结构通常如何处理此故障转移?
答案1
使用 keepalived、ucarp、heartbeat 或类似的东西来获得一个可以响应 php 应用程序的虚拟主 IP。