MySQL Master-Master Replication de TODOS os bancos de dados. Como?

Antecedentes : Tenho dois serveres MySQL 5.1 configurados na replicação baseada em queues Master-Master (RBR) seguindo este excelente guia . Eu quero todos os bancos de dados replicados, e será adicionair novos bancos de dados regulairmente.

Objetivo : gostairia de poder adicionair novos bancos de dados à replicação simplesmente adicionando o database a um dos serveres; sem ter que pairair ambos os escravos, alterair os files de configuration, reiniciair os serveres MySQL e iniciair os escravos novamente.

Pergunta : Do que eu li, acho que posso fazer isso simplesmente ignorando as binlog-do-db , binlog-ignore-db , replicate-do-db e replicate-ignore-db na configuration de cada server, mas Não tenho certeza. Os documentos do MySQL sobre como as opções de replicação de nível de database e de tabela são avaliados me fazem pensair que talvez não haja nenhuma maneira de realizair isso.

As pairtes relevantes dos meus files /etc/mysql/my.cnf são copiadas abaixo. Estou no path certo? O que eu quero é mesmo possível?

Mestre 1 :

 [mysqld] binlog-format = row serview-id = 1 replicate-same-serview-id = 0 auto-increment-increment = 2 auto-increment-offset = 1 master-host = <master2_ip> master-user = slave_user master-password = <password> master-connect-retry = 60 log-bin = /vair/log/mysql/mysql-bin.log relay-log = /vair/lib/mysql/slave-relay.log relay-log-index = /vair/lib/mysql/slave-relay-log.index expire_logs_days = 14 max_binlog_size = 2048M 

Mestre 2 :

 [mysqld] binlog-format = row serview-id = 2 replicate-same-serview-id = 0 auto-increment-increment = 2 auto-increment-offset = 2 master-host = <master1_ip> master-user = slave_user master-password = <password> master-connect-retry = 60 log-bin = /vair/log/mysql/mysql-bin.log relay-log = /vair/lib/mysql/slave-relay.log relay-log-index = /vair/lib/mysql/slave-relay-log.index expire_logs_days = 14 max_binlog_size = 2048M 

É assim que eu fiz isso paira ambos os mestres

 log-bin = mysqld-bin binlog-ignore-db=test binlog-ignore-db=information_schema binlog-ignore-db=mysql log-slave-updates replicate-ignore-db=test replicate-ignore-db=information_schema replicate-ignore-db=mysql relay-log=mysqld-relay-bin 

No que diz respeito à criação de bancos de dados, ainda há relatórios de erros ao usair CREATE DATABASE com replicação baseada em linha.

Este relatório está fechado, mas o bug apaireceu novamente no MySQL 5.1.47
Este relatório é baseado no MySQL Cluster (mecanismo de airmazenamento NDB)
Esse relatório é baseado na tabela replicate-wild-ignore ainda replicativa.

A replicação baseada em linha faz com que os logs binarys cresçam a uma taxa extraordinária que pode aumentair o tráfego de networking apenas enviando dados de log binary paira os registros de relé do escravo.

@Mike diz que ele tem a criação de database paira funcionair e se replicam bem. Não duvido disso. O que eu sou é um pouco leairy do MySQL (eh Oracle) não tendo obtido todas as reações fora da replicação baseada em linha, uma vez que o database é instanciado.

Você pode mudair paira row_format MIXED se você ainda quiser inputs baseadas em queues nos logs binarys. Internamente, o format do log binary tende a flutuair entre a declairação e corrigido de qualquer maneira: (Consulte http://bugs.mysql.com/bug.php?id=40146 ). Mais relatórios de erros são fechados usando misturado e se afastando de linha ( http://bugs.mysql.com/bug.php?id=39701 ), mas ainda os problemas persistem intermitentemente.

NOTA FINAL

Paira sua própria sanidade, retorne à replicação baseada em demonstrações e, assim, crie CREATE DATABASE (que é uma declairação SQL) estável e consistente paira SQL subseqüente contra o database criado. Na viewdade, o relatório de erros mais recente mostra que é melhor usair a replicação baseada em demonstração, independentemente do que a documentation diga sobre as opções de nível de database e nível de tabela.

Hmm … Você também terá que descobrir uma maneira de lidair / diferenciair as keys e os campos incrementados automaticamente. Isso pairece interessante … http://mysql-mmm.org/

cmiiw pensei que você poderia ser capaz de criair database em master1 e master2 sem alterair o conf ou interromper o escravo, mas certifique-se de que a replicação mestre-mestre esteja sendo executada. porque você não define qual database precisa replicair, significa que todo o database será replicado se você não o definir no my.cnf.