1

我有两个物理服务器。我使用命令将一些数据库从 server1 复制到 server2:

server1$ mysqldump -u root -q -p --delete-master-logs --flush-logs --extended-insert --master-data=1 --single-transaction --databases db1 db2 db3 db4>to_server2.sql

然后像往常一样导入它们

server2$ mysql -u root -p <to_server2.sql

server2 上的 my.cnf 包括:

server-id               = 2
log_bin
binlog_format           = mixed
replicate_do_db         = db1,db2
transaction-isolation=READ-COMMITTED

server1 上的 my.cnf 包括:

server-id               = 1
log_bin
binlog_format           = mixed
replicate_do_db         = db3,db4
transaction-isolation=READ-COMMITTED

然后我在两台服务器上发出 change master 以相互指向;SHOW SLAVE STATUS 已经在 server2 上包含 Read_Master_Log_Pos,但无论如何在此操作期间没有进行任何数据更改。

然后在两台服务器上启动slave。SHOW SLAVE STATUS 在 server1 和 server2 上看起来都不错。

问题:每当 server1 或 server2 上的数据发生更改时,服务器的 binlog 和其他服务器的 mysqld-relay-bin 日志中都会出现数据,但不会出现在从数据库中。Read_Master_Log_Pos 发生变化,但从库中的数据没有变化。知道为什么吗?

4

1 回答 1

1

答案是:这确实是因为replicate_do_db 和数据库名称之间的逗号。解决方案是在 my.cnf 中为要复制的每个数据库创建 replicate_do_db 语句

于 2011-01-20T23:14:18.687 回答