powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Неактивные слоты репликации и проблемы, которые они вызывают
3 сообщений из 3, страница 1 из 1
Неактивные слоты репликации и проблемы, которые они вызывают
    #39747200
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я всегда думал, что неактиные слоты репликации также препятствуют удалению WAL сегментов, как и активные. Но почитал исходники и усомнился в этом. Ведь неактивный слот репликации не имеет restart_lsn . Тот же самый вопрос по поводу удержания слотом xmin . У неактивного слота нет xmin . Насколько я понимаю, файл для неактвного слота репликации переименовывается в "<slot_name>.tmp" и удаляется после перезагрузки.

Код: sql
1.
2.
3.
4.
5.
select * from pg_replication_slots ;
      slot_name       | plugin | slot_type | datoid | database | active | active_pid | xmin | catalog_xmin | restart_lsn 
----------------------+--------+-----------+--------+----------+--------+------------+------+--------------+-------------
 barman_the_backupper |        | physical  |        |          | f      |            |      |              | 
(1 row)



Тогда откуда берутся проблемы, описанные, например, вот в этой статье? Речь идёт в моём случае о версии 9.5.

Ссылки:

[1] https://saifulmuhajir.web.id/postgresql-inactive-replication-slot-the-butterfly-effect
...
Рейтинг: 0 / 0
Неактивные слоты репликации и проблемы, которые они вызывают
    #39747314
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bff7755aЯ всегда думал, что неактиные слоты репликации также препятствуют удалению WAL сегментов, как и активные. Но почитал исходники и усомнился в этом. Ведь неактивный слот репликации не имеет restart_lsn . Тот же самый вопрос по поводу удержания слотом xmin . У неактивного слота нет xmin . Насколько я понимаю, файл для неактвного слота репликации переименовывается в "<slot_name>.tmp" и удаляется после перезагрузки.

Код: sql
1.
2.
3.
4.
5.
select * from pg_replication_slots ;
      slot_name       | plugin | slot_type | datoid | database | active | active_pid | xmin | catalog_xmin | restart_lsn 
----------------------+--------+-----------+--------+----------+--------+------------+------+--------------+-------------
 barman_the_backupper |        | physical  |        |          | f      |            |      |              | 
(1 row)



Тогда откуда берутся проблемы, описанные, например, вот в этой статье? Речь идёт в моём случае о версии 9.5.

Ссылки:

[1] https://saifulmuhajir.web.id/postgresql-inactive-replication-slot-the-butterfly-effect

Т.е. вы считаете что если реплика работающая по репликационному слоту отвалилась на час по сетевым причинам то база удалит все wal и реплика отвалится. Репликационные слоты для того и делались чтобы такого не происходило. ))

restart_lsn - "The address (LSN) of oldest WAL which still might be required by the consumer of this slot and thus won't be automatically removed during checkpoints. NULL if the LSN of this slot has never been reserved ."
Вы попробуйте почитать из слота а потом перестать читать... эффект будет несколько другой.

Слот из которого никогда не начинали читать - вопрос другой совсем.... но статья не про них, а про слоты которые работали а потом из них перестали читать.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Неактивные слоты репликации и проблемы, которые они вызывают
    #39747329
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bff7755a,

говоря о слотах репликации надо уточнять два вопроса:
слот у вас физический или логический - xmin и catalog_xmin не нужны для физических слотов, но нужны для logical decoding, как и пара других полей
был ли слот когда-либо использован - то есть есть ли у него restart_lsn. Вот тут как раз путаница, "неактивный" не равно "никогда не использовался"

Храним мы:
KeepLogSeg() сегментов
считаем слоты от самого старого ReplicationSlotsComputeRequiredLSN , а restart_lsn в свою очередь заполняет wal sender или через ReplicationSlotReserveWal сразу при создании слота с immediately_reserve = true

То есть если restart_lsn нет - значит слот ещё никем не использовался и относительно безобиден. Это примечание кстати я вижу в актуальной документации :
манThe address (LSN) of oldest WAL which still might be required by the consumer of this slot and thus won't be automatically removed during checkpoints. NULL if the LSN of this slot has never been reserved.

А если слот использовался когда-либо или был создан с immediately_reserve - то он начинает мешать удалять WAL сразу и до конца диска, если его не читать или не удалить.
Логические слоты плюс к тому начинают мешать автовакууму.

А pg_replslot/%s.tmp - это не про неактивные слоты, а про поломку во время создания/удаления слота и удаляются при старте базы (+см CreateSlotOnDisk).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Неактивные слоты репликации и проблемы, которые они вызывают
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]