Tenho 4 servidores: A, B, C e D.
A e B estão em uma configuração mestre-mestre.
C é escravo de B e D é escravo de C.
Alterações em A ou B atingem todos os nós exceto D. Eu preciso que elas cheguem a D
Alterações em C chegam a D, mas obviamente não vão para A ou B, o que é bom.
Depois de algumas leituras, descobri que precisava da opção log-slave-updates definida em C, desta forma C registraria as alterações replicadas para ele e então D poderia lê-las e fazer as mesmas atualizações.
Eu defini a opção como ativada e D está esperando que seu mestre envie eventos, mas as alterações de A ou B ainda não estão chegando a D.
Com log-slave-updates no servidor C, apenas as atualizações gravadas diretamente em B irão para o servidor D.
O Servidor A e o Servidor B requerem log-slave-updates , caso contrário, nenhuma de suas atualizações atingirá C. Em geral, qualquer Master que também seja um Slave deve ter log-slave-updates para retransmitir eventos binlog de servidores distantes.
Eu já discuti isso antes
Reiniciar o mysqld é necessário nos servidores A e B para que a configuração entre em vigor
Deixe-me explicar melhor
Sua configuração
Você roda
INSERT INTO tblname
no Servidor A, o que acontece?Como B é escravo de A
INSERT INTO tblname
INSERT INTO tblname
INSERT INTO tblname
executaINSERT INTO tblname
em seus logs binários. O IO Thread de C nunca vêINSERT INTO tblname
vindo do servidor A.Você roda
INSERT INTO tblname
no Servidor B o que acontece?Como A e C são escravos de B e D são escravos de C
INSERT INTO tblname
INSERT INTO tblname
INSERT INTO tblname
executaINSERT INTO tblname
INSERT INTO tblname
INSERT INTO tblname
executaINSERT INTO tblname
em seus logs bináriosINSERT INTO tblname
INSERT INTO tblname
INSERT INTO tblname
executaCom base nessa descrição, se você tivesse algum escravo vindo de A, esses escravos nunca veriam
INSERT INTO tblname
vindo de B.Portanto, você precisa de atualizações de log-slave em A e B, bem como em C.