MySQL Replication: Não propague consultas com falha para escravos

2

Eu tenho uma configuração simples de replicação do MySQL com um mestre e dois escravos. Ocasionalmente, há consultas que são executadas no mestre, que falham devido a chaves exclusivas duplicadas ou outras razões. O que estou vendo é que as consultas com falha estão sendo replicadas para os servidores escravos, o que também causa erros. É chato e tedioso ter que corrigir isso sempre, pois a replicação é interrompida toda vez que uma consulta é ruim.

Parece-me que, se uma consulta falhar no mestre, o MySQL não deve incomodar a propagação para os escravos. O MySQL pode ser configurado dessa maneira? Como? Eu tentei pesquisar no Google e navegar pelos documentos do MySQL, mas não estou vendo isso.

    
por curtisdf 22.06.2015 / 18:54

1 resposta

1

A replicação do MySQL acontece através do log binário. Para o binlog, 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ê tem erros como replicação pára no escravo1 porque não há coluna para atualização (etc.), então isso significa que seu mestre e escravos são diferentes. Você deve instalar o percona-toolkit e verificar suas tabelas com o checksum pt-table.

    
por 17.08.2015 / 22:02