Eu tenho uma configuração de replicação mestre mestre no RHEL para 2 nós. Um servidor está atuando como mestre e escravo para outro servidor (que também é mestre e escravo) Digamos que um servidor e um servidor B
Habilitei log_slave_updates no servidor B para que todas as instruções recebidas do mestre (servidor A) sejam registradas nos logs binários do servidor B .
Eu estava esperando Replication , falhará porque:
1. Created a Table on Server A.
2. It get replicated to Server B.
Agora o log binário do escravo B irá para o servidor A e isso deve quebrar a replicação dizendo "tabela já existe". mas não
Qual é a lógica aqui?
Editar parte:
- ID do servidor em ambos os servidores são diferentes
ASPECTO #1
Certifique-se de que o ServidorA e o ServidorB tenham log_slave_updates habilitados.
ASPECTO #2
Essa configuração não interromperá a replicação porque toda vez que uma transação é registrada nos logs binários, o server_id da transação também é gravado.
Digamos server_id=10 para ServerA e server_id=20 para ServerB
Então, quando você executa isso no ServerA
A transação incluirá server_id 10. Quando ServerB examinar seus logs de retransmissão e ver server_id 10, ele comparará isso com seu próprio server_id (20). Como não há correspondência, não há problema em executar.
ServerB registra essa transação em seus logs binários. O ServerA selecionará essa transação de seus logs de retransmissão. Quando o ServerA examina seus logs de retransmissão e vê server_id 10, ele comparará isso com seu próprio server_id (10). Como há uma correspondência, ele se recusa a executar.
Eu discuti isso antes em minhas respostas anteriores
Mar 27, 2012
: Replicação mestre-mestre no MySQLOct 15, 2012
: A alteração do server_id no mestre interromperá a replicação?