5

Очистка слотов

Удаление неактивных слотов, предотвращение заполнения диска

20 минУрок 5 из 6
Прогресс0%

Теория

Неактивные слоты могут привести к заполнению диска, так как PostgreSQL не удаляет WAL, пока слот их требует.

Регулярно проверяйте и удаляйте неиспользуемые слоты.

Удаление слота безопасно, если реплика больше не подключена к нему.

Используйте pg_drop_physical_replication_slot() для удаления слотов.

Практика

1. Поиск неактивных слотов

Найдите слоты, которые не используются:

Поиск неактивных слотов
Команда
sudo -u postgres psql -c "SELECT slot_name, active, pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn) AS lag_bytes FROM pg_replication_slots WHERE active = false;"
Вывод:
 slot_name | active | lag_bytes 
-----------+--------+-----------
(0 rows)

2. Удаление неактивного слота

Удалите слот, который больше не нужен:

Удаление неактивного слота
Команда
sudo -u postgres psql -c "SELECT pg_drop_replication_slot('standby2_slot');"
Вывод:
 pg_drop_replication_slot 
--------------------------
(1 row)

3. Проверка после удаления

Убедитесь, что слот удалён:

Проверка после удаления
Команда
sudo -u postgres psql -c "SELECT slot_name FROM pg_replication_slots;"
Вывод:
   slot_name   
---------------
 standby1_slot
(1 row)

Проверка

Проверьте, что удалённый слот больше не существует:

Проверка
Команда
sudo -u postgres psql -c "SELECT count(*) FROM pg_replication_slots WHERE slot_name = 'standby2_slot';"
Вывод:
 count 
-------
     0

Пройдите викторину

Для завершения урока необходимо пройти викторину