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

Как настроить слоты репликации в patroni (версия 3.2.1) таким образом, чтобы обеспечить хранение неограниченного количества WAL-файлов при использовании конфигурации мастер-слейв и репликации через слоты репликации? При установке <i>max_slot_wal_keep_size=-1</i> возникает проблема, что мастер хранит только WAL-файлы не более заданного значения параметра <i>wal_keep_size> (которое не может быть меньше 128MB в patroni). По какой причине такое ограничение существует? Когда слейв временно отключается, возникают трудности при его последующем запуске из-за потери необходимых WAL-файлов на мастере. Несмотря на то, что слот не удаляется, в таблице <i>pg_replication_slots</i> значение <i>wal_status</i> становится "<b>lost</b>". Как можно решить эту проблему?
  • 1 марта 2024 г. 7:58
Ответы на вопрос 2
Для настройки слотов репликации в Patroni для хранения большого объема WAL-файлов после отключения реплики, можно использовать следующий подход:

1. В конфигурационном файле Patroni (обычно это файл <i>patroni.yml</i>) укажите параметр <i>max_slot_wal_keep_size</i> равным значению, достаточному для хранения всех необходимых WAL-файлов, например, -1 или больше. Например:
```
max_slot_wal_keep_size: -1
```
2. Убедитесь, что параметр <i>wal_keep_size</i> в вашей конфигурации PostgreSQL также имеет значение, равное или большее <i>max_slot_wal_keep_size</i>:
```
wal_keep_size: 1GB
```
3. После установки этих параметров перезапустите Patroni.

Что касается проблемы с потерей WAL-файлов при временном отключении реплики и значением "<b>lost</b>" в столбце <i>wal_status</i> таблицы <i>pg_replication_slots</i, рекомендуется следовать следующим рекомендациям:

1. Перед временным отключением реплики убедитесь, что виртуальные слоты репликации не будут удалены. Это можно сделать, установив параметр <i>inactive=False</i> в конфигурации Patroni для реплики.
2. При запуске реплики после отключения обеспечьте, чтобы она могла получить все необходимые WAL-файлы. Для этого можно использовать инструменты резервного копирования WAL-файлов, такие как pg_basebackup или другие инструменты для восстановления данных.

Следуя этим рекомендациям, вы сможете настроить слоты репликации в Patroni таким образом, чтобы обеспечить хранение большого объема WAL-файлов и избежать потери необходимых данных при временном отключении реплики.
Если wal_status становится lost - значит max_slot_wal_keep_size был изменён с дефолтного значения -1 и установлен в какое-то другое значение. 
Потому что именно для этого добавляли настройку max_slot_wal_keep_size, чтобы отставший слот репликации не ронял базу.
Похожие вопросы