Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
主机关闭时的MySQL主从复制_Mysql_Database_Ubuntu_Replication_Haproxy - Fatal编程技术网

主机关闭时的MySQL主从复制

主机关闭时的MySQL主从复制,mysql,database,ubuntu,replication,haproxy,Mysql,Database,Ubuntu,Replication,Haproxy,我在Ubuntu实例上运行MySQL作为数据库。我使用的是MySQL主从复制,其中主服务器的更改将写入从服务器,而从服务器的更改不会反映在主服务器上。那很好。我使用HAProxy负载平衡器来前置MySQL实例,所有请求都将发送到主MySQL实例。如果主MySQL实例关闭,则从MySQL实例将充当主实例,HAProxy将向salve发送所有请求。主动-被动情景 HAProxy - 192.168.A.ABC MySQL Master - 192.168.A.ABD MySQL Slave - 19

我在Ubuntu实例上运行MySQL作为数据库。我使用的是MySQL主从复制,其中主服务器的更改将写入从服务器,而从服务器的更改不会反映在主服务器上。那很好。我使用HAProxy负载平衡器来前置MySQL实例,所有请求都将发送到主MySQL实例。如果主MySQL实例关闭,则从MySQL实例将充当主实例,HAProxy将向salve发送所有请求。主动-被动情景

HAProxy - 192.168.A.ABC
MySQL Master - 192.168.A.ABD
MySQL Slave - 192.168.A.ABE
让我们假设MySQL master192.168.A.ABD已关闭。现在所有的请求都将由HAProxy发送到MySQL slave192.168.A.ABE,现在他在那里充当MySQL主服务器

我的问题是

当原始主MySQL实例192.168.A.ABD启动时会发生什么? 写入新MySQL master 192.168.A.ABE的更改是否会再次复制到原始master192.168.A.ABD?
我应该如何解决这种情况

我在考虑你的情况

Master - 192.168.A.ABD
Slave - 192.168.A.ABE
不能在系统中直接添加主控形状。要在系统中添加主机,您需要执行以下步骤: 1当主设备启动时,您可以将其添加为从设备。所以现在这种情况发生了

Master - 192.168.A.ABE
Slave - 192.168.A.ABD
那么现在你可以放下师父了。意味着你可以把192.168.A.ABD放下 3然后再次将其添加为从属。因此,在这之后,你将得到下面的场景

Master - 192.168.A.ABD
Slave - 192.168.A.ABE
你可以参考这个链接

首先,我应该说我从未使用过HA代理,所以不要直接对此发表评论

但是,在您当前的设置中,主ABD将不同步,并且无法跟上。您必须使用mysqlDump或类似的工具重新构建它

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

假设您已经有了master>slave设置,并且它们是同步的

在要添加的主ABD上:

auto_increment_increment=2
auto_increment_offset=1
log-slave-updates
在附件上添加:

auto_increment_increment=2
auto_increment_offset=2
log-slave-updates
到您的my.cnf文件。重新启动数据库。这将有助于防止重复的密钥错误。n、 b.不严格要求日志从机更新,但这样可以更容易地在将来添加另一个从机

接下来,您要告诉主ABD从从从ABE复制

根据MySQL的版本以及是否使用GTID等,具体过程略有不同。但基本上,您将在主服务器上发出一个changemaster语句,以便它从从服务器复制

然后你就走了。你可能不想同时给这两个人写信,因为这会带来另一大堆麻烦。但是,如果主服务器宕机,您可以将写操作切换到从服务器,当主服务器恢复时,它将开始复制丢失的数据