Ich habe eine HA-Lösung für MySQL implementiert, die auf der Master-Master-Replikation basiert. Es gibt einen Mechanismus im Front-End-Teil, der garantiert, dass zu einem bestimmten Zeitpunkt nur eine Datenbank gelesen / beschrieben wird (dh wir verwenden die Replikation nur für HA).
Ich habe bestätigt, dass die Replikation wie erwartet funktioniert, frage mich jedoch über das Fehlerszenario und die Wiederherstellung. Insbesondere mache ich mir Sorgen darüber, was passiert, wenn ein Master in einem nicht behebbaren Zustand ausfällt und vom anderen Master neu erstellt werden muss:
- Da der andere Master live ist und höchstwahrscheinlich verwendet wird, kann ich ihn nicht sperren und Dumps erstellen
mysqldump
(unsere Datenbanken sind mäßig groß undmysqldump
können nach einigen Monaten der Nutzung leicht Stunden dauern). - Selbst wenn ich einen Dump habe, ist es entscheidend, dass die von SHOW MASTER STATUS angezeigte Binlog-Position dem Dump entspricht, der nach dem Sperren der Datenbank ausgeführt wird.
Die einfache Lösung für das erste Problem besteht darin, eine dritte Datenbank als Backup zu verwenden, von der aus ich das ausführen kann mysqldump
. Aber wie stelle ich dann sicher, dass der neu erstellte Master die Replikation vom laufenden Master auf konsistente Weise starten kann?