MySQL 日志

MySQL 日志

我已经为现有数据库服务器设置了 MySQL 复制。设置似乎没问题,但在我启动复制后,从属服务器上的数据库从未更新。两台服务器都使用 CentOS 5.7 64 位。它们有足够的磁盘空间。

从 MySQL 主服务器

mysql> 显示类似“server_id”的变量;
| server_id | 1 |

mysql> show processlist;
| 391673 | repl| mysqlslave.mydomain.com:47453 | NULL | Binlog Dump | 1453 | 已将所有 binlog 发送给从属;等待 binlog 更新 | NULL

mysql>显示从属主机;
空集(0.00 秒)

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

从 MySQL 从属服务器

mysql> 显示类似“server_id”的变量;
server_id | 2

mysql> show slave status \G;
**************************** 1. 行 ***************************
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 [注意] 从属 I/O 线程退出,读取日志'mysql-bin.000008',位置 98
111031 10:53:16 [注意] 读取中继日志事件时出错:从属 SQL 线程已被杀死
111031 10:53:16 [注意] 从属 SQL 线程已初始化,开始在日志'mysql-bin.000008'中复制,位置 98,中继日志'./slave-relay-bin.000001' 位置:4
111031 10:53:16 [注意] 从属 I/O 线程:已连接到主服务器'[电子邮件保护]:3306',复制已在日志'mysql-bin.000008'的位置 98 处开始

更新

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

最后更新

我没有一次性转储所有数据库并设置复制,而是逐个进行,现在运行良好。

答案1

我觉得我明白问题所在

您的问题中有以下内容:

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

就像你在问题中说的那样

相关内容