2011-01-20 1 views
1

두 개의 phisical 서버가 있습니다. 포함 서버 2에 평소mysql 마스터 - 슬레이브 - 마스터 - 슬레이브 복제

server2$ mysql -u root -p <to_server2.sql 

의 my.cnf로 수입 한 후

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 

과 :에 my.cnf의

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

나는 명령을 사용하여 서버 2에 서버 1에서 일부 데이터베이스를 복사 서버 1은 다음을 포함합니다 :

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

그런 다음 두 서버에서 change master를 실행하여 서로를 가리 킵니다. SHOW SLAVE STATUS에는 이미 server2에서 Read_Master_Log_Pos가 포함되어 있지만 어쨌든이 작업 중에는 데이터가 변경되지 않았습니다.

그러면 두 서버 모두에서 시작된 슬레이브입니다. SHOW SLAVE STATUS는 server1과 server2에서 잘 보입니다.

문제 :서버 1의 데이터가 변경되거나 서버 2의 데이터가 서버의 binlog 및 다른 서버의 mysqld-relay-bin 로그에 나타나면 슬레이브 데이터베이스에는 로그가 표시되지 않습니다. Read_Master_Log_Pos는 슬레이브 데이터베이스의 데이터는 변경하지만 데이터는 변경하지 않습니다. 그 이유는 무엇입니까?

+2

replication은 sysadmin 질문보다 프로그래밍에 더 많은 것이므로 serverfault.com에서이 정보를 묻는 것이 좋습니다. –

+0

아마도. 하지만 여전히 많은 사람들이 mysql을 마스터하고 있습니다. 아마도 문제는 혼수 상태입니다. 데이터베이스 이름에 혼수 상태가있을 수 있기 때문에 잘못된 이름 인 혼수로 데이터베이스 이름을 분리하려고합니다. –

답변

1

답변은 : 데이터베이스 이름 사이에 replicate_do_db의 혼수 상태 때문입니다. 해결책은 my.cnf에서 replication 할 각 데이터베이스에 대해 replicate_do_db 문을 작성하는 것이 었습니다.