1

尝试设置复制主从。

掌握my.cnf

[mysqld]
bind-address = 0.0.0.0
port = 3306
server-id = 1
log-bin = /var/lib/mysql/mysql-bin
replicate-do-db = Test

从 my.cnf

[mysqld]
log_output              = "FILE"
general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
log_bin                 = /var/log/mysql/mysql-bin.log
server-id = 2
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
replicate-do-db = Test

SHOW SLAVE STATUS 显示

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

在中继日志中,我看到在主服务器上执行了查询。
并且 Read_Master_Log_Pos 也会更新。
但在general_log_file 只出现

130530 14:50:25   523 Query     BEGIN
                  523 Query     COMMIT /* implicit, from Xid_log_event */

并且主服务器上的更改未在从服务器上执行。我错过了什么?

4

1 回答 1

7

这可能是由于以下选项:

replicate-do-db = Test

replicate-do-db选项可能非常棘手,有时会以不合逻辑的方式运行。

它只会复制设置了默认((即 USE 选择的)数据库的语句。因此在您的示例中,这意味着已复制:

use Test;

insert into myTable (column) values (value);

但这不会被复制:

insert into Test.myTable (column) values (value);

尝试使用replicate-wild-do-table选项:

replicate-wild-do-table=Test.%

希望你会得到一些快乐。

于 2013-05-30T09:26:30.820 回答