Как сделать переключение между master и slave в Postgres?

Есть задача сделать отказоустойчивый кластер, есть два сервера в двух разных ДЦ, полностью идентичные. Если падает один сервер, второй должен продолжать работать (для конечно юзера не должно быть заметно ничего).

Сначала хотели сделать, master - master (active - active), но нас отговорили. Сейчас стоит задача сделать так, чтобы один был мастер, второй слейв. Если падает слейв, ничего не меняем, работаем только с мастером. Если падает мастер, нужно быстро переключиться на слейв и сделать его мастером. Как это можно реализовать попроще?

Есть ли возможность сделать так, чтобы оба сервера были мастером, просто мы на уровне приложения будем выбирать, в какой писать (чтобы не было одновременной записи в оба сервера и не вылезли проблемы master - master репликации).
  • Вопрос задан
  • 5390 просмотров
Пригласить эксперта
Ответы на вопрос 1
@brutal_lobster
Документация же есть:
www.postgresql.org/docs/9.3/static/high-availabili...

По поводу active-active - нужно понять, оправдано ли низкое RTO, проанализировать конкретную архитектуру приложения, определить, что важнее - консистентность БД или её доступность.

Посмотрите дерево отказов (особенно с кратковременными в сети) - сразу увидите, что определить на какую ноду записывать не так просто - много факторов нужно учитывать.

И если консистентность все еще важна - лучше использовать гарантированный фэиловер, чем полагаться на случай :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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