Что это значит

PostgreSQL не смог записать журнал предзаписи (WAL) и остановился с PANIC. Это защита от порчи данных. Пока место не появится, база не запустится.

Каталог pg_wal растёт без ограничения в трёх случаях. Не работает архивирование: archive_command падает, и сегменты ждут отправки. Есть слот репликации, потребитель которого выключен. Идёт очень долгая транзакция. Реже место съедают сами данные или журналы сервера на том же томе.

Как проверить

df -h /путь/к/данным
du -sh $PGDATA/pg_wal $PGDATA/log

Если база ещё работает:

select slot_name, active, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) from pg_replication_slots;
select archived_count, failed_count, last_failed_time from pg_stat_archiver;

Что сделать

  1. Не удалять файлы из pg_wal руками. Это ломает базу и реплики.
  2. Освободить место рядом: старые журналы сервера в $PGDATA/log, чужие файлы на том же томе. Или расширить том.
  3. Запустить базу и убрать причину: починить archive_command, удалить слот без потребителя через pg_drop_replication_slot.
  4. После этого PostgreSQL сам удалит лишние сегменты на ближайшем чекпоинте.
  5. На будущее ограничить слоты параметром max_slot_wal_keep_size и следить за свободным местом.

Подробно: Каталог pg_wal растёт, диск кончается, база встаёт.