Как реализовать отказоустойчивость mysql?
1) master-master на mariadb - каждый сервер будет иметь свой уникальный gtid и именно мария в отличии от оригинального mysql умеет хорошо разруливать бинарные логи и даже мульти репликацию. Но нужно как минимум прописать сдвиг auto_increment на северах, чтобы он были уникальными
2) galera cluster - где-то на 30% медленнее - транзакция должна пройти на всех нодах, только innodb движок, нужно следить, чтобы не было myisam, нужен кворум нод, то есть две ноды лучше не делать, если одна 100% будет уходить в оффлайн
В первом случае синхронизация может быть с небольшой задержкой на сложных изменениях, но сама схема вполне рабочая.
Все рецепты настроек есть в гугле :)
Haproxy + galera + Xtradb от percona, для деплоя посмотрите на готовые ansible плейбуки.
Не забываем про critical read в mysql части и "липкие коннекты" в haproxy.
Кластер минимум 3 годы, чтобы не было split brain, если по феншуям хочется, то 5 лучше нод.