设置一个MySQL复制,但新的数据不会更新

我已经为现有的数据库服务器设置了MySQL复制。 设置看起来不错,但是在启动复制之后,数据库永远不会在从属服务器上更新。 两台服务器都使用CentOS 5.7 64位。 他们有足够的磁盘空间。

从MySQL主服务器

mysql>显示像'server_id'的variables;
| server_id | 1 |

mysql> show processlist;
| 391673 | REPL | mysqlslave.mydomain.com:47453 | NULL | Binlog转储| 1453 | 已将所有binlog发送给slave; 等待binlog被更新| 空值

mysql> show slave hosts;
空集(0.00秒)

mysql>显示主状态;
| mysql-bin.000008 | 98 | db1,db2 |

从MySQL从服务器

mysql>显示像'server_id'的variables;
server_id | 2

mysql> show slave status \ G;
*************************** 1. row ******************** *******
Slave_IO_State:等待主控发送事件
Master_Host:192.168.1.2
Master_User:repl
Master_Port:3306
Connect_Retry:60
Master_Log_File:mysql-bin.000008
Read_Master_Log_Pos:98
Relay_Log_File:slave-relay-bin.000004
Relay_Log_Pos:235
Relay_Master_Log_File:mysql-bin.000008
Slave_IO_Running:是的
Slave_SQL_Running:是的
Replicate_Do_DB:db1; DB2

MySQL日志

在从属服务器中,消息日志显示了这一点

111031 10:53:16 [注] Slave I / O线程退出,读取日志'mysql-bin.000008',位置98
111031 10:53:16 [Note]读取中继日志事件时出错:从属SQL线程中断
111031 10:53:16 [注] Slave SQL线程初始化,在位置98,日志'mysql-bin.000008'开始复制,中继日志'./slave-relay-bin.000001'位置:4
111031 10:53:16 [注] Slave I / O线程:连接到master'[email protected]:3306',在位置98的日志“mysql-bin.000008”中启动复制

更新

如果我在主服务器上创build一个新的数据库,它将被复制到从服务器,但是现有的数据库不会被更新。

最后更新

而不是一次转储所有数据库和设置复制,我一个一个地做,现在工作正常。

我想我看到了这个问题

你的问题有以下几点:

 Replicate_Do_DB: db1; db2 

这不应该是一个分号分隔列表。 它应该是一个逗号分隔的列表。

我的猜测是你的奴隶的/etc/my.cnf中有这个

 replicate-do-db=db1; db2 

设置的正确方法是

 replicate-do-db=db1 replicate-do-db=db2 

请在从服务器的/etc/my.cnf中调整它,然后在从服务器上重新启动mysql

试一试 !!!

更新2011-10-31 15:20 EDT

您可能需要这样做清除中继日志

 STOP SLAVE; CHANGE MASTER TO master_log_file='mysql-bin.000008',master_log_pos-98; START SLAVE; 

然后运行SHOW SLAVE STATUS\G并确保复制正在运行,确保您看到这一点

 Slave_IO_Running: Yes Slave_SQL_Running: Yes 

就像你在你的问题中发表的一样