Я реализовал решение высокой доступности для MySQL на основе репликации мастер-мастер. В интерфейсной части есть механизм, который гарантирует, что только один дБ будет считан / записан в определенный момент времени (т.е. мы используем только репликацию для HA).
Я подтвердил, что репликация работает, как и ожидалось, но меня интересует сценарий сбоя и восстановления. В частности, я беспокоюсь о том, что происходит, когда один мастер выходит из строя в неисправимом состоянии, и его необходимо воссоздать с другого мастера:
- Поскольку другой мастер работает и, скорее всего, используется, я не могу заблокировать его и создать дампы
mysqldump
(наши базы данных достаточно велики иmysqldump
могут легко занять часы после нескольких месяцев использования). - Даже если предположить, что у меня есть дамп, очень важно, чтобы положение binlog, как показано в SHOW MASTER STATUS, соответствовало дампу, который выполняется после блокировки базы данных.
Простое решение первой проблемы - использовать третью базу данных в качестве резервной копии, из которой я могу сделать mysqldump
. Но как тогда убедиться, что воссозданный мастер может начать репликацию с работающего мастера согласованным образом?