MySQL репликация не обновляет ведомый

Пытаюсь установить репликацию хозяин - ведомый.

Мастер 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 */

И изменения на хозяине не выполняются на раб. Что я пропустил?

1 ответ

Решение

Это может быть связано со следующей опцией:

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.%

Надеюсь, вы получите немного радости.

Другие вопросы по тегам