A replicação de vários mestres (um escravo com mais de um mestre) não é suportada pelo MySQL (além do MySQL Cluster). Você pode fazer uma replicação mestre-mestre de uma replicação circular (anel) (descrita aqui ou aqui ).
Em MySQL de alto desempenho 2ª edição os autores descrevem uma maneira de emular a replicação multimestre usando uma combinação inteligente de replicação mestre-mestre e o
Blackhole
mecanismo de armazenamento (Capítulo 8 Replicação> Topologias de replicação> Soluções de replicação personalizadas> Emulação de replicação multimaster p. 373 - 375
). Eles mostram duas possíveis topologias:
Usando dois co-mestres (permitindo mudar o mestre do escravo de Mestre 1 para Mestre 2 )
- Mestre 1: hospeda DB1 e replica o DB2 do Mestre 2; o mecanismo de armazenamento para todas as tabelas no DB2 é alterado para
Blackhole
para que os dados não sejam efetivamente armazenados no Mestre 1 . - Mestre 2: hospeda DB2 e replica DB1 do Mestre 1; o mecanismo de armazenamento para todas as tabelas no DB1 é alterado para
Blackhole
para que os dados não sejam efetivamente armazenados no Mestre 2 - Escravo 1: replica DB1 e DB2 de qualquer Mestre 1 ou Mestre 2 (permitindo mudar de mestre); o resultado é que Escravo 1 replica ambos os bancos de dados que estão efetivamente hospedados em dois mestres diferentes.
Usando uma cadeia mestra
- Mestre 1: apenas hospeda DB1
- Mestre 2: hospeda DB2 e replica DB1 do Mestre 1; o mecanismo de armazenamento para todas as tabelas no DB1 é alterado para
Blackhole
para que os dados não sejam efetivamente armazenados no Mestre 2 - Escravo 1: replica DB1 e DB2 do Mestre 2; o resultado é que Escravo 1 replica ambos os bancos de dados que estão efetivamente hospedados em dois mestres diferentes.
Observe que esta configuração só permite enviar atualizações para DB1 através do Mestre 1 e atualizações para DB2 para Mestre 2 . Você não pode enviar atualizações para qualquer tabela para mestres arbitrários.
Talvez seja possível combinar a solução descrita com o hack para uma verdadeira replicação master-master (permitindo atualizações para ambos os masters) que usa algum tipo de autoincrement-mangling e é descrita aqui ou aqui .