更新时间:2025 年 6 月
版本:pgbackrest 2.55.1
官方用户手册:pgBackRest User Guide - RHEL
配置官方文档:pgBackRest - Configuration Reference
命令行官方文档:pgBackRest - Command Reference
配置文件与命令行
pgbackrest
可以完全使用命令行进行备份恢复操作,但对于复杂或者需设置大量选项的安装,配置文件更为实用。配置文件的默认位置是 /etc/pgbackrest/pgbackrest.conf
。如果该位置没有文件存在,则会检查旧的默认位置 /etc/pgbackrest.conf
优先级
命令行参数 优先级高于配置文件,可临时修改行为
建议
- 使用配置文件统一管理环境变量、主机名、数据路径等
- 使用命令行参数灵活控制操作类型与行为
Repository(存储库)
定义
repository
是 pgBackRest 存放 所有备份数据(backup)、WAL 日志归档(archive)、备份元数据的位置,也称为存储库或者备份仓库
类型
repository
当前支持多种类型
类型 | 常用/推荐 | 描述 |
---|---|---|
posix | 默认类型/常用 | 标准本地 POSIX 文件系统(例如 ext4、xfs、btrfs) |
cifs | - | CIFS(Windows SMB 共享)类型。类似 posix,但禁用了软链接与目录 fsync |
s3 | 推荐 | Amazon S3 或兼容 S3 协议的对象存储(如 MinIO、Wasabi、Ceph 等) |
azure | - | Microsoft Azure Blob 存储服务 |
gcs | - | Google Cloud Storage(GCP 的对象存储) |
sftp | - | 使用 SFTP 协议远程存储备份,适用于通过 SSH 储存备份的场景 |
注:
repository
同样支持 NFS 挂载用作 posix 类型,但需遵循 PostgreSQL 对 NFS 的使用建议,详情参考:PostgreSQL: Documentation: 17: 18.2. Creating a Database Cluster
多仓库(Multiple repositories)
简介
pgBackRest 支持配置多个备份仓库,通过 repoX
( 例如:repo1
、repo2
) 编号进行标识,每个仓库具有独立的存储位置与配置参数。这种机制称为 Multi-Repo(多仓库)
作用
- 本地 + 云端备份,增强容灾能力
repo1
用于快速本地恢复repo2
用于云端异地容灾(如 S3、Azure)
- 备份冗余,提升数据安全性
- 同时存储到多个仓库,防止单一存储故障丢失数据
- 冷热数据分离,优化存储成本
- 本地仓库只保留近期备份,云端仓库长期归档
- 支持备份迁移或升级
- 通过新 repo 可平滑将备份迁移至新存储系统
- 灵活备份策略与恢复选择
- 可选择从任意仓库进行恢复、校验或过期策略控制
- 便于测试和验证备份可靠性
- 可以从不同仓库分别恢复做验证测试,确保可用性
注意事项
archive-push
命令始终会将 WAL 推送到所有配置的存储库中的归档。如果某个存储库无法访问,但还要 WAL 正常推送到其他存储库,则必须启用archive-async=y
- 如果 WAL 无法推送到任何存储库,PostgreSQL 将不会将其从
pg_wal
目录中删除,这可能导致卷空间耗尽 - 每个存储库都需要单独设置备份。因为备份类型和保留策略会因存储库而异。同样,恢复操作必须指定一个存储库
常见配置项
POSIX 类型
[global]
# 控制台日志级别(off、error、warn、info、detail、debug、trace)
log-level-console=info
# 文件日志级别(off、error、warn、info、detail、debug、trace)
log-level-file=detail
# 文件压缩算法(支持 none、gz、bz2、lz4、zst)
compress-type=gz
# 文件压缩级别(1-19,默认 3)
compress-level=3
# 在备份开始前,pgbackrest 自动发起一个 checkpoint,而不是等待 PG 的 checkpoint(会比较慢)
# 推荐配置
start-fast=y
# 仓库类型为本地 POSIX 文件系统
repo1-type=posix
# 备份(backup)和存档(archive)存储的路径
repo1-path=/data/pgbackrest
# 是否启用硬链接节省空间
repo1-hardlink=y
# 保留全量备份数量
repo1-retention-full=2
# 全量备份过期策略:count 或 time
repo1-retention-full-type=count
# 保留差异备份数量
repo1-retention-diff=4
# 加密算法(可选:aes-256-cbc)
repo1-cipher-type=aes-256-cbc
# 加密密钥
repo1-cipher-pass=YOUR_ENCRYPT_PASSWORD
[main]
# socket 目录,注意与 PG 的配置 unix_socket_directories 一致
pg1-socket-path=/tmp
# 登录的数据库
pg1-database=postgres
# 登录的数据库用户
pg1-user=postgres
# PostgreSQL 数据目录
pg1-path=/data/pgsql/17
S3 类型
[global]
# 控制台日志级别(off、error、warn、info、detail、debug、trace)
log-level-console=info
# 文件日志级别(off、error、warn、info、detail、debug、trace)
log-level-file=detail
# 文件压缩算法(支持 none、gz、bz2、lz4、zst)
compress-type=gz
# 文件压缩级别(1-19,默认 3)
compress-level=3
# 在备份开始前,pgbackrest 自动发起一个 checkpoint,而不是等待 PG 的 checkpoint(会比较慢)
# 推荐配置
start-fast=y
# 仓库类型为 S3
repo1-type=s3
# 仓库路径
repo1-path=/pgbackrest
# S3 的 bucket 名称
repo1-s3-bucket=my-bucket
# S3 区域
repo1-s3-region=us-east-1
# S3 endpoint,兼容 MinIO/Wasabi 等
repo1-s3-endpoint=s3.amazonaws.com
# S3 访问密钥 ID
repo1-s3-key=AKIA...
# S3 密钥
repo1-s3-key-secret=xxxxxxxxxxxx
# S3 URI 风格,host 或 path
repo1-s3-uri-style=host
# 是否验证 TLS
repo1-storage-verify-tls=y
# 全量备份数量
repo1-retention-full=3
# 全量过期策略
repo1-retention-full-type=count
# 差异备份数量
repo1-retention-diff=4
# 启用加密
repo1-cipher-type=aes-256-cbc
# 加密密钥
repo1-cipher-pass=YOUR_ENCRYPT_PASSWORD
[main]
# socket 目录,注意与 PG 的配置 unix_socket_directories 一致
pg1-socket-path=/tmp
# 登录的数据库
pg1-database=postgres
# 登录的数据库用户
pg1-user=postgres
# PostgreSQL 数据目录
pg1-path=/data/pgsql/17
远程 Repository
注:远程 Repository (独立备份主机)需要 免密 SSH 或者 TLS 认证
注:使用远程 Repository 时,最好将服务通过
systemd
管理
主库配置
[global]
# 控制台日志级别(off、error、warn、info、detail、debug、trace)
log-level-console=info
# 文件日志级别(off、error、warn、info、detail、debug、trace)
log-level-file=detail
# 文件压缩算法(支持 none、gz、bz2、lz4、zst)
compress-type=gz
# 文件压缩级别(1-19,默认 3)
compress-level=3
# 在备份开始前,pgbackrest 自动发起一个 checkpoint,而不是等待 PG 的 checkpoint(会比较慢)
# 推荐配置
start-fast=y
# 仓库服务器主机名(可为 IP)
repo1-host=repo-server
# 仓库服务器 SSH 用户(需配置免密)
repo1-host-user=pgbackrest
# 仓库服务器 SSH 端口
repo1-host-port=22
# 仓库在远程服务器上的路径
repo1-path=/data/pgbackrest
# 仓库类型为 POSIX(远程主机本地文件系统)
repo1-type=posix
# 全量备份保留数量
repo1-retention-full=2
# 差异备份保留数量
repo1-retention-diff=4
[main]
# PostgreSQL 数据目录
pg1-path=/data/17/data
远程库配置
[global]
# 控制台日志级别(off、error、warn、info、detail、debug、trace)
log-level-console=info
# 文件日志级别(off、error、warn、info、detail、debug、trace)
log-level-file=detail
# 文件压缩算法(支持 none、gz、bz2、lz4、zst)
compress-type=gz
# 文件压缩级别(1-19,默认 3)
compress-level=3
# 在备份开始前,pgbackrest 自动发起一个 checkpoint,而不是等待 PG 的 checkpoint(会比较慢)
# 推荐配置
start-fast=y
# 仓库路径
repo1-path=/data/pgbackrest
# 仓库类型为本地 POSIX
repo1-type=posix
Stanza(配置节)
定义
Stanza 是 pgBackRest 中的逻辑配置单元,它代表一个特定的 PostgreSQL 数据库集群,并定义了该集群的备份如何存储、管理和恢复
作用
用于 隔离和管理不同 PostgreSQL 集群 的备份,每个集群用不同的 stanza 名称。名称可以自定义,例如 main
、pg17
、prod-db
,在命令和配置中通过 --stanza=xxx
指定
多实例(multi-stanza)
参考:pgBackRest User Guide - RHEL
允许在一个 stanza 下配置多个 PostgreSQL 实例(如主节点 + 多个从节点)
作用和意义
- 实现主从备份容错:主库无法备份时自动使用从库。
- 支持多节点还原选择:恢复时可选择从哪个节点恢复数据。
- 用于分布式部署环境:例如 PostgreSQL 主从复制架构
示例
# stanza 名为 main
[main]
pg1-host=db-master # 主节点
pg1-path=/var/lib/pgsql/15/data
pg1-port=5432
pg2-host=db-standby1 # 从节点1
pg2-path=/var/lib/pgsql/15/data
pg2-port=5432
pg3-host=db-standby2 # 从节点2
pg3-path=/var/lib/pgsql/15/data
pg3-port=5432
常用配置项
# --- 这是全局配置段 ---
[global]
# 本地备份仓库路径
repo1-path=/var/lib/pgbackrest
# 开启压缩(lz4 推荐,兼顾压缩比和性能)
compress-type=lz4
# 控制台日志级别(建议 info 或 warn)
log-level-console=info
# 快速备份启动
start-fast=y
# 全量备份保留数量(例如保留最近2个)
repo1-retention-full=2
# --- 这是 stanza "main" 的配置段 ---
[main]
# PostgreSQL 数据目录(必须与实际路径一致)
pg1-path=/data/pgsql/17/data
# PostgreSQL 实例端口(可选)
pg1-port=5432
# PostgreSQL 用户用于连接(可选)
pg1-user=postgres
# PostgreSQL 主机名(本地可省略)
# pg1-host=127.0.0.1
# 如果 archive_command 使用了 SSH 推送 WAL 日志,这里需要指定主机和路径
# pg1-host-user=postgres
# pg1-host-path=/data/pgsql/17/data
# 当使用 SSH 模式远程备份时可启用(本地可忽略)
# pg1-host-config=/etc/pgbackrest/pgbackrest.conf
示例 - 本地备份
主机
主机名 | 操作系统 | IP | 角色 | 安装软件 |
---|---|---|---|---|
postgresql-01.db.local | AlmaLinux 9.6 | 192.168.111.196 | 数据库主机 | PostgreSQL 17 pgbackrest 2.55.x |
部署软件过程略
准备
基础变量设置
# 本地 repository 目录
PGBACKREST_REPO_DIR="/data/pgbackrest"
创建 repository
目录
mkdir -p ${PGBACKREST_REPO_DIR}
chown -R postgres:postgres ${PGBACKREST_REPO_DIR}
配置
pgbackrest 配置
生成加密秘钥
openssl rand -base64 48
配置
vim /etc/pgbackrest/pgbackrest.conf
[global]
# 控制台日志级别(off、error、warn、info、detail、debug、trace)
log-level-console=info
# 文件日志级别(off、error、warn、info、detail、debug、trace)
log-level-file=detail
# 文件压缩算法(支持 none、gz、bz2、lz4、zst)
compress-type=gz
# 文件压缩级别(1-19,默认 3)
compress-level=3
# 在备份开始前,pgbackrest 自动发起一个 checkpoint,而不是等待 PG 的 checkpoint(会比较慢)
# 推荐配置
start-fast=y
# 仓库类型为本地 POSIX 文件系统
repo1-type=posix
# 备份(backup)和存档(archive)存储的路径
repo1-path=/data/pgbackrest
# 是否启用硬链接节省空间
repo1-hardlink=y
# 保留全量备份数量
repo1-retention-full=2
# 全量备份过期策略:count 或 time
repo1-retention-full-type=count
# 保留差异备份数量
repo1-retention-diff=4
# 加密算法(可选:aes-256-cbc)
repo1-cipher-type=aes-256-cbc
# 加密密钥
repo1-cipher-pass=9Ys1VvOBuK9cqXGHMty9UQmvWHYll2c6pBp3tDLmrqi9jqASyNIgLPj0cdfnWyAT
[demo]
# socket 目录,注意与 PG 的配置 unix_socket_directories 一致
pg1-socket-path=/tmp
# 登录的数据库
pg1-database=postgres
# 登录的数据库用户
pg1-user=postgres
# PostgreSQL 数据目录
pg1-path=/data/pgsql/17
注:一旦配置了仓库并创建了
stanza
并进行了检查,仓库加密设置就不能再更改
创建 stanza
sudo -iu postgres pgbackrest --stanza=demo --log-level-console=info stanza-create
# 输出如下信息
2025-06-18 21:43:27.557 P00 INFO: stanza-create command begin 2.55.1: --exec-id=43797-0ac6bfb6 --log-level-console=info --log-level-file=detail --pg1-database=postgres --pg1-path=/data/pgsql/17 --pg1-socket-path=/tmp --pg1-user=postgres --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/data/pgbackrest --repo1-type=posix --stanza=demo
2025-06-18 21:43:27.595 P00 INFO: stanza-create for stanza 'demo' on repo1
2025-06-18 21:43:27.610 P00 INFO: stanza-create command end: completed successfully (59ms)
PG 配置
修改 PostgreSQL 配置以支持 WAL 归档备份
$ vim ${PGDATA}/postgresql.conf
wal_level = replica
max_wal_senders = 3
wal_keep_size = 128MB
archive_mode = on
archive_timeout = 60
# stanza 为 demo,需要与配置一致
archive_command = '/usr/bin/pgbackrest --stanza=demo archive-push %p'
重启生效
systemctl restart postgresql-${PG_MAJOR_VERSION}
检查配置
sudo -u postgres pgbackrest --stanza=demo --log-level-console=info check
# 输出如下信息
2025-06-18 21:45:50.865 P00 INFO: check command begin 2.55.1: --exec-id=43892-06f2af46 --log-level-console=info --log-level-file=detail --pg1-database=postgres --pg1-path=/data/pgsql/17 --pg1-socket-path=/tmp --pg1-user=postgres --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/data/pgbackrest --repo1-type=posix --stanza=demo
2025-06-18 21:45:50.887 P00 INFO: check repo1 configuration (primary)
2025-06-18 21:45:50.970 P00 INFO: check repo1 archive for WAL (primary)
2025-06-18 21:45:51.272 P00 INFO: WAL segment 000000010000000000000003 successfully archived to '/data/pgbackrest/archive/demo/17-1/0000000100000000/000000010000000000000003-f66c3937c6d3b24b1251a91c5666d3cc06d70df0.gz' on repo1
2025-06-18 21:45:51.272 P00 INFO: check command end: completed successfully (412ms)
备份操作
执行备份
注:默认情况下(不指定
--type
选项),pgbackrest 会尝试执行增量备份。但是,增量备份必须基于完整备份,如果不存在完整备份,pgbackrest 会直接执行完整备份
完整备份
sudo -iu postgres pgbackrest --stanza=demo \
--type=full \
--log-level-console=info \
backup
# 输出信息
2025-06-18 21:50:05.886 P00 INFO: backup command begin 2.55.1: --compress-level=3 --compress-type=gz --exec-id=43964-fd79b26b --log-level-console=info --log-level-file=detail --pg1-database=postgres --pg1-path=/data/pgsql/17 --pg1-socket-path=/tmp --pg1-user=postgres --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-hardlink --repo1-path=/data/pgbackrest --repo1-retention-diff=4 --repo1-retention-full=2 --repo1-retention-full-type=count --repo1-type=posix --stanza=demo --type=full
2025-06-18 21:50:05.917 P00 INFO: execute non-exclusive backup start: backup begins after the next regular checkpoint completes
2025-06-18 21:50:06.110 P00 INFO: backup start archive = 000000010000000000000006, lsn = 0/6000028
2025-06-18 21:50:06.110 P00 INFO: check archive for prior segment 000000010000000000000005
2025-06-18 21:50:10.210 P00 INFO: execute non-exclusive backup stop and wait for all WAL segments to archive
2025-06-18 21:50:10.266 P00 INFO: backup stop archive = 000000010000000000000006, lsn = 0/6000120
2025-06-18 21:50:10.268 P00 INFO: check archive for segment(s) 000000010000000000000006:000000010000000000000006
2025-06-18 21:50:10.591 P00 INFO: new backup label = 20250618-215005F
2025-06-18 21:50:10.660 P00 INFO: full backup size = 52.7MB, file total = 1775
2025-06-18 21:50:10.661 P00 INFO: backup command end: completed successfully (4780ms)
2025-06-18 21:50:10.661 P00 INFO: expire command begin 2.55.1: --exec-id=43964-fd79b26b --log-level-console=info --log-level-file=detail --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/data/pgbackrest --repo1-retention-diff=4 --repo1-retention-full=2 --repo1-retention-full-type=count --repo1-type=posix --stanza=demo
2025-06-18 21:50:10.662 P00 INFO: expire command end: completed successfully (1ms)
差异备份
sudo -iu postgres pgbackrest --stanza=demo \
--type=diff \
--log-level-console=info \
backup
增量备份
基于上一个备份(全量或差异)做增量备份
sudo -iu postgres pgbackrest --stanza=demo \
--type=incr \
--log-level-console=info \
backup
定时备份
查看备份信息
sudo -iu postgres pgbackrest info
# 输出信息
stanza: demo
status: ok
cipher: aes-256-cbc
db (current)
wal archive min/max (17): 000000010000000000000003/000000010000000000000014
full backup: 20250618-215005F
timestamp start/stop: 2025-06-18 21:50:05+08 / 2025-06-18 21:50:10+08
wal start/stop: 000000010000000000000006 / 000000010000000000000006
database size: 52.7MB, database backup size: 52.7MB
repo1: backup set size: 9.1MB, backup size: 9.1MB
diff backup: 20250618-215005F_20250618-215632D
timestamp start/stop: 2025-06-18 21:56:32+08 / 2025-06-18 21:56:35+08
wal start/stop: 00000001000000000000000A / 00000001000000000000000A
database size: 52.7MB, database backup size: 536.3KB
repo1: backup set size: 9.1MB, backup size: 155KB
backup reference total: 1 full
diff backup: 20250618-215005F_20250618-215953D
timestamp start/stop: 2025-06-18 21:59:53+08 / 2025-06-18 22:04:14+08
wal start/stop: 00000001000000000000000D / 000000010000000000000011
database size: 75.0MB, database backup size: 22.9MB
repo1: backup set size: 11MB, backup size: 2MB
backup reference total: 1 full
incr backup: 20250618-215005F_20250618-220716I
timestamp start/stop: 2025-06-18 22:07:16+08 / 2025-06-18 22:07:18+08
wal start/stop: 000000010000000000000013 / 000000010000000000000014
database size: 75.0MB, database backup size: 1.3MB
repo1: backup set size: 11MB, backup size: 243KB
backup reference total: 1 full, 1 diff
查看备份文件结构
$ tree /data/pgbackrest/ -L 3
/data/pgbackrest/
├── archive
│ └── demo
│ ├── 17-1
│ ├── archive.info
│ └── archive.info.copy
└── backup
└── demo
├── 20250618-215005F
├── 20250618-215005F_20250618-215632D
├── 20250618-215005F_20250618-215953D
├── 20250618-215005F_20250618-220716I
├── backup.history
├── backup.info
├── backup.info.copy
└── latest -> 20250618-215005F_20250618-220716I
恢复操作
恢复方式非常多,此处只列举三种方式
- 直接恢复
- 恢复指定备份
- PITR(指定时间点恢复)
注:恢复前必须先停止 PG
停止 PG
停止 PG
systemctl stop postgresql-${PG_MAJOR_VERSION}
迁移当前的数据目录(可选)
sudo -iu postgres mv ${PGDATA} ${PGDATA}-bak-$(date +"%Y%m%d-%H%M")
创建新数据目录
sudo -iu postgres mkdir -p ${PGDATA}
直接恢复(推荐)
注:默认直接恢复(等同于
--set=latest
、--type=default
、--target-action=promote
)会自动选择最新的可用备份,恢复到 WAL 流末尾,并自动增加 timeline
sudo -iu postgres pgbackrest --stanza=demo restore
# 输出如下信息
2025-06-19 01:09:37.504 P00 INFO: restore command begin 2.55.1: --exec-id=47225-0a613290 --log-level-console=info --log-level-file=detail --pg1-path=/data/pgsql/17 --repo1-cipher-pass=<redacted> --repo1-cipher-type=aes-256-cbc --repo1-path=/data/pgbackrest --repo1-type=posix --stanza=demo
2025-06-19 01:09:37.527 P00 INFO: repo1: restore backup set 20250618-215005F_20250618-220716I, recovery will start at 2025-06-18 22:07:16
2025-06-19 01:09:39.849 P00 INFO: write updated /data/pgsql/17/postgresql.auto.conf
2025-06-19 01:09:39.853 P00 INFO: restore global/pg_control (performed last to ensure aborted restores cannot be started)
2025-06-19 01:09:39.854 P00 INFO: restore size = 75.0MB, file total = 2082
2025-06-19 01:09:39.854 P00 INFO: restore command end: completed successfully (2356ms)
恢复指定备份
查看备份
sudo -iu postgres pgbackrest --stanza=demo info
指定备份恢复
sudo -iu postgres pgbackrest \
--stanza=demo \
--set=20250618-215005F_20250618-215632D \
--type=immediate \
--target-action=promote \
restore
# 默认 --type=immediate 时,会保留 recovery.signal,使用 --target-action=promote 可以直接切换时间线
PITR
参考:pgBackRest User Guide - RHEL
sudo -iu postgres pgbackrest \
--stanza=demo \
--type=time \
--target="2025-06-18 21:57:00+08" \
--target-timeline=1 \
--target-action=promote \
--log-level-console=detail \
restore
# 注:此处指定时间线 --target-timeline=1。因为前面已经做了多次恢复,指定时间线防止出现恢复截止错误: < FATAL: recovery ended before configured recovery target was reached >
# 正常情况下 --target-timeline=latest
# 默认 --type=time 时,会保留 recovery.signal,使用 --target-action=promote 可以直接切换时间线
启动数据库
systemctl start postgresql-${PG_MAJOR_VERSION}
监控
pgbackrest 可以以 JSON 格式输出有关存储库的信息,包括每个 stanza 的所有备份列表和 WAL 归档信息
示例
PostgreSQL 的 COPY
命令允许将 pgBackRest 信息加载到表中。该示例将此逻辑封装在一个函数中,该函数可用于执行实时查询
创建 SQL 文件
mkdir -p /data/pgsql/sql/
# 信息监控 SQL
$ vim /data/pgsql/sql/pgsql-pgbackrest-info.sql
-- An example of monitoring pgBackRest from within PostgreSQL
--
-- Use copy to export data from the pgBackRest info command into the jsonb
-- type so it can be queried directly by PostgreSQL.
-- Create monitor schema
create schema monitor;
-- Get pgBackRest info in JSON format
create function monitor.pgbackrest_info()
returns jsonb AS $$
declare
data jsonb;
begin
-- Create a temp table to hold the JSON data
create temp table temp_pgbackrest_data (data text);
-- Copy data into the table directly from the pgBackRest info command
copy temp_pgbackrest_data (data)
from program
'pgbackrest --output=json info' (format text);
select replace(temp_pgbackrest_data.data, E'\n', '\n')::jsonb
into data
from temp_pgbackrest_data;
drop table temp_pgbackrest_data;
return data;
end $$ language plpgsql;
# 查询 SQL
$ vim /data/pgsql/sql/pgsql-pgbackrest-query.sql
-- Get last successful backup for each stanza
--
-- Requires the monitor.pgbackrest_info function.
with stanza as
(
select data->'name' as name,
data->'backup'->(
jsonb_array_length(data->'backup') - 1) as last_backup,
data->'archive'->(
jsonb_array_length(data->'archive') - 1) as current_archive
from jsonb_array_elements(monitor.pgbackrest_info()) as data
)
select name,
to_timestamp(
(last_backup->'timestamp'->>'stop')::numeric) as last_successful_backup,
current_archive->>'max' as last_archived_wal
from stanza;
授权
chown -R postgres:postgres /data/pgsql/sql/
运行 SQL
sudo -iu postgres \
psql -f /data/pgsql/sql/pgsql-pgbackrest-info.sql
检验
现在可以使用 monitor.pgbackrest_info()
函数来确定某个配置段的最后一次成功备份时间和归档的 WAL
sudo -iu postgres psql -f \
/data/pgsql/sql/pgsql-pgbackrest-query.sql
# 输出如下信息
name | last_successful_backup | last_archived_wal
--------+------------------------+--------------------------
"demo" | 2025-06-18 22:07:18+08 | 00000006000000000000000D
(1 row)