我有两台物理服务器。 我使用命令将一些数据库从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已在服务器2上包含Read_Master_Log_Pos,但无论如何都没有在此操作期间进行任何数据更改。
然后在两台服务器上启动slave。 SHOW SLAVE STATUS在server1和server2上看起来都很好。
问题: 每当在任何server1或server2上更改数据时,数据都会出现在服务器的binlog和其他服务器的mysqld-relay-bin日志中,但不会出现在slave数据库中。 Read_Master_Log_Pos更改但不更改slave数据库中的数据。 知道为什么吗?
答案 0 :(得分:1)
答案是:它实际上是因为replicate_do_db betwin数据库名称中的昏迷。解决方案是在my.cnf中为每个要复制的数据库创建replicate_do_db语句