pgBackRest 配置文件详解
下面是一份 最完整、最清晰、最可直接用于生产的 pgbackrest.conf 配置文件详解。
涵盖:全局参数、Stanza 参数、S3/远程 repo、高级参数、性能参数、保留策略、防踩坑说明。
pgBackRest 的配置文件采用 INI 格式:
[global] # 全局设置(所有 stanza 共享)
[stanza-name] # 针对某个 PostgreSQL 实例的配置
示例:
[global]
repo1-path=/data/pgbackrest/repo1
[main]
pg1-path=/var/lib/pgsql/16/data
备份仓库路径:
repo1-path=/data/pgbackrest/repo1
repo1-host=backup-server
repo1-host-user=postgres
📌 用于 DB -> repo 远程存储。
repo2-path=/data/repo2
repo3-type=s3
compress-type=zstd
compress-level=3
推荐使用 zstd,速度快、压缩比高。
log-level-console=info
log-level-file=detail
log-path=/var/log/pgbackrest
可选级别:error, warn, info, detail, debug
process-max=8
可以按 CPU 核心数调整,提升备份、恢复速度。
repo1-retention-full=7
仅保留最新 7 个 全量备份(差量和增量自动以 full 为基准删除)。
repo1-retention-full-type=time
repo1-retention-full=30 # 保留 30 天
通常不单独指定,pgBackRest 自动管理。
repo1-cipher-type=aes-256-cbc
repo1-cipher-pass="StrongPassword123!"
用于备份加密(可选)。
repo1-type=s3
repo1-s3-endpoint=s3.amazonaws.com
repo1-s3-bucket=pg-backup
repo1-s3-region=us-east-1
repo1-s3-key=<your-key>
repo1-s3-key-secret=<your-secret>
repo1-s3-verify-tls=n
MinIO 示例:
repo1-type=s3
repo1-s3-endpoint=minio.local:9000
repo1-s3-region=us-east-1
repo1-s3-bucket=pg
repo1-s3-key=minio
repo1-s3-key-secret=minio123
repo1-s3-uri-style=path
repo1-s3-verify-tls=n
pg1-path=/var/lib/pgsql/16/data
如果是远程备份(DB host != repo host),使用:
pg1-host=db-server
pg1-host-user=postgres
pg1-path=/var/lib/pgsql/16/data
WAL archive_command 会调用 archive-push:
postgresql.conf 需配置:
archive_mode=on
archive_command='pgbackrest --stanza=main archive-push %p'
pgbackrest.conf 不需要额外配置归档参数,除非:
限制 WAL 归档并发
archive-async=y
archive-push-queue-max=8
指定恢复目标
recovery-option=target-action=promote
recovery-option=target-time=2025-01-18 10:12:00
但通常不会写在配置文件中,而是恢复时运行命令:
pgbackrest --stanza=main --type=time --target='2025-01-18 10:12:00' restore
[global]
repo1-path=/data/pgbackrest/repo1
repo1-retention-full=7
compress-type=zstd
compress-level=3
log-level-console=info
log-level-file=detail
log-path=/var/log/pgbackrest
process-max=8
start-fast=y
[main]
pg1-path=/var/lib/pgsql/16/data
[global]
repo1-path=/data/pgbackrest/repo1
[main]
pg1-host=db01
pg1-host-user=postgres
pg1-path=/var/lib/pgsql/16/data
[global]
repo1-host=backup01
repo1-host-user=postgres
[global]
repo1-type=s3
repo1-s3-endpoint=minio.local:9000
repo1-s3-bucket=pg
repo1-s3-region=us-east-1
repo1-s3-uri-style=path
repo1-s3-key=minio
repo1-s3-key-secret=minio123
repo1-s3-verify-tls=n
repo1-path=/pgbackrest
repo1-retention-full=14
compress-type=zstd
compress-level=3
process-max=4
log-level-console=info
[main]
pg1-path=/var/lib/pgsql/16/data
repo1-fsync=n
checksum-page=n
repo1-checksum=y
用于带宽敏感环境:
bandwidth-limit=50MB/s
必须是 postgres 用户读写:
chown -R postgres:postgres /data/pgbackrest
chmod 750 /data/pgbackrest
需要:
ssh-copy-id postgres@repo-server
应为:
pgbackrest --stanza=main archive-push %p
不能加引号、不能缺参数。
MinIO 的自签名证书会报错:
repo1-s3-verify-tls=n