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

PostgreSQL вызывает команду из archive_command для каждого заполненного сегмента журнала. Команда вернула ошибку, сегмент остался в pg_wal, и база будет повторять попытку. Пока архив не заработает, сегменты копятся и точка, до которой можно восстановиться, стоит на месте.

Частые причины: в каталоге архива кончилось место, нет прав у пользователя postgres, недоступен сетевой ресурс, в архиве уже лежит файл с таким именем.

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

Следующая строка лога показывает саму команду: DETAIL: The failed archive command was: .... Выполните её руками под пользователем postgres, подставив имя сегмента, и посмотрите текст ошибки.

select archived_count, failed_count, last_archived_time, last_failed_time, last_failed_wal from pg_stat_archiver;

last_failed_time позже last_archived_time означает, что архив стоит прямо сейчас.

Что сделать

  1. Устранить причину: место, права, доступность хранилища.
  2. Дождаться, пока очередь разойдётся: failed_count перестанет расти, last_archived_time начнёт обновляться.
  3. Проверить размер pg_wal: после восстановления архива он уменьшится сам.
  4. Поставить наблюдение за pg_stat_archiver. Утилита rxdoctor проверяет это пунктом PG-12.