Guter Server ermitteln
Zuerst muss entschieden werden, welcher der "guter" Server ist. Wenn HAPROXY im Betrieb ist, dann ist der guter Master der auf den die Daten derzeit geschrieben werden.
HAPROXY umstellen
Falls es ein HAPROXY gibt, dann die Server auf der Kaputten Master Seite aus der Verteilung herausnehmen (auch den Slave auf dieser Seite).
Auf BEIDE Master Server
STOP SLAVE;
Auf den KAPUTTEN Master Server eine Sicherung der ersten Master DB anfertigen
mysqldump -hacd-dbm1 -uroot -pfireball --single-transaction --master-data=2 --databases JTELWeb JTELStats JTELLog --add-drop-database --add-drop-table --events --routines --triggers > master.sql
Auf den KAPUTTEN Master Server, den Slave resetten, und Sicherung einspielen
RESET SLAVE;
SOURCE master.sql;
CHANGE MASTER TO MASTER_HOST = 'acd-dbm1', MASTER_USER = 'repl', MASTER_PASSWORD = 'fireball', MASTER_LOG_FILE='<Name LogFile>', MASTER_LOG_POS=<Position LogFile>;
START SLAVE;
Auf den KAPUTTEN Master Server den Slave Prüfen
SHOW SLAVE STATUS\G
Auf den KAPUTTEN Master Server alle Tabellen locken und Master Position notieren
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Die Positionen von SHOW MASTER STATUS werden im folgenden Kommando benötigt.
Auf den GUTEN Master Server die Replikation neu positionieren und starten
CHANGE MASTER TO MASTER_HOST = 'acd-dbm2', MASTER_USER = 'repl', MASTER_PASSWORD = 'fireball', MASTER_LOG_FILE='<Name LogFile>', MASTER_LOG_POS=<Position LogFile>;
START SLAVE;
Auf den KAPUTTEN Master Server die Tabellen Locks aufheben
UNLOCK TABLES;
Auf allen Servern nun
SHOW SLAVE STATUS\G
Es ist normalerweise nicht nötig, die Slaves die an beide Master hängen ebenfalls zu wiederherstellen. Wenn doch, können diese mit der normalen Prozedur für das Wiederherstellen des Slaves neu initialisiert werden.