#postgresql #wal
#postgresql #wal
Вопрос:
В документации Postgres указано следующее относительно pg_replication_slots.active
: True if this slot is currently actively being used
.
Что это на самом деле означает для значения false?
Например, будет ли WAL по-прежнему сохраняться, если значение равно false? Могу ли я затем установить значение true, и он продолжит реплицироваться с того места, где он остановился?
Комментарии:
1. Я предполагаю, что он неактивен, если подписка, использующая его, была отключена.
Ответ №1:
Из всех моих личных исследований кажется, что даже со active=False
слотом репликации:
- WAL по-прежнему закреплен и будет оставаться, даже если слот репликации есть
active=False
. - Невозможно явно установить
active
значениеTrue
. - Деактивация обычно происходит из-за того, что у подписчика возникла какая-то проблема, из-за которой он не смог безопасно считывать данные из WAL, реплицировать и перемещать указатель LSN.
- Перезапуск последователя, предполагающий, что затем ему удастся безопасно реплицироваться, обычно устраняет проблему, и слот автоматически изменится на
active=True
.