Что делать, если мастер упал
Что проверяют
Знаете ли вы, что переключение мастера это не только задача базы, но и задача вашего сервиса: как он узнает о смене узла и что делает в те секунды, пока записи не принимает никто.
Как отвечать
Сначала уточнить, о каком мастере речь и что важнее в этой системе: продолжить работу или не потерять ни одной транзакции. От ответа зависит всё остальное.
Со стороны базы. Переключением занимается менеджер кластера, а не приложение: он следит за живостью, выбирает нового лидера и переносит точку записи. Ключевые слова тут кворум и отсечение старого узла, без них можно получить два мастера сразу, и расхождение данных потом придётся сводить руками. Отдельно назвать цену репликации: асинхронная теряет последние подтверждённые транзакции, синхронная их сохраняет, но замедляет каждую запись и останавливает её, когда реплика недоступна.
Со стороны сервиса на Go. Адрес мастера не зашивается в конфиг: подключение идёт через переезжающее имя, через пулер соединений или по списку хостов с требованием узла, принимающего запись. После переключения все соединения в пуле мертвы, поэтому нужны ограничение времени жизни соединения, проверка живости и повторы с нарастающей паузой и случайным разбросом, иначе сервисы дружно ударят по новому мастеру.
Повторять безопасно только идемпотентное: транзакция, оборванная на фиксации, могла и примениться. На время недоступности записи полезна деградация: чтения уходят на реплику, запись либо копится, либо честно отдаёт ошибку по таймауту контекста.
Где спотыкаются
Ограничиваются фразой про повышение реплики до мастера. Без кворума и отсечения старого узла это прямой путь к двум мастерам, а это худший из возможных исходов.
Забывают про приложение. База переключилась за полминуты, а сервис лежит: адрес прописан в конфиге, пул держит мёртвые соединения, повторы без разброса устроили лавину запросов.
Обещают нулевую потерю данных при асинхронной репликации. Либо наоборот, не различают потерю последних секунд и полный отказ, хотя для бизнеса это совершенно разные новости.