репликации автоматически обеспечивают механизм сохранения сегментов WAL, пока они не будут получены всеми резервными и главный сервер не будет удалять строки, находящиеся в статусе recovery conflict даже при отключении резервного.
Вместо использования слотов репликации для предотвращения удаления старых сегментов WAL можно применять wal_keep_segments, или сохранять сегменты в архиве с помощью команды archive_command. Тем не менее, эти методы часто приводят к тому, что хранится больше сегментов WAL, чем необходимо, в то время как слоты репликации оставляют только то количество сегментов, которое необходимо.
Т.е. эта опция юзается вместо wal_keep_segments.
Но если даже не указывать в конфиге patroni wal_keep_segments, то эта опция всё равно используется, что видно в dcs, и в конфиге postgresql.conf.
Что приводит к тому, например если реплика не работала, то при запуске patroni она не может войти в кластер, ибо wal_segments уже не существуют, которые ей нужны, и приходится делать pagroni reinit для этой ноды.
Можно в контексте patroni обойтись одними слотами?
Она используется совместно с wal_keep_segments. Если реплика не работала вместе с patroni, то слот удаляется и сегменты для слота не хранятся. Поэтому разумно использовать wal_keep_segments.
Обсуждают сегодня