Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! Уже несколько дней пытаюсь найти решение этого вопроса. Т.е. имеется приложение которое работает с PG, есть PG(мастер-реплика), есть ли возможность реализовать переключение на реплику без потерь данных\соединения. Понимаю, что нужен какой-то слой "буферизации" между приложением и PG, но какой? Пробовал pgbench -> pgbouncer -> HAproxy -> patroni. HAproxy достаточно быстро определяет переключение, но все равно операция занимаем несколько секунд, и pgbench отваливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 21:39 |
|
||
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Guzya Доброго дня всем! Уже несколько дней пытаюсь найти решение этого вопроса. Т.е. имеется приложение которое работает с PG, есть PG(мастер-реплика), есть ли возможность реализовать переключение на реплику без потерь данных\соединения. Понимаю, что нужен какой-то слой "буферизации" между приложением и PG, но какой? Пробовал pgbench -> pgbouncer -> HAproxy -> patroni. HAproxy достаточно быстро определяет переключение, но все равно операция занимаем несколько секунд, и pgbench отваливается. pgbouncer pause (в transaction pooling) switchover смена хоста в конфиге pgbouncer куда ходим на новый мастер отстрел коннектов от pgbouncer к старому мастеру pgbouncer resume *profit* и никаких haproxy не надо даже... ну или pgbouncer на паузу пока там haproxy разбирается что там и где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 21:58 |
|
||
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду пробовать! Но при failower получается не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 22:24 |
|
||
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Guzya, А вот если вам надо именно failover неплановый - то это очевидно невозможно. Вот код у вас на полпути в середине транзакции... мастер умер.. кто и как будет вам без обрыва эту транзакцию продолжать? Нулевые потери в такой ситуации на уровне кода делаются который должен уметь retry транзакции в случае какого то сбоя (будь то сеть падала или мастер упал или deadlock словили), никакие прослойки между кодом который это не умеет и базой вам это не сделают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 22:26 |
|
||
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk Guzya, А вот если вам надо именно failover неплановый - то это очевидно невозможно. Вот код у вас на полпути в середине транзакции... мастер умер.. кто и как будет вам без обрыва эту транзакцию продолжать? Нулевые потери в такой ситуации на уровне кода делаются который должен уметь retry транзакции в случае какого то сбоя (будь то сеть падала или мастер упал или deadlock словили), никакие прослойки между кодом который это не умеет и базой вам это не сделают. То же думаю, что если та самая программа не умеет обрабатывать такие ситуации, то выхода особого нет. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 22:31 |
|
||
|
Как реализовать failover без потерь?
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk смена хоста в конфиге pgbouncer куда ходим на новый мастер отстрел коннектов от pgbouncer к старому мастеру Да сам при reload закроет все коннекты к старому адресу при первой возможности (то есть по окончании транзакции в пуле транзакций). С примечанием "closing because: database configuration changed" если log_disconnections вдруг включен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2020, 22:44 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39983373&tid=1994564]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 16ms |
| total: | 165ms |

| 0 / 0 |
