При использовании логической репликации важно следить за ее состоянием и не допускать сущестенного отставания.
Для мониторинга логической репликации на стороне издателя в общем случае - запрос такой:
SELECT slot_name FROM pg_replication_slots INNER JOIN pg_current_wal_lsn() ON confirmed_flush_lsn < pg_current_wal_lsn;
И можно
SELECT slot_name FROM pg_replication_slots INNER JOIN pg_current_wal_lsn() ON confirmed_flush_lsn < (pg_current_wal_lsn - 4096);
(pg_current_wal_lsn - 4096), чтобы допускать некоторый лаг и ложно не срабатывать на незначительные отставания (в данном случае - в 4 килобайта, если я все правильно понял).
Запрос возвращает список имен отстающих слотов репликации на издателе (которые соответствуют именам подписок на подписчике).
Также обязательно мониторить свободное место на издателе, поскольку если оно заканчивается - то дальше запускать postgres нем можно только с толкача - то есть подцеплять дополнительный диск, переносить на него директорию /var/lib/pgsql/14/data/pg_wal и делать симлинк на нее в директорию /var/lib/pgsql/14/data/.
Просто удалить директорию pg_wal - нельзя