powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как реализовать failover без потерь?
6 сообщений из 6, страница 1 из 1
Как реализовать failover без потерь?
    #39983365
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем!
Уже несколько дней пытаюсь найти решение этого вопроса.
Т.е. имеется приложение которое работает с PG, есть PG(мастер-реплика), есть ли возможность реализовать переключение на реплику без потерь данных\соединения.
Понимаю, что нужен какой-то слой "буферизации" между приложением и PG, но какой?

Пробовал pgbench -> pgbouncer -> HAproxy -> patroni.

HAproxy достаточно быстро определяет переключение, но все равно операция занимаем несколько секунд, и pgbench отваливается.
...
Рейтинг: 0 / 0
Как реализовать failover без потерь?
    #39983367
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guzya
Доброго дня всем!
Уже несколько дней пытаюсь найти решение этого вопроса.
Т.е. имеется приложение которое работает с PG, есть PG(мастер-реплика), есть ли возможность реализовать переключение на реплику без потерь данных\соединения.
Понимаю, что нужен какой-то слой "буферизации" между приложением и PG, но какой?

Пробовал pgbench -> pgbouncer -> HAproxy -> patroni.

HAproxy достаточно быстро определяет переключение, но все равно операция занимаем несколько секунд, и pgbench отваливается.


pgbouncer pause (в transaction pooling)
switchover
смена хоста в конфиге pgbouncer куда ходим на новый мастер
отстрел коннектов от pgbouncer к старому мастеру
pgbouncer resume

*profit*

и никаких haproxy не надо даже... ну или pgbouncer на паузу пока там haproxy разбирается что там и где.
...
Рейтинг: 0 / 0
Как реализовать failover без потерь?
    #39983371
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать!
Но при failower получается не поможет.
...
Рейтинг: 0 / 0
Как реализовать failover без потерь?
    #39983372
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guzya,

А вот если вам надо именно failover неплановый - то это очевидно невозможно.
Вот код у вас на полпути в середине транзакции... мастер умер..
кто и как будет вам без обрыва эту транзакцию продолжать?

Нулевые потери в такой ситуации на уровне кода делаются который должен уметь retry транзакции в случае какого то сбоя (будь то сеть падала или мастер упал или deadlock словили), никакие прослойки между кодом который это не умеет и базой вам это не сделают.
...
Рейтинг: 0 / 0
Как реализовать failover без потерь?
    #39983373
Guzya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk
Guzya,

А вот если вам надо именно failover неплановый - то это очевидно невозможно.
Вот код у вас на полпути в середине транзакции... мастер умер..
кто и как будет вам без обрыва эту транзакцию продолжать?

Нулевые потери в такой ситуации на уровне кода делаются который должен уметь retry транзакции в случае какого то сбоя (будь то сеть падала или мастер упал или deadlock словили), никакие прослойки между кодом который это не умеет и базой вам это не сделают.


То же думаю, что если та самая программа не умеет обрабатывать такие ситуации, то выхода особого нет.

Спасибо!
...
Рейтинг: 0 / 0
Как реализовать failover без потерь?
    #39983379
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
смена хоста в конфиге pgbouncer куда ходим на новый мастер
отстрел коннектов от pgbouncer к старому мастеру

Да сам при reload закроет все коннекты к старому адресу при первой возможности (то есть по окончании транзакции в пуле транзакций). С примечанием "closing because: database configuration changed" если log_disconnections вдруг включен.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как реализовать failover без потерь?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]