Php MySQL复制-写入中间服务器会破坏它

Php MySQL复制-写入中间服务器会破坏它,php,mysql,Php,Mysql,我有这样的拓扑结构: A->B->C 复制是单向的。Binlogs的格式类型为“行”。服务器A是最终主机,正在进行读/写操作。服务器B从A读取binlogs,但不向本地数据库写入任何内容。服务器C从服务器B读取binlogs,但应用程序也尝试对其进行读/写操作。现在我知道这充满了潜在的灾难性问题,但我将选择一个问题来解决。这是一个将数据迁移到另一台服务器的临时解决方案,当所有内容都指向C时,两端都需要在短时间内可用 假设服务器A和服务器C独立处理队列中的一些记录。完成后,将从队列表中删除队列记录

我有这样的拓扑结构:

A->B->C

复制是单向的。Binlogs的格式类型为“行”。服务器A是最终主机,正在进行读/写操作。服务器B从A读取binlogs,但不向本地数据库写入任何内容。服务器C从服务器B读取binlogs,但应用程序也尝试对其进行读/写操作。现在我知道这充满了潜在的灾难性问题,但我将选择一个问题来解决。这是一个将数据迁移到另一台服务器的临时解决方案,当所有内容都指向C时,两端都需要在短时间内可用

假设服务器A和服务器C独立处理队列中的一些记录。完成后,将从队列表中删除队列记录。服务器A的记录复制到C而没有问题。服务器C处理记录并删除它们。现在,服务器A尝试处理这些相同的记录并删除它们

binlog现在引用服务器C上不再存在的要删除的行,复制中断

我想切换到binlog格式“MIXED”会有所帮助。我认为更好的解决方案是使每台服务器的进程队列记录只适用于该服务器,但应用程序还没有为此而构建


binlog格式混合是否是这里的灵丹妙药

不能在非主服务器的任何服务器上执行任何插入、更新或删除操作。否则,您将失去一致性,来自binlog的查询可能会失败,然后复制将停止。谢谢@Sammitch。有时候,真相令人伤心。我想这意味着复制只对读取和拥有热备份服务器有用。这些服务器都是MySQL的主要版本吗?@Michael sqlbot实际上,不是。a是5.5,B是5.1,C是5.5。这是一个很好的观点。现在假设我们使用主复制。。问题没有好转。假设服务器A和B是主服务器。断开它们之间的网络链接。从服务器a删除一行。从服务器B删除同一行。重新建立网络链接。复制已中断,因为读取二进制日志时,各方引用的行将不存在,复制将停止。。。正当