Тип: | string |
Контекст: | sighup |
Перезапуск: | false |
Команда локальной оболочки, которая будет выполняться для архивации завершённого сегмента WAL. Любое вхождение %p
в этой строке заменяется путём архивируемого файла, а вхождение %f
заменяется только его именем. (Путь задаётся относительно рабочего каталога сервера, то есть каталога данных кластера.) Чтобы вставить в команду символ %
, его нужно записать как %%
. Важно, чтобы команда возвращала нулевой код выхода, только если она завершается успешно. За дополнительной информацией обратитесь к 3.
Этот параметр можно задать только в postgresql.conf или в командной строке при запуске сервера. Если режим архивации (archive_mode) не был включён при запуске, этот параметр игнорируется. Если значение archive_command
— пустая строка (по умолчанию), но archive_mode включён, архивация WAL временно отключается, но сервер продолжает накапливать файлы сегментов WAL в ожидании, что команда будет вскоре определена. Если в качестве archive_command
задать команду, которая ничего не делает, но сообщает об успешном завершении, например /bin/true
(или REM
в Windows), архивация по сути отключается, но при этом нарушается цепочка файлов WAL, необходимых для восстановления архива, поэтому такой вариант следует использовать только в особых случаях.
Рекомендации [EN]
На StackOverflow
На pgsql-hackers
- let's disallow ALTER ROLE bootstrap_superuser NOSUPERUSER
- Re: Hardening PostgreSQL via (optional) ban on local file system access
- Re: Use "WAL segment" instead of "log segment" consistently in user-facing messages
- Re: pg_rewind WAL segments deletion pitfall
- Re: last_archived_wal is not necessary the latest WAL file (was Re: pgsql: Add test case for an archive recovery corner case.)