Задать вопрос

MySQL смена ролей master-slave-master. Как?

Здравствуйте!
Ситуация такая: Есть приложение (отдельный сервер), и есть 2 одинаковых физических сервера для БД Mysql. На них настроена master-slave репликация. Появляется необходимость перезагрузить master-сервер, но так, чтобы приложение продолжало работать с БД (т.е. slave'у надо взять на себя роль мастера?) с минимальным простоем (допустимо несколько секунд).
Вопрос: как это называется? Мульти-мастер репликация? Насколько надежно/стабильно она работает в mysql? Percona Server? MariaDB Galera Cluster? Какие трудности могут возникнуть?

Как вообще избежать простоя при наличии нескольких серверов БД при использовании mysql или её форков?
  • Вопрос задан
  • 2987 просмотров
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
gohdan
@gohdan
Системный администратор
1. В приложении перекидываете запросы на слейв.
2. Перезагружаете мастер.
3. Переводите слейв в рид-онли.
4. Копируете всю БД со слейва на мастер (файлами, дампами будет дольше). Чтобы этот этап проходил быстро (да и вообще чтобы всё быстрее крутилось), помогает держать на мастере БД в ОЗУ, у меня при этом 7 Гб с реплики копируются буквально пару секунд.
5. Делаете ресет мастера, запоминаете лог и позицию.
6. В приложении перекидываете запросы на мастер.
7. Делаете ресет слейва, заново включаете репликацию с запомненными на 5-м шаге параметрами, снимаете рид-онли.

Схема рабочая, довольно часто приходится применять, помогает заранее заскриптовать, чтобы не терять время на ввод команд. Простой возникает только на шаге 4 и обычно ограничивается несколькими секундами. Можно, конечно, запилить мульти-мастер, но, насколько я понимаю, обязательно возникнут вопросы проверки консистентности данных, да и только ради возможности перезагрузить мастер, мне кажется, не стоит городить огород.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы