@yuretzgt

Potsgres 13 — как реализовать систему Master-Master?

Есть проект, развернутый на двух серверах в разных географических точках, на входе cloudflare,
www.project.ru - основной
и
backup.project.ru - резерв

Я хочу сделать отказоустойчивое решение в случае падания основного сервера

На текущий момент настроена репликация master(www)-slave(backup)

Команда репликации:
pg_basebackup -U replicator_user -D /data_dir -S replication_slot -X stream -P -Fp -R


postgres.conf

wal_level = replica
hot_standby = on
hot_standby_feedback = on


по логике если основной(www) сервер "падает" cloudflare переключает все запросы на резервный backup, сайт прекрасно выдает актуальную информацию, но писать в базу данных нельзя, даже если между серверами теряется связь, выдается ошибка
ERROR: cannot execute UPDATE in a read-only transaction


Чего бы хотелось:
Минимум: в случае если связь теряется, чтобы в базу reserve можно было писать + когда www оживет, новые данные туда загрузились
В идеале: чтобы оба сервера работали одновременно синхронизируя между собой данные, и в случае если кто-то из них упадет, после восстановление данные актуализировались

Все что нахожу в мануалах, только master-slave или танцы с бубном вручную.

Подскажите пожалуйста, как это реализовать?
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Никак.

Если очень хотите головной боли и новых аварий по ночам вместо того чтобы спокойно спать - возьмите какой-нибудь autofailover типа patroni и прочих.

Критичная проблема фундаментальна - CAP теорема в целом и последствия split brain в частности.
Ответ написан
Ваш ответ на вопрос

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

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