2011-01-20 2 views
1

У меня есть два физических сервера. Я скопировал некоторые из базы данных server1 на server2 с помощью команды:mysql master-slave-master-slave репликация

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 

my.cnf на server2 включает в себя:

server-id    = 2 
log_bin 
binlog_format   = mixed 
replicate_do_db   = db1,db2 
transaction-isolation=READ-COMMITTED 

my.cnf на сервер1 включает:

server-id    = 1 
log_bin 
binlog_format   = mixed 
replicate_do_db   = db3,db4 
transaction-isolation=READ-COMMITTED 

затем я выдаю мастер изменений на обоих серверах, чтобы указать друг на друга; SHOW SLAVE STATUS уже включает Read_Master_Log_Pos на сервере2, но в любом случае никаких изменений данных не было сделано во время этих операций.

Затем начал работать на обоих серверах. SHOW SLAVE STATUS хорошо выглядит как на сервере server1, так и на сервере server2.

Проблема: Всякий раз, когда данные изменяются на любом сервере1 или данные сервера2 отображаются в журнале bin сервера, а в журнале журнала mysqld-relay-bin другого сервера BUT не отображаются в базе данных ведомого. Read_Master_Log_Pos изменяет, но не данные в базе данных slave. Любая идея почему?

+2

Возможно, вы захотите спросить об этом на serverfault.com, так как репликация является скорее вопросом sysadmin, чем программированием. –

+0

Может быть. Но есть еще много людей, осваивающих mysql ... Может быть, проблема связана с комой, я пытаюсь отделить имена баз данных от комы, что неправильно, потому что имя базы данных может содержать кома ... –

ответ

1

Ответ: это действительно из-за комы в replicate_do_db между именами баз данных. Решение заключалось в том, чтобы сделать команду replicate_do_db в my.cnf для каждой репликации каждой базы данных.