J'ai implémenté une solution HA pour mysql basée sur la réplication maître-maître. Il y a un mécanisme sur la partie frontale qui garantit qu'une seule base de données sera lue / écrite à un moment donné (c'est-à-dire que nous n'utilisons que la réplication pour HA).
J'ai confirmé que la réplication fonctionne comme prévu, mais je m'interroge sur le scénario de défaillance et la récupération. En particulier, je m'inquiète de ce qui se passe lorsqu'un maître échoue dans un état irrécupérable et doit être recréé à partir de l'autre maître:
- Comme l'autre maître est en direct et probablement utilisé, je ne peux pas le verrouiller et créer des vidages à partir de
mysqldump
(nos bases de données sont modérément volumineuses etmysqldump
peuvent facilement prendre des heures après quelques mois d'utilisation). - Même en supposant que j'ai un vidage, il est crucial que la position du journal des événements comme indiqué par SHOW MASTER STATUS corresponde au vidage en cours après le verrouillage de la base de données.
La solution simple au premier problème est d'utiliser une troisième base de données faisant office de sauvegarde, à partir de laquelle je peux faire le mysqldump
. Mais comment puis-je m'assurer que le maître recréé peut démarrer la réplication à partir du maître en cours d'exécution de manière cohérente?