При использовании логической репликации важно следить за ее состоянием и не допускать сущестенного отставания.
Для мониторинга логической репликации на стороне издателя в общем случае - запрос такой:

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 - нельзя

Enter your comment. Wiki syntax is allowed:
 
  • linux_faq/postgres_logical_replication_monitoring.txt
  • Last modified: 2023/04/19 09:23
  • by admin