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 emysqldumppossono 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?