Что делает pg_replication_slots.active f для WAL?

#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 .