Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Падение асинхронной репликации при сетевом разрыве  [new]
Shab
Member

Откуда: Moscow
Сообщений: 241
Добрый день!

Наблюдаю остановку доставки логов на реплику при разрыве-восстановлении соединения.
postgres 13.1, master-replication, async

Проверял как работает отставание на стендбае
recovery_min_apply_delay=1h
переружаю реплику, делаю create table на праймари, через 5 минут вижу в pg_stat_replication отставание растет. Пока все нормально, новые логи качаются на реплику, но не накатываются.

Рвем соединение на мастере опусканием сети. Делаем pg_switch_wal, наблюдаем пустой pg_stat_replication. Поднимаем сеть. Ожидаем появления записи в pg_stat_replication. Облом.
FATAL: terminating walsender due to timeout

Реплика
FATAL: terminating walreceiver due to timeout
Перегружаем реплику. А она говорит, что отставание в пределах нормы и логи качать не желает.
consistent recovery state reached at 16/6B01C640
На праймари пустой pg_stat_replication.

Вопрос: Что подкрутить, чтобы доставка логов восстанавливала свою работу при восстановлении связи?
FATAL: terminating walreceiver due to timeout - зачем ему приказали падать, приложения обычно пишут так, чтобы переконнекчиваться по иксепшену на разрыве соединения.
23 мар 21, 12:38    [22298735]     Ответить | Цитировать Сообщить модератору
 Re: Падение асинхронной репликации при сетевом разрыве  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1280
Shab,

выключить recovery_min_apply_delay.
У реплики уже локально лежат загруженные ранее WAL'ы, код startup делает не совсем лишённую смысла мысль, что walreceiver можно запустить когда обработаем всё что уже лежит локально и не надо это перекачивать заново.

Сообщение было отредактировано: 23 мар 21, 12:51
23 мар 21, 12:58    [22298752]     Ответить | Цитировать Сообщить модератору
 Re: Падение асинхронной репликации при сетевом разрыве  [new]
Shab
Member

Откуда: Moscow
Сообщений: 241
Melkij,

У меня отстающая реплика. Я хочу чтобы она отставала на указанное время, но логи качались без отставания.
Это нужно, чтобы в любое время докатить PITR куда надо.

Да и вообще, перегрузка реплики - это была просто проверка. Переподнимание walreceiver вот главная проблема.

Сообщение было отредактировано: 23 мар 21, 13:06
23 мар 21, 13:10    [22298761]     Ответить | Цитировать Сообщить модератору
 Re: Падение асинхронной репликации при сетевом разрыве  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 1280
Shab,

та неважно что вы хотите.
walreceiver запускается (и перезапускается) только когда обработаны все уже загруженные wal. Именно так работает startup с recovery_min_apply_delay. Корректируйте хотелки относительно этого факта.

Для pitr делают архив wal. Отдельная реплика с recovery_min_apply_delay может помочь быстрее развернуться, но не заменяет сам архив wal.
23 мар 21, 13:34    [22298773]     Ответить | Цитировать Сообщить модератору
 Re: Падение асинхронной репликации при сетевом разрыве  [new]
Shab
Member

Откуда: Moscow
Сообщений: 241
Попробую поиграться с wal_receiver_timeout=0

Спасибо

ps: да, он не отваливается, а ждет появления сети. Умница!

Сообщение было отредактировано: 23 мар 21, 13:51
23 мар 21, 13:52    [22298786]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить