2 votes

Réplication MySQL : Ne pas propager les requêtes échouées aux esclaves

J'ai une configuration simple de réplication MySQL avec un maître et deux esclaves. De temps en temps, certaines requêtes exécutées sur le maître échouent en raison de clés uniques dupliquées ou pour d'autres raisons. Ce que je constate, c'est que les requêtes qui échouent sont répliquées sur les serveurs esclaves, ce qui provoque des erreurs là aussi. C'est ennuyeux et assez fastidieux d'avoir à corriger cela à chaque fois, puisque la réplication s'arrête chaque fois qu'il y a une mauvaise requête.

Il me semble que si une requête échoue sur le maître, MySQL ne devrait pas prendre la peine de la propager aux esclaves. MySQL peut-il être configuré de cette façon ? Comment ? J'ai essayé de chercher sur Google et de parcourir la documentation de MySQL, mais je ne vois rien.

1voto

banyek Points 369

La réplication MySQL se fait par binlog. Dans le binlog, seules les transactions réussies seront écrites, donc si une requête échoue sur un maître, elle n'apparaîtra pas dans le binlog. Cela signifie que ce type de requête n'apparaîtra pas sur les répliques. Si vous avez des erreurs telles que la réplication s'arrête sur slave1 parce qu'il n'y a pas de colonne pour la mise à jour (etc.), cela signifie que votre maître et vos esclaves sont différents. Vous devriez installer percona-toolkit, et vérifier vos tables avec pt-table-checksum.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X