Não há muito desempenho a ser obtido replicando seu banco de dados em dois mestres. No entanto, há um pouco de failover bacana se você codificar seu aplicativo corretamente.
A configuração Master-Master é essencialmente a mesma que a configuração Slave-Master, mas tem ambos os Slaves iniciados e uma mudança importante em seus arquivos de configuração em cada caixa.
Mestre MySQL 1:
auto_increment_increment = 2
auto_increment_offset = 1
Mestre MySQL 2:
auto_increment_increment = 2
auto_increment_offset = 2
Esses dois parâmetros garantem que, quando dois servidores estiverem brigando por uma chave primária por algum motivo, eles não dupliquem e eliminem a replicação. Em vez de incrementar em 1, qualquer campo de incremento automático será por padrão incrementado em 2. Em uma caixa, ele iniciará o deslocamento de 1 e executará a sequência 1 3 5 7 9 11 13 etc. Na segunda caixa, iniciará o deslocamento em 2 e executar ao longo de 2 4 6 8 10 12 etc. A partir do teste atual, o auto-incremento parece pegar o próximo número livre, não aquele que saiu antes.
Ex. Se o servidor 1 inserir os 3 primeiros registros (1 3 e 5) quando o servidor 2 inserir o 4º, será dada a chave de 6 (não 2, que não é utilizada).
Depois de configurar isso, inicie os dois como Slaves.
Então, para verificar se ambos estão funcionando bem, conecte-se às duas máquinas e execute o comando
SHOW SLAVE STATUS
e você deve observar que tanto Slave_IO_Running
e Slave_SQL_Running
ambos devem dizer “SIM” em cada caixa. Em seguida, é claro, crie alguns registros em uma tabela e certifique-se de que uma caixa esteja apenas inserindo chaves primárias de números ímpares e a outra esteja apenas incrementando as de números pares.
Em seguida, faça todos os testes para garantir que você possa executar todos os aplicativos padrão em cada caixa com a replicação para a outra.
É relativamente simples quando está funcionando.
Mas como foi mencionado, o MySQL o desencoraja e aconselha que você tenha certeza de que está atento a esta funcionalidade ao escrever o código de sua aplicação.
Editar: Suponho que seja teoricamente possível adicionar mais mestres se você garantir que os deslocamentos estejam corretos e assim por diante. Você pode, de forma mais realista, adicionar alguns escravos adicionais.