Replicación de MySQL: no propague consultas fallidas a esclavos

Replicación de MySQL: no propague consultas fallidas a esclavos

Tengo una configuración de replicación MySQL simple con un maestro y dos esclavos. Ocasionalmente, hay consultas que se ejecutan en el Maestro y que fallan debido a claves únicas duplicadas u otras razones. Lo que veo es que las consultas fallidas se replican en los servidores esclavos, lo que también provoca errores allí. Es molesto y bastante tedioso tener que arreglar esto cada vez, ya que la replicación se detiene cada vez que hay una consulta incorrecta.

Me parece que si una consulta falla en el Maestro, entonces MySQL no debería molestarse en propagarla a los Esclavos. ¿Se puede configurar MySQL de esta manera? ¿Cómo? Intenté buscar en Google y explorar los documentos de MySQL, pero no lo veo.

Respuesta1

La replicación de MySQL se realiza a través de binlog. En el binlog solo se escribirán las transacciones exitosas, por lo que si una consulta falla en un maestro, no aparecerá en el binlog. Eso significa que este tipo de consultas no aparecerán en las réplicas. Si tiene errores como que la replicación se detiene en el esclavo1 porque no hay una columna para actualizar (etc.), eso significa que su maestro y sus esclavos son diferentes. Debe instalar percona-toolkit y verificar sus tablas con pt-table-checksum.

información relacionada