mysql master-master不能复制

我在两台服务器(db1和db2)上build立master-master mysql复制。 我开始设置db2作为db1的奴隶,并且工作正常。 但是,当我将db1设置为db2的从属服务器时,它不会复制。

表面看来一切都很好,但数据并没有复制。 在任何一个错误日志中都没有错误。 从站状态正在更新bin日志位置。 我已经使用mysqlbinlog来检查db2上的二进制日志和db1上的中继日志,并且所有的查询都在那里,但是没有被执行到db1。

两台服务器上的“显示从站状态”显示从站io和sql线程都是“是”,并且由sql线程更新了中继日志的位置。

同样在两台服务器上:

>echo "show processlist" | mysql | grep "system user" 166819 system user NULL Connect 3655 Waiting for master to send event NULL 166820 system user NULL Connect 3507 Has read all relay log; waiting for the slave I/O thread to update it NULL 

db1的相关configuration:

 server-id = 1 log-slave-updates replicate-same-server-id = 0 auto_increment_increment = 4 auto_increment_offset = 1 master-host = db2 master-port = 3306 master-user = slaveuser master-password = *** skip-slave-start sync_binlog = 1 binlog-ignore-db=mysql 

configurationdb2

 server-id = 2 log-slave-updates replicate-same-server-id = 0 auto_increment_increment = 4 auto_increment_offset = 2 master-host = db1 master-port = 3306 master-user = slaveuser master-password = *** sync_binlog = 1 relay-log=mysql-relay-bin binlog-ignore-db=mysql 

我还能找什么来确保db1执行db2中的查询?

你的configuration看起来不完整 – 你有两个configuration中的“log-bin = mysql-master-bin”(原文如此)吗? 一般来说,从主机复制到从机(任一方向)如下所示:

mysql – > master binlog – >(network to slave) – > slave relaylog – > slave

你需要在两个方向上做到这一点; 如果你没有在db2上logging事务,那么它没有任何东西可以发送回db1。 所以基本上,确保你在两台服务器上都设置了log-bin和relay-log。

你不需要log-slave-updates,用于链接(master – > slave – > slave)。 如果您将双主configuration中的第三个从设备连接到备份设备上,这将非常有用。 因为你永远不会发送db1-> db2-> db1(坏循环),这是无用的日志logging。

我们将两台机器上的mysql服务器升级到5.0.91,现在就可以运行了。 显然5.0.32和5.0.33是相当麻烦的,并在MySQL复制开始平滑5.0.70左右。