Ho implementato una soluzione HA per mysql basata sulla replica master-master. C'è un meccanismo sulla parte frontale che garantisce che un solo db verrà letto / scritto in un dato momento (cioè usiamo solo la replica per HA).
Ho confermato che la replica funziona come previsto, ma mi chiedo lo scenario di errore e il ripristino. In particolare, mi preoccupo di ciò che accade quando un master fallisce in uno stato irrecuperabile e deve essere ricreato dall'altro master:
- Poiché l'altro master è attivo e molto probabilmente utilizzato, non riesco a bloccarlo e creare dump da
mysqldump
(i nostri database sono moderatamente grandi emysqldump
possono facilmente richiedere ore dopo alcuni mesi di utilizzo). - Anche supponendo che io abbia un dump, è cruciale che la posizione del binlog mostrata da SHOW MASTER STATUS corrisponda al dump che viene eseguito dopo che il database è stato bloccato.
La semplice soluzione al primo problema è utilizzare un terzo database che funge da backup, da cui posso eseguire mysqldump
. Ma allora come posso assicurarmi che il master ricreato possa avviare la replica dal master in esecuzione in modo coerente?