pgBackRest용 WAL 아카이브 구성(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 디렉터리를 통해 전송을 병렬·비동기로 처리한다.
사용 시점
pgBackRest로 물리 백업과 PITR을 구성하는 첫 단계로, stanza-create 전에.
주의
archive_command가 실패하는 동안 WAL이 pg_wal에 쌓이고 디스크가 가득 차면 primary가 멈춘다. pg_stat_archiver.failed_count를 모니터링한다. Patroni 환경에서는 이 파라미터를 postgresql.conf 대신 patroni.yml / edit-config로 설정한다. 서로 다른 두 클러스터가 같은 stanza로 아카이브하면 저장소가 손상된다.