DBAtlas · Атлас эксплуатации баз данных

Настроить архивирование WAL для pgBackRest (archive-push/archive-get)

PostgreSQLБэкап и PITR

Команда

# postgresql.conf (changing archive_mode requires a restart):
wal_level = replica
archive_mode = on
archive_command = 'pgbackrest --stanza=<stanza> archive-push %p'
# On the restore/standby side (in postgresql.conf on PG12+):
restore_command = 'pgbackrest --stanza=<stanza> archive-get %f "%p"'

# /etc/pgbackrest/pgbackrest.conf (database host, local repo example):
[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
archive-async=y
spool-path=/var/spool/pgbackrest
process-max=4
compress-type=zst
start-fast=y

[<stanza>]
pg1-path=/var/lib/pgsql/16/data

Что делает

Заставляет PostgreSQL отправлять каждый завершённый сегмент WAL в репозиторий pgBackRest (archive-push) и получать его оттуда при восстановлении (archive-get); archive-async делает отправку параллельной и асинхронной через spool-каталог.

Когда использовать

Как первый шаг настройки физических бэкапов и PITR с pgBackRest, перед stanza-create.

Внимание

Пока archive_command завершается ошибкой, WAL накапливается в pg_wal, и при заполнении диска primary останавливается; следите за pg_stat_archiver.failed_count. С Patroni задавайте эти параметры через patroni.yml / edit-config, а не в postgresql.conf. Архивирование из двух разных кластеров в одну stanza повреждает репозиторий.

Открыть в DBAtlas →

Связанные материалы