我可以使用master中的mysql binlog作为slave上的中继日志吗?

tam*_*aha 13 mysql replication recovery mysqlbinlog

我有以下Mysql复制模式:

A(主) - > B(主/从) - > C(从)

  • 写binlog
  • B读取A的binlog应用了relaylog并写入了自己的binlog
  • C从B读取并适用.

如果由于某种原因(A-> B)复制被破坏,我可以复制A的binlog,找到哪个位置对应于B最后执行的语句并重放它.所有复制链中bin/relay日志中的事务/语句顺序是否相同?(复制使用一个线程,因此它可能是相同的顺序.)

更新:我应该问:"所有复制链中binlogs中的语句/事务的顺序是否相同?我们可以重放任何主机上的任何日志并将任何从站(c)重新命名为master(A)"似乎答案是是的".但官方确认或文档(源代码)链接尚未发布.

UPDATE2:从官方文档到innodb_support_xa:

在XA事务中启用InnoDB对两阶段提交的支持,从而导致额外的磁盘刷新以进行事务准备.XA机制在内部使用,对于打开其二进制日志并接受来自多个线程的数据更改的任何服务器都是必不可少的.如果禁用innodb_support_xa,则事务可以按照与实时数据库提交的顺序不同的顺序写入二进制日志,这可以在灾难恢复或复制从服务器上重播二进制日志时生成不同的数据.

Dav*_*ave 8

要直接回答你的问题,不.

你的拓扑:

(a)主人 - >(b)复制品 - >(c)复制品

  • A = Master,bin-log必须启用
  • B = A的副本,必须启用log_slave_updates
  • C = B的复制品

每个服务器的每个bin-log都有自己的bin-log文件名和位置,不能在服务器之间复制bin-logs.

如果您希望管理复制拓扑,移动从属服务器并进行故障转移,您应该使用以下方法之一:

  1. 带有GTID的MySQL 5.6
  2. MHA
  3. Orchestrator的

更新:

它根本不值得你根本导致mysql复制不同步并修复该问题以防止这个问题.


Zaf*_*lik 0

在正常情况下,如果您的显示从属状态显示复制(A > B)被破坏的指针,那么您应该纠正它,这样您的从属 B 就会很好,现在数据也将成功复制到从属 C 。

如果由于任何特定原因您不想使用 Slave B,并且您确定在 Slave B 复制损坏之前,B 中的所有数据都已复制到 C,并且您知道复制损坏的指针,那么您可以直接执行 binlog在从站 C 上,现在您可以使从站 C 成为主站 A 的从站,而不是主站 B 的从站。

如果问题有所不同,请详细说明。