Replicação MySQL: Não propague consultas com falha para escravos

Replicação MySQL: Não propague consultas com falha para escravos

Eu tenho uma configuração simples de replicação MySQL com um mestre e dois escravos. Ocasionalmente, há consultas executadas no Master que falham devido à duplicação de chaves exclusivas ou outros motivos. O que estou vendo é que as consultas com falha estão sendo replicadas nos servidores escravos, o que também causa erros. É chato e bastante tedioso ter que consertar isso todas as vezes, já que a replicação para sempre que há uma consulta incorreta.

Parece-me que se uma consulta falhar no Master, então o MySQL não deveria se preocupar em propagá-la para os Slaves. O MySQL pode ser configurado desta forma? Como? Tentei pesquisar no Google e navegar na documentação do MySQL, mas não estou vendo.

Responder1

A replicação do MySQL acontece através do binlog. No log binário apenas as transações bem-sucedidas serão gravadas, portanto, se uma consulta falhar em um mestre, ela não aparecerá no log binário. Isso significa que esse tipo de consulta não aparecerá nas réplicas. Se você tiver erros como paradas de replicação no escravo1 porque não há coluna para atualização (etc.), isso significa que seu mestre e seus escravos são diferentes. Você deve instalar o percona-toolkit e verificar suas tabelas com pt-table-checksum.

informação relacionada