|
Неактивные слоты репликации и проблемы, которые они вызывают
|
|||
---|---|---|---|
#18+
Я всегда думал, что неактиные слоты репликации также препятствуют удалению WAL сегментов, как и активные. Но почитал исходники и усомнился в этом. Ведь неактивный слот репликации не имеет restart_lsn . Тот же самый вопрос по поводу удержания слотом xmin . У неактивного слота нет xmin . Насколько я понимаю, файл для неактвного слота репликации переименовывается в "<slot_name>.tmp" и удаляется после перезагрузки. Код: sql 1. 2. 3. 4. 5.
Тогда откуда берутся проблемы, описанные, например, вот в этой статье? Речь идёт в моём случае о версии 9.5. Ссылки: [1] https://saifulmuhajir.web.id/postgresql-inactive-replication-slot-the-butterfly-effect ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 11:08 |
|
Неактивные слоты репликации и проблемы, которые они вызывают
|
|||
---|---|---|---|
#18+
bff7755aЯ всегда думал, что неактиные слоты репликации также препятствуют удалению WAL сегментов, как и активные. Но почитал исходники и усомнился в этом. Ведь неактивный слот репликации не имеет restart_lsn . Тот же самый вопрос по поводу удержания слотом xmin . У неактивного слота нет xmin . Насколько я понимаю, файл для неактвного слота репликации переименовывается в "<slot_name>.tmp" и удаляется после перезагрузки. Код: sql 1. 2. 3. 4. 5.
Тогда откуда берутся проблемы, описанные, например, вот в этой статье? Речь идёт в моём случае о версии 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 12:51 |
|
Неактивные слоты репликации и проблемы, которые они вызывают
|
|||
---|---|---|---|
#18+
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). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 13:13 |
|
|
start [/forum/topic.php?fid=53&msg=39747200&tid=1995438]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 175ms |
0 / 0 |