2015-04-02 41 views
0

我在Ubuntu实例上运行MySQL作为数据库。我正在使用MySQL Master-Slave复制,其中主设备的更改将写入从设备,从设备的更改将不会反映在主设备上。没关系。我正在使用HAProxy负载均衡器将所有请求发送到主MySQL实例的MySQL实例前面。如果主MySQL实例处于关闭状态,则MySQL实例将充当主服务器,并且HAProxy将发送所有请求以提供服务。主动 - 被动场景。Master关闭时的MySQL主从复制

HAProxy - 192.168.A.ABC 
MySQL Master - 192.168.A.ABD 
MySQL Slave - 192.168.A.ABE 

让我们假设MySQL master(192.168.A.ABD)关闭。现在所有的请求都会被HAProxy发送到MySQL slave(192.168.A.ABE),现在他现在充当主MySQL服务器。

我的问题是

  • 当原来的主MySQL实例(192.168.A.ABD)是会发生什么情况?
  • 将写入新的MySQL主站(192.168.A.ABE)的更改再次复制到原始主站(192.168.A.ABD)吗?

我该如何解决这种情况?

回答

1

首先我要说,我从来没有直接使用HA代理,以便续评论说。

但是,在您当前的设置中,Master(ABD)将不同步,并且不会赶上。你将不得不重建使用mysqlDump或类似的工具。

你将需要的是一个Master < > Master设置(而不是Master > Slave),它使您可以写入任一数据库并使其反映在另一个数据库中。这听起来并不像听起来那么直截了当。

假设你已经有了master > slave设置,以及它们是同步的

在硕士(ABD)要添加:

auto_increment_increment=2 
auto_increment_offset=1 
log-slave-updates 

上的从(ABE)地址:

auto_increment_increment=2 
auto_increment_offset=2 
log-slave-updates 

您的my.cnf文件。重新启动数据库。这将有助于防止Duplicate Key Errors。 (注:那log-slave-updates不是严格要求,但更容易在未来添加另一个从站)

接下来,您想告诉主(ABD)从从站(ABE)复制。

根据MySQL的版本以及您是否使用GTID等,确切的过程略有不同。但基本上,您将在主设备上发出CHANGE MASTER声明,以便从从设备复制。

你走吧。您可能希望避免同时写入两者,因为这会打开整个其他水壶。但是,如果主设备出现故障,您可以将写入切换到从设备,当主设备恢复时,它只会开始复制丢失的数据。

+0

感谢您解决困惑 – Techie 2015-04-02 15:12:19

-1

我正在考虑你的情况

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

你不能直接添加主系统。要在系统中添加主设备,您需要执行以下步骤: 1)当主设备启动时,您可以将其添加为从设备。所以现在发生这种情况

Master - 192.168.A.ABE 
Slave - 192.168.A.ABD 

2)Then Then U can put master down。意思是你可以把192.168.A.ABD下来 3)然后再次添加这个作为奴隶。所以,在此之后,你会得到下面scenarion

Master - 192.168.A.ABD 
Slave - 192.168.A.ABE 

您可以参考以下链接 https://dev.mysql.com/doc/refman/5.5/en/replication-solutions-switch.html

+0

请再次阅读问题 – Techie 2015-04-02 14:08:39