Как настроить слоты репликации в patroni для сохранения неограниченного кол-ва WAL при отключении реплики?

Кто-нибудь может подсказать, как адекватно использовать слоты репликации в patroni (v. 3.2.1), чтобы иметь возможность хранить неограниченные WAL?
Дано: мастер-слэйв, репликация через слот репликации.
Если слэйв отключается, то мастер почему-то не хранит неограниченные WAL при настройке max_slot_wal_keep_size=-1. Максимум, что он сохранит - это установленное значение wal_keep_size (которое, не может быть меньше 128MB в patroni,кстати почему?). В итоге получается, что, отключая слэйв на небольшое время, мы теряем возможность его нормального запуска, так как нужные WAL уже будут удалены на мастере. Гуглил, проблема такая есть, можно решать ее увеличением wal_keep_size или через archive_command, но тогда какой смысл здесь имеют слоты, если они не работают?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
@pvlchv Автор вопроса
Решил проблему через постоянные слоты репликации. Важно, чтобы имена данных слотов совпадали с именами, заданными для членов кластера. При этом в каждом инстансе будет создан 1 слот, не совпадающий с текущим именем. Тогда мы сможем использовать параметр max_slot_wal_keep_size как положено. При отсутствии связи реплики с мастером и превышении max_slot_wal_keep_size, после checkpoint WAL адекватно удалятся.

dcs: 
  slots:
    slot_name_1: 
      type: physical
    slot_name_2: 
      type: physical
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Если wal_status становится lost - значит max_slot_wal_keep_size был изменён с дефолтного значения -1 и установлен в какое-то другое значение.
Потому что именно для этого добавляли настройку max_slot_wal_keep_size, чтобы отставший слот репликации не ронял базу.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы