为 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 中堆积,磁盘写满时主库会停止;请监控 pg_stat_archiver.failed_count。使用 Patroni 时,请通过 patroni.yml / edit-config 而不是 postgresql.conf 设置这些参数。从两个不同的集群归档到同一个 stanza 会损坏存储库。