这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
命令参考
pgBackRest 命令参考手册,包含备份、恢复、归档及管理操作的全部选项。
原始页面: https://pgbackrest.org/command.html
简介
pgBackRest 通过命令来执行各项功能。本文档对每个命令的选项进行了详尽列举——即每个适用于某命令的选项都会随该命令一并列出,即便该选项同样适用于其他命令。所有可在 pgbackrest.conf 中配置的选项均包含在内。
在 pgbackrest.conf 中配置的非布尔型选项,可在命令行上使用 reset- 前缀将其重置为默认值。这一功能在直接于仓库主机上执行恢复时很有用。通常情况下,pgBackRest 检测到数据库主机是远程主机后会报错,因为恢复操作无法远程执行。在命令行添加 --reset-pg1-host 后,pgBackRest 将忽略远程数据库主机并在本地执行恢复。此时可能还需要传入新的 --pg1-path,将恢复操作强制指向特定路径,而非使用数据库主机上的原有路径。
在命令行上,可使用 no- 前缀将布尔型选项设置为 false。
任何选项均可通过环境变量设置,方法是加上 PGBACKREST_ 前缀,将选项名称全部大写,并将 - 替换为 _,例如 pg1-path 对应 PGBACKREST_PG1_PATH,stanza 对应 PGBACKREST_STANZA。布尔型选项的表示方式与配置文件中相同,例如 PGBACKREST_COMPRESS="n",且不支持 reset-* 变体。可在命令行或配置文件中多次指定的选项,可通过冒号分隔多个值来设置,例如 PGBACKREST_DB_INCLUDE="db1:db2"。
命令行选项优先于环境变量选项,环境变量选项优先于配置文件选项。
关于选项类型的说明,请参阅 配置简介。
命令列表
1 - 注解命令(annotate)
pgBackRest annotate 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: annotate
backup 命令执行时附加的注解,可在事后通过 annotate 命令进行添加、修改或删除。
命令选项
备份注解选项(--annotation)
为备份添加用户自定义键值对注解。
可为备份附加具有描述性的键值对。此选项可多次使用,以添加多条注解。
使用 --set 指定备份后,注解将显示在 info 命令的文本输出中,并始终出现在 JSON 输出中。
example: --annotation=source="Sunday backup for website database"
备份集选项(--set)
要添加注解的目标备份集。
指定需要添加注解的备份集名称。
example: --set=20150131-153358F_20150131-153401I
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
复制、压缩、加密等操作均使用此缓冲区。实际使用的缓冲区数量取决于各选项配置,每个操作可能还会额外占用内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
若需使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,此选项设置网络压缩级别,以减少网络流量。若 compress-type 不等于 none,则忽略 compress-level-network,改用 compress-level,从而避免文件被压缩两次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项可指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下所有扩展名为 .conf 的文件将与 pgBackRest 主配置文件合并,共同构成完整配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置可覆盖 --config 和 --config-include-path 的默认基础路径,但仅在这两个选项未在命令行中明确指定时生效。
例如,若只传入 --config-path=/conf/pgbackrest,则 --config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读写操作的超时时间,单位为秒。
注意:整个读写操作无需在此时间内全部完成,但必须持续有进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 在此路径下创建锁文件,防止相互冲突的操作并发执行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中创建的文件具有合理的权限。默认目录权限为 0750,文件权限为 0640;锁文件和日志目录的权限分别为 0770 和 0660。
若要使用执行用户自身的 umask,可在配置文件中设置 neutral-umask=n,或在命令行传入 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。普通进程通常无权提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远程进程在协议层等待接收新消息的超时时间,单位为秒。此设置可防止进程无限期等待消息。
注意: protocol-timeout 的值必须大于 db-timeout。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活。
在 socket 连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,包含集群的位置、备份方式、归档选项等信息。大多数数据库主机只有一个 PostgreSQL 集群,因此只需配置一个 stanza;备份服务器则需为每个待备份的集群各配置一个 stanza。
命名 stanza 时,用主库名称固然直观,但用描述数据库实际用途的名称(如 app 或 dw)更为合适,因为该名称对主库和所有副本均适用,而非仅用于本地集群(如 main 或 prod)。
TCP 保活计数选项(--tcp-keep-alive-count)
保活计数。
连接被判定为断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活间隔时间。
未被确认的 TCP 保活消息在多少秒后重新发送。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均经过加密,连接对象存储(如 S3)时默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置在没有特殊安全要求的情况下是合理的选择。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均经过加密,连接对象存储(如 S3)时默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 指定)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
在子进程中启用日志记录。
为此进程创建的所有子进程启用文件日志,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳。某些特殊场景(如生成文档时)会禁用此选项。
default: y
example: --no-log-timestamp
仓库选项
指定仓库选项(--repo)
设置仓库。
指定命令操作的目标仓库。
例如,可使用此选项从指定仓库执行恢复,而不是由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录下,但通常建议指定一个前缀(如 /repo),以便日志及其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管身份自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密所使用的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 也始终在客户端执行加密。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录下,但通常建议指定一个前缀(如 /repo),以便日志及其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
连接存储服务所使用的端点,可更新为本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账户进行授权。service - 使用本地存储的服务账户密钥。token - 用于本地测试(如 fakegcs)。
当 repo-gcs-key-type=service 时,认证令牌续期时将重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档写入本地挂载的文件系统,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口取决于 cmd-ssh 所指定命令的配置。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(Secure Shell)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时的仓库主机用户。
定义在仓库主机上执行操作所使用的用户。建议使用专用用户(如 pgbackrest),而非 postgres 用户。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其具有仓库的读取权限,同时防止意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
预估所需空间可能较为困难。建议先执行几次备份,记录不同备份类型(全量/增量/差异)的大小,并测量每日产生的 WAL 量,从而大致估算所需空间;当然,随着数据库规模增长,实际需求也会随之变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录下,但通常建议指定一个前缀(如 /repo),以便日志及其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项可能会有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 repo-sftp-host-key-hash-type 匹配。可通过以下命令生成指纹:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录中。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,且拒绝连接到主机密钥已更改或在已知主机文件中找不到的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接到主机密钥已更改的主机。fingerprint - pgBackRest 会将主机密钥与 repo-sftp-host-fingerprint 选项指定的指纹进行比对。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希算法。较新版本的 libssh2 除 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证时用于搜索 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将只在这些文件中搜索匹配项。文件路径必须为完整路径或以波浪号开头的路径。可多次传入 repo-sftp-known-host 以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。若编译时链接了 OpenSSL,此项为可选;若链接了其他库,则为必填项。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的其他主机,通常用于测试场景。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接到存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定要添加到对象上的标签。可重复使用此选项以添加多个标签。
pgBackRest 目前不支持修改这些标签,因此请在运行 stanza-create 之前正确设置,以确保整个仓库的标签一致。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法全部加载到内存时,S3 等对象存储支持分块上传。即便文件可以全部加载到内存,限制上传时的内存用量也更为高效。
较大的分块大小通常能带来更好的性能,因为它减少了上传请求次数,允许更多文件在单次请求中完成上传而无需分块。其缺点是内存占用更高,且由于分块缓冲区按进程分配,较大的 process-max 值会导致整体内存消耗增加。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。分块大小的术语也因存储类型而异:AWS S3 称之为"part size",GCS 称之为"chunk size",Azure 称之为"block size"。
如果文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用存储(如 S3、Azure)服务端 TLS 证书的验证。仅在测试或使用自签名证书等特定场景下才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - 符合 POSIX 规范的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
当使用 NFS 挂载作为 posix 仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中的描述相同,参见 创建数据库集群 - 文件系统。
default: posix
example: --repo1-type=cifs
2 - 归档获取命令(archive-get)
pgBackRest archive-get 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: archive-get
PostgreSQL 通过此命令执行备份恢复、PITR,或将其作为流复制的替代方式来维持副本同步。WAL 段是 PostgreSQL 执行恢复或维护副本的必要条件。
配置多个仓库时,pgBackRest 按优先级顺序(如 repo1、repo2 等)依次从各仓库获取 WAL。速度更快或成本更低的存储应配置更高的优先级。若通过 --repo 选项指定了某个仓库,则仅从该仓库中查找。
archive-get 命令由 pgBackRest 在恢复过程中自动配置并生成,供 PostgreSQL 使用。相关示例请参见 时间点恢复。
命令选项
异步归档选项(--archive-async)
异步推送/获取 WAL 段。
启用 archive-push 和 archive-get 命令的异步操作模式。
异步模式效率更高,可复用连接并充分利用并行处理。更多信息请参见 spool-path、archive-get-queue-max 和 archive-push-queue-max 选项。
default: n
example: --archive-async
归档获取最大队列大小选项(--archive-get-queue-max)
archive-get 队列的最大容量。
指定启用 archive-async 时 archive-get 队列的最大容量。队列存储在 spool-path 中,用于加速向 PostgreSQL 提供 WAL。
default: 128MiB
allowed: [0B, 4PiB]
example: --archive-get-queue-max=1GiB
重试缺失 WAL 段选项(--archive-missing-retry)
重试缺失的 WAL 段。
在异步模式下,对之前被 archive-get 命令标记为缺失的 WAL 段进行重试。此选项可防止使用缓冲区路径中来自先前恢复的通知,避免在尚未达到一致性状态时导致恢复失败。
禁用此选项后,PostgreSQL 可以更可靠地识别归档中 WAL 的结束位置,从而切换到从主库进行流复制。若启用重试,持续的 WAL 归档流会使 PostgreSQL 继续从归档获取 WAL,而不切换到流复制。
禁用此选项时,务必确保 stanza 的缓冲区路径为空。若恢复时已配置缓冲区路径,restore 命令会自动清空;否则需要手动清空。
default: y
example: --no-archive-missing-retry
归档超时选项(--archive-timeout)
归档超时时间。
设置等待每个 WAL 段到达 pgBackRest 归档仓库的最长时间(秒)。此超时适用于 check 和 backup 命令在等待备份一致性所需的 WAL 段完成归档时。
default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际占用的缓冲区数量取决于具体选项,每个操作可能额外消耗内存,例如 gz 压缩可能额外占用 256KiB 内存。
允许的值为:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
pgBackRest 命令选项(--cmd)
pgBackRest 命令路径。
pgBackRest 在某些场景下需要生成命令字符串,例如 restore 命令生成 restore_command 配置时。若未提供 cmd 选项,则使用当前运行的 pgBackRest 进程路径。
注意:
对 pgBackRest 命令进行包装可能导致不可预期的行为,不建议使用。
default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
当需要使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中时,使用此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,通过此选项设置网络传输的压缩级别,以减少网络流量。若 compress-type 不等于 none,则忽略 compress-level-network,改用 compress-level,避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件路径。
使用此选项指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的目录路径。
该路径下扩展名为 .conf 的配置文件将与主配置文件合并,形成一份完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 选项的默认基础路径,除非这两个选项已在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
用于连接及读/写操作的超时时间(秒)。
注意:整个读/写操作不必在此超时内全部完成,但必须持续有进展,哪怕每次只传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 在此路径下创建锁文件,以防止冲突操作并发运行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中的文件和目录以合理的权限创建。默认目录权限为 0750,默认文件权限为 0640,锁文件和日志目录的权限分别为 0770 和 0660。
如需使用执行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 niceness 值)。正值降低优先级,负值提升优先级。普通进程在大多数情况下没有权限提升自身优先级。
allowed: [-20, 19]
example: --priority=19
最大进程数选项(--process-max)
用于压缩/传输的最大进程数。
每个进程负责压缩和传输,可加快命令执行速度。但不应将 process-max 设置过高,以免影响数据库性能。
default: 1
allowed: [1, 999]
example: --process-max=4
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远端进程在协议层等待新消息的最长时间(秒),防止进程无限期阻塞等待。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在 socket 连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
缓冲区路径选项(--spool-path)
临时数据的存储路径。
该路径用于存储异步 archive-push 和 archive-get 命令的数据。
异步 archive-push 命令在成功将 WAL 存入归档后,向缓冲区路径写入确认文件(失败时写入错误信息),以便前台进程快速通知 PostgreSQL。确认文件非常小——成功时为零字节,失败时仅几百字节。
异步 archive-get 命令会将 WAL 预取至缓冲区路径,以便在 PostgreSQL 请求时快速响应。缓冲区路径与 pg_xlog/pg_wal 位于同一文件系统时,文件移动效率最高。但不建议将缓冲区路径设置在 pg_xlog/pg_wal 目录内部,否则可能导致 pg_rewind 等 PostgreSQL 工具出现问题。
缓冲区路径中存储的数据并非严格意义上的临时数据,重启后应当保留。不过,即使数据丢失也不成问题——pgBackRest 会重新检查每个 WAL 段以确认 archive-push 的归档安全性,并为 archive-get 重建队列。
缓冲区路径应位于本地 Posix 兼容文件系统上,而非 NFS 或 CIFS 等远程文件系统。
default: /var/spool/pgbackrest
example: --spool-path=/backup/db/spool
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,定义了集群的位置、备份方式、归档选项等。大多数数据库服务器只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则为每个需要备份的集群各配置一个 stanza。
命名 stanza 时,以主集群名称命名虽然直观,但更好的做法是描述集群所承载的业务内容。由于 stanza 名称同时用于主库和所有副本,选用描述集群实际功能的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
Keep-Alive 探测包数量。
指定连接被判定为断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
Keep-Alive 空闲时间。
指定在无网络活动多少秒后,操作系统应发送 TCP keep-alive 消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
Keep-Alive 重传间隔。
指定未收到确认的 TCP keep-alive 消息在多少秒后进行重传。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也使用加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置是合理选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也使用加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志输出级别。
指定哪些日志级别输出到 stderr(而非 stdout,后者由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意:若设置了 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的子进程启用文件日志,使用 log-level-file 指定的日志级别。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中启用时间戳。此选项在生成文档等特殊场景下会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 分支版本或开发版本——这些版本中的相关值可能与正式发行版不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项需谨慎。pg_control 和 WAL 头部仍会按指定版本的预期格式(即 PostgreSQL 官方开源版本的格式)进行读取。若分支或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常只有当分支在标准 PostgreSQL 成员之后添加自定义结构体成员时,此选项才能正常工作。
example: --pg-version-force=15
仓库选项
指定仓库选项(--repo)
指定操作的目标仓库。
指定命令所操作的仓库。例如,可使用此选项从特定仓库执行恢复,而不是由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器名称。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定前缀(如 /repo),以便日志及其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加账户名。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密所用的密码算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意:即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶名称。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志及其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点地址。
用于连接存储服务的端点,可更新为本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,例如 fakegcs。
设置 repo-gcs-key-type=service 时,认证令牌续期时会重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机地址。
若备份和归档目标为本地挂载的文件系统,则无需配置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
向仓库主机发送,用于证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件路径。
设置仓库主机上的配置文件位置。仅当仓库主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时使用的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时使用的仓库主机用户。
定义在仓库主机上执行操作的用户。建议使用非 postgres 的专用用户(如 pgbackrest)。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其具有仓库读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
pgBackRest 在此仓库中存储备份并归档 WAL 段。
预估所需空间并不容易。建议先执行几次备份,记录不同类型备份(全量/增量/差异)的大小,并统计每天产生的 WAL 量,从而大致估算所需空间。随着数据库规模增长,需求也会随之变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶名称。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志及其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点地址。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加存储桶名。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机地址。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 repo-sftp-host-key-hash-type 匹配。可通过以下命令生成指纹:
awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b
SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,且拒绝连接主机密钥已更改或未在已知主机文件中找到的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接主机密钥已更改的主机。fingerprint - pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹检查主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时计算远端系统主机密钥摘要所使用的哈希类型。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机的连接端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
身份验证时用于查找 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将仅在这些路径中查找匹配项。文件路径必须为完整路径或以波浪号开头的路径。可多次传入 repo-sftp-known-host 以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于身份验证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于身份验证的 SFTP 公钥文件。若编译时使用 OpenSSL 则为可选,若使用其他库则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file, repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path, repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host, repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port, repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,为对象添加指定标签。此选项可重复使用以添加多个标签。
pgBackRest 不提供修改标签的功能,因此请在运行 stanza-create 之前确保标签设置正确,以保证整个仓库标签的一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法全部存入内存时,S3 等对象存储支持分块上传。即使文件能够存入内存,限制上传内存用量也更为高效。
较大的分块大小通常可提升性能,因为它能减少上传请求次数,让更多文件在单次请求中完成上传,而非分块传输。缺点是内存占用更高——由于分块缓冲区需按进程分配,process-max 值越大,总体内存消耗越多。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语也不同:AWS S3 称为"part size",GCS 称为"chunk size",Azure 称为"block size"。
若文件大于 1GiB(PostgreSQL 默认创建文件的最大大小),则分块大小将递增至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务器 TLS 证书的验证。仅在测试或使用自签名证书的场景下才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库目标时间。
目标时间定义了命令读取版本化存储上仓库时所参照的时间点。通过此选项,命令可以读取某一历史时间点的仓库状态,从而恢复因用户误操作或恶意软件导致删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认未启用。除了启用版本化,还可以考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除功能。
指定 repo-target-time 时,还必须同时提供 repo 选项。通常并非所有仓库类型都支持版本化功能,因此建议针对单个仓库进行恢复。
注意:与存储时间戳的比较采用小于等于(<=)的方式,且时间戳中的毫秒部分在比较时会被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库所使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud Storageposix - 符合 Posix 标准的文件系统s3 - AWS Simple Storage Servicesftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中描述的规则相同,请参见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
应与 PostgreSQL 报告的 data_directory 一致。尽管此值可从多处读取,但建议明确配置,以防在恢复或离线备份场景中相关资源不可用。
pg-path 选项在每次在线备份时都会与 PostgreSQL 报告的值进行校验,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
3 - 归档推送命令(archive-push)
pgBackRest archive-push 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: archive-push
接收来自 PostgreSQL 的 WAL 段,并将其归档到各个仓库中(仓库路径由带索引的 repo-path 选项定义,详见 仓库选项 章节)。WAL 段可以立即推送到归档,也可以根据 archive-async 的值先暂存在本地。配置了多个仓库时,archive-push 会尽量向所有仓库推送。
archive-push 由 PostgreSQL 负责配置和调用。相关示例请参见 配置归档。
命令选项
异步归档选项(--archive-async)
异步推送/获取 WAL 段。
为 archive-push 和 archive-get 命令启用异步操作模式。
异步模式效率更高,因为它能复用连接并充分利用并行处理能力。详情请参见 spool-path、archive-get-queue-max 和 archive-push-queue-max 选项。
default: n
example: --archive-async
归档检查选项(--archive-check)
在备份完成前检查 WAL 段是否已存入归档。
检查使备份达到一致性所需的全部 WAL 段是否已存在于 WAL 归档中。除非采用了其他归档方式,否则建议保留默认值。
若启用了 archive-copy,则必须同时启用此选项。
default: y
example: --no-archive-check
归档模式检查选项(--archive-mode-check)
检查 PostgreSQL 的 archive_mode 设置。
此选项默认启用,用于禁止 PostgreSQL 使用 archive_mode=always。
从备库推送的 WAL 段,其内容在逻辑上可能与从主库推送的相同,但校验和不同。为避免冲突,建议禁止从多个来源归档。
注意:
若禁用此选项,必须确保只有一个归档进程通过 archive-push 命令向仓库写入数据。
default: y
example: --no-archive-mode-check
归档推送最大队列大小选项(--archive-push-queue-max)
PostgreSQL 归档队列的最大容量。
达到上限后,将发生以下情况:
- pgBackRest 会告知 PostgreSQL WAL 已成功归档,然后将其丢弃。
- PostgreSQL 日志中会输出一条警告。
一旦发生此情况,归档日志流将中断,此后无法进行 PITR。需重新执行一次备份才能恢复完整的恢复能力。
在异步模式下,整个队列将被清空,以防止在再次触及队列上限之前仅有零星 WAL 通过。
此功能旨在防止日志卷空间耗尽——一旦日志卷写满,PostgreSQL 将完全停止运行。与其让 PostgreSQL 宕机,不如主动丢弃备份。
allowed: [0B, 4PiB]
example: --archive-push-queue-max=1TiB
已弃用名称:archive-queue-max
归档超时选项(--archive-timeout)
归档超时时间。
等待每个 WAL 段到达 pgBackRest 归档仓库的最长时间(秒)。此超时适用于 check 和 backup 命令等待备份一致性所需 WAL 段完成归档的场景。
default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每种操作可能额外占用内存,例如 gz 压缩可能额外占用 256KiB。
允许的值:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB、16MiB。
default: 1MiB
example: --buffer-size=2MiB
pgBackRest 命令选项(--cmd)
pgBackRest 命令路径。
pgBackRest 有时需要生成命令字符串,例如 restore 命令生成 restore_command 配置时。若未提供 cmd 选项,则使用当前运行的 pgBackRest 进程路径。
注意:
对 pgBackRest 命令进行包装可能导致不可预期的行为,不建议使用。
default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
压缩选项(--compress)
启用文件压缩。
备份文件与命令行压缩工具兼容。
此选项已弃用,请改用 compress-type 选项。
default: y
example: --no-compress
压缩级别选项(--compress-level)
文件压缩级别。
当 compress-type 不等于 none,或使用已弃用的 compress=y 时,此选项指定文件压缩级别。
default (depending on compress-type):
bz2 - 9
gz - 6
lz4 - 1
zst - 3
allow range (depending on compress-type):
bz2 - [1, 9]
gz - [-1, 9]
lz4 - [-5, 12]
zst - [-7, 22]
example: --compress-level=9
网络压缩级别选项(--compress-level-network)
网络传输压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,通过此选项设置网络传输的压缩级别以减少网络流量。若 compress-type 不等于 none,则忽略 compress-level-network,改用 compress-level,从而避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
压缩类型选项(--compress-type)
文件压缩类型。
支持以下压缩类型:
none - 不压缩bz2 - bzip2 压缩格式gz - gzip 压缩格式lz4 - lz4 压缩格式(并非所有平台均支持)zst - Zstandard 压缩格式(并非所有平台均支持)
default: gz
example: --compress-type=none
配置文件选项(--config)
pgBackRest 配置文件路径。
指定非默认路径的配置文件时使用此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的目录路径。
该路径下扩展名为 .conf 的配置文件将与主配置文件合并,共同构成完整配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 选项的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读/写操作的超时时间(秒)。
注意:整个读/写操作无需在此超时内全部完成,但必须有进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 在此路径下创建锁文件,以防止冲突操作并发运行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中的文件和目录以合理的权限创建。默认目录权限为 0750,默认文件权限为 0640。锁文件和日志目录的权限分别为 0770 和 0660。
如需使用执行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行传入 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 niceness 值)。正值降低优先级,负值提升优先级。普通进程通常没有权限自行提升优先级。
allowed: [-20, 19]
example: --priority=19
最大进程数选项(--process-max)
用于压缩/传输的最大进程数。
每个进程负责压缩和传输,可加快命令执行速度。但 process-max 不宜设置过高,否则可能影响数据库性能。
default: 1
allowed: [1, 999]
example: --process-max=4
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远端进程在协议层等待新消息的最长时间(秒),防止进程无限期阻塞。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在 socket 连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
缓冲区路径选项(--spool-path)
临时数据的存储路径。
用于存储异步 archive-push 和 archive-get 命令数据的路径。
异步 archive-push 命令在成功将 WAL 存入归档后,会在缓冲区路径写入确认文件(失败时写入错误信息),供前台进程快速通知 PostgreSQL。确认文件非常小——成功时为零字节,失败时仅几百字节。
异步 archive-get 命令会将 WAL 缓冲至此路径,以便在 PostgreSQL 请求时快速提供。若缓冲区路径与 pg_xlog/pg_wal 位于同一文件系统,文件移动效率最高。但不建议将缓冲区路径设置在 pg_xlog/pg_wal 目录内部,否则可能导致 pg_rewind 等 PostgreSQL 工具出现问题。
缓冲区路径中的数据并非严格意义上的临时数据,重启后应当保留。不过,即使数据丢失也不成问题——pgBackRest 会重新检查每个 WAL 段以确认 archive-push 的归档安全性,并为 archive-get 重建队列。
缓冲区路径应位于本地 Posix 兼容文件系统上,而非 NFS 或 CIFS 等远程文件系统。
default: /var/spool/pgbackrest
example: --spool-path=/backup/db/spool
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,定义了集群的位置、备份方式、归档选项等。大多数数据库服务器只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则为每个需要备份的数据库集群各配置一个 stanza。
命名 stanza 时,以主集群名称命名虽然直观,但更好的做法是描述集群中所承载的数据库内容。由于 stanza 名称同时适用于主库和所有副本,选用描述集群实际功能的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
Keep-Alive 探测包数量。
连接被判定为断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
Keep-Alive 空闲时间。
无网络活动超过指定秒数后,操作系统发送 TCP keep-alive 消息的等待时长。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
Keep-Alive 重传间隔。
未收到确认的 TCP keep-alive 消息经过指定秒数后进行重传。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接同样使用加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置是合理的选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接同样使用加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志输出级别。
指定哪些日志级别输出到 stderr(而非 stdout,后者由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅输出错误warn - 输出警告和错误info - 输出信息、警告和错误detail - 输出详情、信息、警告和错误debug - 输出调试、详情、信息、警告和错误trace - 输出追踪(极详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意:若设置了 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程派生的子进程启用文件日志,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中添加时间戳。此选项在生成文档等特殊场景下会被禁用。
default: y
example: --no-log-timestamp
维护者选项
检查 WAL 头部中的 PostgreSQL 版本/ID。
此选项默认启用,通过对照 PostgreSQL 版本和系统标识符检查 WAL 头部,确保 WAL 被复制到正确的 stanza。这是在核验 pg_control 与 stanza 匹配性、以及验证 WAL 是否来自 pg_control 所在 PostgreSQL 数据目录的基础上进行的额外校验。
因此,禁用此检查相对安全,但仅应在必要时使用,例如 WAL 已加密的场景。
default: y
example: --no-archive-header-check
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 的分支版本或开发版本——这些版本中相关值可能与正式发行版不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项时需谨慎。pg_control 和 WAL 头部仍会按指定版本的预期格式(即 PostgreSQL 官方开源版本的格式)进行解析。若分支或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常只有当分支在标准 PostgreSQL 成员之后添加自定义结构体成员时,此选项才能正常工作。
example: --pg-version-force=15
仓库选项
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器名称。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定前缀(如 /repo),以便日志及其他 Azure 生成的内容也能存入同一容器。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加账户名。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密所用的密码算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意:即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶名称。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志及其他 GCS 生成的内容也能存入同一存储桶。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点地址。
用于连接存储服务的端点,可更新为本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,例如 fakegcs。
设置 repo-gcs-key-type=service 时,认证令牌续期时会重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机地址。
若备份和归档目标为本地挂载的文件系统,则无需配置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机,用于证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需配置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件路径。
设置仓库主机上的配置文件位置。仅当仓库主机上的配置文件路径与本地不同时才需配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时使用的仓库主机端口。
为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时使用的仓库主机用户。
定义在仓库主机上执行操作的用户。建议使用非 postgres 的专用用户(如 pgbackrest)。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其具有仓库读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
pgBackRest 在此仓库中存储备份并归档 WAL 段。
预估所需空间并不容易。建议先执行几次备份,记录不同类型(全量/增量/差异)的备份大小及每天产生的 WAL 量,从而大致估算所需空间。当然,随着数据库规模增长,需求也会相应变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶名称。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志及其他 AWS 生成的内容也能存入同一存储桶。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点地址。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,可参考 repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加存储桶名。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机地址。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
指纹的生成方式应与 repo-sftp-host-key-hash-type 匹配。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,且拒绝连接主机密钥已更改或不在已知主机文件中的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接主机密钥已更改的主机。fingerprint - pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 启动时计算远端系统主机密钥摘要所使用的哈希类型。较新版本的 libssh2 除 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机的连接端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
身份验证时用于查找 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些路径中查找匹配项。文件路径必须为完整路径或以波浪号开头的路径。可多次传入 repo-sftp-known-host 以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于身份验证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于身份验证的 SFTP 公钥文件。若编译时使用 OpenSSL 则为可选,若使用其他库则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file, repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path, repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host, repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port, repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,为对象添加指定标签。此选项可重复使用以添加多个标签。
pgBackRest 不提供修改标签的功能,因此请在运行 stanza-create 之前确保标签设置正确,以保证整个仓库标签的一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法全部存入内存时,S3 等对象存储支持分块上传。即使文件能够存入内存,限制上传内存用量也更为高效。
较大的分块通常可提升性能,因为它能减少上传请求次数,让更多文件在单次请求中完成上传,而非分块传输。但缺点是内存占用更高——由于分块缓冲区需按进程分配,process-max 值越大,总体内存消耗越多。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语也不同:AWS S3 称为"part size",GCS 称为"chunk size",Azure 称为"block size"。
若文件大于 1GiB(PostgreSQL 默认创建文件的最大大小),分块大小将递增至允许的最大值以完成上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务器 TLS 证书的验证。仅在测试或使用自签名证书的场景下才应禁用。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库所使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud Storageposix - 符合 Posix 标准的文件系统s3 - AWS Simple Storage Servicesftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,适用的规则与 PostgreSQL 文档中描述的规则相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
应与 PostgreSQL 报告的 data_directory 一致。尽管此值可从多处读取,但建议明确配置,以防在恢复或离线备份场景中相关资源不可用。
pg-path 选项在每次在线备份时都会与 PostgreSQL 报告的值进行核验,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
4 - 备份命令(backup)
pgBackRest backup 命令的选项与行为参考。
Source: pgBackRest Command Docs: backup
配置多个仓库时,pgBackRest 默认备份到优先级最高的仓库(如 repo1),除非通过 --repo 选项明确指定目标仓库。
pgBackRest 本身不内置调度器,建议通过 cron 或其他调度机制触发备份。
详情与示例请参见 执行备份。
命令选项
备份注解选项(--annotation)
为备份附加用户自定义的键值对注解。
可为备份附加任意键值对信息,此选项可多次使用以添加多个注解。
通过 --set 指定备份时,info 命令的文本输出会显示注解;JSON 输出则始终包含注解信息。
example: --annotation=source="Sunday backup for website database"
归档检查选项(--archive-check)
备份完成前检查 WAL 段是否已写入归档。
此选项验证备份一致性所需的全部 WAL 段都已存在于 WAL 归档中。除非使用了其他归档方法,否则建议保留默认值。
若启用了 archive-copy,则必须同时启用此选项。
default: y
example: --no-archive-check
归档复制选项(--archive-copy)
将一致性所需的 WAL 段直接复制到备份中。
这是一个相对保守的选项,通过将一致性所需的 WAL 段直接存入备份,防范 WAL 归档损坏。WAL 段仍会写入归档,因此此选项会额外占用存储空间。
使用此选项时,建议 archive-push 和 backup 命令采用相同的压缩类型(如 lz4)。否则,WAL 段需要按备份所用的压缩类型重新压缩,这取决于备份期间产生的 WAL 量,代价可能较高。
恢复时,WAL 段位于 pg_xlog/pg_wal 目录中,PostgreSQL 会优先使用这些文件,而不调用 restore_command。
若启用 archive-copy,则必须同时启用 archive-check 选项。
default: n
example: --archive-copy
归档模式检查选项(--archive-mode-check)
检查 PostgreSQL 的 archive_mode 设置。
此选项默认启用,会禁止使用 PostgreSQL 的 archive_mode=always 配置。
从备库推送的 WAL 段与从主库推送的 WAL 段在逻辑上可能相同,但校验和不同。建议禁用多源归档以避免冲突。
注意:
禁用此选项时,务必确保只有一个归档进程通过 archive-push 命令向仓库写入数据。
default: y
example: --no-archive-mode-check
归档超时选项(--archive-timeout)
归档超时时间。
设置等待每个 WAL 段到达 pgBackRest 归档仓库的最长时间(秒)。check 和 backup 命令等待备份一致性所需的 WAL 段完成归档时,此超时时间生效。
default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30
从备库备份选项(--backup-standby)
从备库集群执行备份。
从备库备份可降低主库负载。使用此选项时,主库和备库主机都必须已完成配置。
支持以下模式:
y — 必须从备库执行备份。prefer — 优先从备库备份,备库不可用时转为从主库备份。n — 仅从主库备份。
default: n
example: --backup-standby=y
页面校验和选项(--checksum-page)
验证数据页面校验和。
指示 pgBackRest 在备份集群时验证所有数据页面的校验和。当集群启用了数据页面校验和时,此选项自动开启。
校验和验证失败不会中止备份,而是在日志中(默认也在控制台)输出警告,并将无效页面列表记录到备份的清单文件(manifest)中。
example: --no-checksum-page
路径/文件排除选项(--exclude)
从备份中排除指定的路径或文件。
所有排除规则均相对于 $PGDATA。若排除规则以 / 结尾,则仅排除该目录下的文件,例如 --exclude=junk/ 会排除 $PGDATA/junk 目录中的所有文件,但目录本身会保留。若不以 / 结尾,则精确匹配该文件名或追加 / 后匹配,例如 --exclude=junk 会排除 $PGDATA/junk 目录及其所有文件。
请谨慎使用此功能——极易误排除关键文件,导致备份不一致。务必测试恢复!
所有被排除的文件都会以 info 级别写入日志,并注明排除规则。请仔细审查被排除的文件列表,确认没有意外排除重要内容。
注意: delta 恢复不遵循排除规则。备份时被排除的文件/目录,在 delta 恢复时会被删除。
不应使用此选项排除 PostgreSQL 日志。可通过 PostgreSQL 的 log_directory 参数将日志目录移到 PGDATA 之外,这样还能在恢复后保留日志。
可在命令行或配置文件中指定多个排除规则。
自动过期选项(--expire-auto)
备份成功完成后自动执行 expire 命令。
此选项默认启用。禁用时需谨慎,因为这会导致所有备份和归档无限期保留,可能耗尽仓库空间。禁用后需定期手动运行 expire 命令以避免空间不足。
default: y
example: --expire-auto
强制选项(--force)
强制执行离线备份。
与 --no-start-stop 配合使用时,即使 pgBackRest 判断 PostgreSQL 正在运行,也会强制执行备份。此选项风险极高,极可能产生损坏的备份,请极度谨慎使用。
某些特殊场景下,此类条件下的备份可能仍有价值。例如,服务器崩溃后数据库集群卷只能以只读方式挂载时,即使存在 postmaster.pid 文件,也值得做一次备份。此时更好的做法是回退到上一个备份并重放 WAL,但如果某个未完成归档的 WAL 段中包含非常重要的事务,强制备份也是一种选择。
default: n
example: --force
清单保存阈值选项(--manifest-save-threshold)
备份过程中清单文件(manifest)的保存阈值。
定义备份期间保存清单文件的频率。保存清单文件非常重要,因为它存储了校验和并使续传功能高效工作。实际使用的阈值取备份大小的 1% 与 manifest-save-threshold 中的较大值。
default: 1GiB
allowed: [1B, 1TiB]
example: --manifest-save-threshold=8GiB
在线选项(--online)
执行在线备份。
指定 --no-online 会阻止 pgBackRest 在数据库集群上执行备份启动/停止函数。要使此选项生效,PostgreSQL 必须已关闭,否则 pgBackRest 会报错。
此选项的用途是支持离线备份。pg_xlog/pg_wal 目录会原样复制,且 archive-check 会为该次备份自动禁用。
default: y
example: --no-online
续传选项(--resume)
允许续传失败的备份。
定义是否启用续传功能。续传功能可大幅减少同类型备份在上次失败后重新运行所需的时间。在不需要此功能的环境中,可以考虑禁用以降低复杂性。
default: y
example: --no-resume
快速启动选项(--start-fast)
强制执行检查点以快速启动备份。
通过向备份启动函数的 fast 参数传入 y 来强制执行检查点,使备份立即开始。否则备份将等到下一个常规检查点后才开始。
default: n
example: --start-fast
类型选项(--type)
备份类型。
支持以下备份类型:
full — 全量备份(full backup),复制所有数据库集群文件,不依赖之前的任何备份。incr — 增量备份(incremental backup),基于最近一次成功的备份。diff — 差异备份(differential backup),类似增量备份,但始终基于最近一次全量备份。
default: incr
example: --type=full
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能会占用额外内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
pgBackRest 命令选项(--cmd)
pgBackRest 命令路径。
pgBackRest 有时需要生成命令字符串,例如 restore 命令生成 restore_command 配置时。若未提供 cmd 选项,则使用当前运行 pgBackRest 进程的命令路径。
注意:
包装 pgBackRest 命令可能导致不可预期的行为,不建议这样做。
default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
当需要使用特定 SSH 客户端,或 ssh 命令不在 $PATH 中时,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
压缩选项(--compress)
启用文件压缩。
备份文件与命令行压缩工具兼容。
此选项现已弃用,请改用 compress-type 选项。
default: y
example: --no-compress
压缩级别选项(--compress-level)
文件压缩级别。
当 compress-type 不等于 none 或使用已弃用的 compress=y 时,指定文件压缩级别。
default (depending on compress-type):
bz2 - 9
gz - 6
lz4 - 1
zst - 3
allow range (depending on compress-type):
bz2 - [1, 9]
gz - [-1, 9]
lz4 - [-5, 12]
zst - [-7, 22]
example: --compress-level=9
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,指定网络压缩级别,用于减少网络流量。当 compress-type 不等于 none 时,此选项会被忽略,转而使用 compress-level,以避免文件被压缩两次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
压缩类型选项(--compress-type)
文件压缩类型。
支持以下压缩类型:
none — 不压缩bz2 — bzip2 压缩格式gz — gzip 压缩格式lz4 — lz4 压缩格式(并非所有平台都支持)zst — Zstandard 压缩格式(并非所有平台都支持)
default: gz
example: --compress-type=none
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定非默认位置的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
指定路径下扩展名为 .conf 的配置文件将与主配置文件拼接,合并为一个完整的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 选项的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
数据库超时选项(--db-timeout)
数据库查询超时时间。
设置对数据库执行查询的超时时间(秒)。这包括备份的启动/停止函数,这些函数各自可能耗时较长。因此,除非可以确定这些函数会很快返回(例如设置了 start-fast=y 且备份期间集群不会产生大量 WAL 段),否则应将此超时时间设置得较大。
注意: db-timeout 的值必须小于 protocol-timeout 的值。
default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600
Delta 选项(--delta)
使用校验和进行恢复或备份。
恢复时,默认情况下 PostgreSQL 数据目录和表空间目录应已存在但为空。此选项启用基于校验和的 delta 恢复。
备份时,此选项使用校验和而非时间戳来判断哪些文件需要复制。
default: n
example: --delta
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读写操作的超时时间(秒)。
注意,整个读写操作不必在此超时时间内完成,但必须有一定进展,哪怕只是传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 使用锁文件防止并发执行相互冲突的操作。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中创建的文件和目录具有合理的权限。默认目录模式为 0750,文件模式为 0640;锁文件和日志目录的目录模式为 0770,文件模式为 0660。
如需改用执行用户的 umask,可在配置文件中设置 neutral-umask=n,或在命令行使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器分配给该进程的优先级(即 niceness 值)。正值降低优先级,负值提升优先级。大多数情况下,进程没有权限提升自身优先级。
allowed: [-20, 19]
example: --priority=19
最大进程数选项(--process-max)
压缩/传输使用的最大进程数。
每个进程负责压缩和传输,进程数越多命令运行越快,但不要将 process-max 设置得过高,以免影响数据库性能。
default: 1
allowed: [1, 999]
example: --process-max=4
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待新消息的最长时间(秒),以防止进程无限期地等待。
注意: protocol-timeout 的值必须大于 db-timeout 的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活机制。
在 socket 连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza(stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称)。
一个 stanza 包含某个 PostgreSQL 数据库集群的完整配置,定义了集群的位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;而备份服务器通常为每个需要备份的数据库集群单独配置一个 stanza。
命名 stanza 时,常见做法是以主集群名称命名,但更好的方式是以集群中承载的业务来命名。由于 stanza 名称同时适用于主库和所有副本,选择能反映集群实际功能的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
保活计数。
指定连接被判定为断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在系统支持 TCP_KEEPCNT socket 选项时可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
指定操作系统在多少秒无网络活动后,应发送 TCP 保活消息。
此选项仅在系统支持 TCP_KEEPIDLE socket 选项时可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活重传间隔时间。
指定未收到确认的 TCP 保活消息多少秒后进行重传。
此选项仅在系统支持 TCP_KEEPINTVL socket 选项时可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件。示例值是合理的选择,除非有特定安全需求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详细信息、信息、警告和错误debug — 记录调试信息、详细信息、信息、警告和错误trace — 记录跟踪信息(极详细的调试输出)、调试信息、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详细信息、信息、警告和错误debug — 记录调试信息、详细信息、信息、警告和错误trace — 记录跟踪信息(极详细的调试输出)、调试信息、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别的内容输出到 stderr 而非 stdout(stdout 由 log-level-console 控制)。输出到 stderr 的内容不含时间戳和进程信息。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详细信息、信息、警告和错误debug — 记录调试信息、详细信息、信息、警告和错误trace — 记录跟踪信息(极详细的调试输出)、调试信息、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
在子进程中启用日志记录。
对该进程创建的所有子进程启用文件日志,日志级别使用 log-level-file 指定的级别。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳。此选项在某些特殊场景(如生成文档)中会被禁用。
default: y
example: --no-log-timestamp
维护者选项
检查 PostgreSQL 页面头。
此选项默认启用,会添加页面头检查。
除非必要(例如页面已加密),否则不建议禁用此选项。
default: y
example: --no-page-header-check
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头自动检测的版本。此选项主要适用于 PostgreSQL 的分支版本或开发版本,因为这些版本的版本号可能与发行版本不同。PostgreSQL 通过 server_version_num 报告的版本号必须与强制指定的版本号一致。
警告:
使用此选项时请谨慎,因为 pg_control 和 WAL 头仍会按指定版本的预期格式读取,即官方开源 PostgreSQL 版本的格式。如果分支版本或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常,只有当分支版本将所有自定义结构成员添加在标准 PostgreSQL 成员之后时,此选项才能按预期工作。
example: --pg-version-force=15
仓库选项
指定仓库选项(--repo)
指定操作仓库。
指定命令操作的目标仓库。
例如,可用此选项从特定仓库执行恢复,而不是由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 Azure 生成的内容也能存放在该容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared — 共享密钥sas — 共享访问签名auto — 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host — 连接到 account.endpoint 主机。path — 连接到 endpoint 主机并在 URI 前添加账户名。
default: host
example: --repo1-azure-uri-style=path
块级增量备份选项(--repo-block)
启用块级增量备份(block incremental backup)。
块级备份将文件拆分为可独立备份的块,实现更细粒度的备份。这不仅节省仓库空间,还能提升 delta 恢复性能,因为可以直接获取单个块,而无需从仓库读取整个文件。
注意: 必须先启用 repo-bundle 选项,才能启用 repo-block。
文件的块大小根据文件大小和使用时间确定。通常,越旧/越大的文件使用越大的块。若文件足够旧,则不会使用块级增量备份。
块级备份在对所有备份类型(包括全量备份)启用时最为高效。这会使全量备份稍大,但后续的差异备份和增量备份可以利用全量备份生成的块映射来节省空间。
default: n
example: --repo1-block
仓库包(bundle)选项(--repo-bundle)
在仓库中将文件打包(bundle)存储。
将小文件合并打包存储,以减少写入仓库的文件总数。写入文件数量更少通常效率更高,尤其是在 S3 等对象存储上。此外,零长度文件不会存储(清单文件除外),可节省时间和空间。
default: n
example: --repo1-bundle
仓库包大小限制选项(--repo-bundle-limit)
文件包的大小限制。
指定纳入包中的文件大小上限,超过此大小的文件将单独存储。
打包的文件在备份续传时无法复用,因此此选项控制了可续传的文件范围——值越大,可续传的文件越少。
default: 2MiB
allowed: [8KiB, 1PiB]
example: --repo1-bundle-limit=10MiB
仓库包目标大小选项(--repo-bundle-size)
文件包的目标大小。
定义单个包中文件的总大小目标。大多数包会小于此值,但部分包可能略超此值,因此不要将此选项设置为文件系统允许的最大值。
通常不建议将此值设置得过高,因为重试时需要重做整个包。
default: 20MiB
allowed: [1MiB, 1PiB]
example: --repo1-bundle-size=10MiB
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none — 仓库不加密aes-256-cbc — 使用 256 位密钥的高级加密标准
注意,即使仓库类型(如 S3)本身支持加密,加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 GCS 生成的内容也能存放在该存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点,可修改为使用本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto — 使用实例服务账号自动授权。service — 使用本地存储的服务账号密钥文件。token — 用于本地测试,例如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时会重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库硬链接选项(--repo-hardlink)
在仓库中对备份文件创建硬链接。
为差异备份和增量备份中的文件创建指向其对应全量备份的硬链接,使每个备份在文件系统层面看起来都像一个完整的全量备份。但请注意,修改硬链接文件会影响同一备份集中的所有备份。
default: n
example: --repo1-hardlink
已弃用名称:hardlink
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档使用本地挂载的文件系统,则无需配置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机的证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机的证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机的证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,仓库主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机的配置文件位置与本地配置文件位置不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机的配置包含路径与本地配置包含路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机的配置路径与本地配置路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机的密钥文件。
证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置 repo-host 时使用的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,实际使用的端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh — 安全外壳协议(Secure Shell)。tls — pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置 repo-host 时使用的仓库主机用户。
定义在仓库主机上执行操作所使用的用户。建议不使用 postgres 用户,而改用专用用户(如 pgbackrest)。若 PostgreSQL 也运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其拥有仓库的读权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
预先估算所需空间可能比较困难。建议先执行若干次备份,记录不同类型备份(全量/增量/差异)的大小,并测量每天产生的 WAL 量,以此对所需空间有一个大致判断。随着数据库的演进,需求也会随时间变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
归档保留选项(--repo-retention-archive)
连续 WAL 保留的备份数量。
注意: 无论此选项如何配置,确保备份一致性所需的 WAL 段始终会保留到备份过期为止。
若未设置此值且 repo-retention-full-type 为 count(默认值),则归档过期默认值为 repo-retention-full(或 repo-retention-diff)对应 repo-retention-archive-type(设置为 full 或 diff)的值,确保 WAL 仅在对应备份过期后才会过期。若 repo-retention-full-type 为 time,则此值默认为移除早于满足 repo-retention-full 设置后保留的最旧全量备份的归档。
若 repo-retention-archive-type 设置为 incr,则必须设置此选项。在磁盘空间极为紧张时,可结合 repo-retention-archive-type 使用此选项激进地清理 WAL 段。但这样做会导致无法从已清理 WAL 的备份执行 PITR,因此不推荐。
allowed: [1, 9999999]
example: --repo1-retention-archive=2
已弃用名称:retention-archive
归档保留类型选项(--repo-retention-archive-type)
WAL 保留的备份类型。
若设置为 full,pgBackRest 将按 repo-retention-archive 定义的全量备份数量保留归档日志。若设置为 diff(差异备份),则按 repo-retention-archive 定义的全量备份和差异备份数量保留归档日志,如果最后一次备份是全量备份,它将被视为差异备份计入 repo-retention-archive。若设置为 incr(增量备份),则按 repo-retention-archive 定义的全量、差异和增量备份数量保留归档日志。建议不要修改此选项的默认值,即仅在过期全量备份的同时过期对应的 WAL。
default: full
example: --repo1-retention-archive-type=diff
已弃用名称:retention-archive-type
差异备份保留选项(--repo-retention-diff)
保留的差异备份数量。
差异备份过期时,与之关联的所有增量备份也会一同过期。若未定义,所有差异备份将保留到其所依赖的全量备份过期为止。
注意,计算过期时,全量备份会被纳入差异备份数量的统计,这在大多数情况下会略微减少需要保留的差异备份数量。
allowed: [1, 9999999]
example: --repo1-retention-diff=3
已弃用名称:retention-diff
全量备份保留选项(--repo-retention-full)
全量备份的保留数量/时间。
全量备份过期时,与之关联的所有差异备份和增量备份也会一同过期。若未定义此选项,将会发出警告。如果希望无限期保留,可将此选项设置为最大值。
allowed: [1, 9999999]
example: --repo1-retention-full=2
已弃用名称:retention-full
全量备份保留类型选项(--repo-retention-full-type)
全量备份的保留类型。
决定 repo-retention-full 表示时间周期(天数)还是保留的全量备份数量。
若设置为 time,则超过 repo-retention-full 天的全量备份将被删除,前提是至少存在一个不早于 repo-retention-full 天的备份。例如,若 repo-retention-full 为 30(天),且有 2 个全量备份,分别为 25 天前和 35 天前创建,则两个备份均不会过期——因为删除 35 天前的备份将只剩 25 天前的备份,不满足"至少保留一个 30 天以内的备份"的策略要求。早于保留的最旧全量备份的归档 WAL 将自动过期,除非显式设置了 repo-retention-archive-type 和 repo-retention-archive。
若设置为 count,则超过 repo-retention-full 数量的全量备份将过期。例如,若 repo-retention-full 为 4 且第五个全量备份完成,则最旧的全量备份将过期以保持数量为 4。
注意,备份必须成功完成后才会被纳入保留策略的考量。例如,若 repo-retention-full-type 为 count 且 repo-retention-full 为 2,则必须有 3 个完整的全量备份,最旧的才会过期。
default: count
example: --repo1-retention-full-type=time
备份历史保留选项(--repo-retention-history)
备份历史清单文件的保留天数。
备份完成时,清单文件(manifest)的副本会存储在 backup.history 路径下。默认情况下这些文件永不过期,因为它们对数据挖掘(如统计备份和 WAL 增长趋势)很有价值。
通过设置 repo-retention-history,可以定义保留备份历史清单文件的天数。未过期的备份始终保留在备份历史中。设置 repo-retention-history=0 可仅为未过期的备份保留备份历史。
全量备份历史清单文件过期时,与之关联的所有差异备份和增量备份历史清单文件也会一同过期。
allowed: [0, 9999999]
example: --repo1-retention-history=365
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 AWS 生成的内容也能存放在该存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,可使用 repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared — 共享密钥auto — 自动获取临时凭证web-id — 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host — 连接到 bucket.endpoint 主机。path — 连接到 endpoint 主机并在 URI 前添加存储桶名称。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存放仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 repo-sftp-host-key-hash-type 匹配。通过以下命令生成指纹:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict — pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,并拒绝连接到主机密钥已更改或未在已知主机文件中找到的主机。此选项要求用户手动添加所有新主机。accept-new — pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接到主机密钥已更改的主机。fingerprint — pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none — 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机的端口号。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存储仓库的主机上的用户名。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
身份验证时用于查找 SFTP 主机匹配的已知主机文件。若未指定,pgBackRest 默认依次搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些文件中搜索匹配项。文件路径必须为完整路径或以波浪号(~)开头的路径。可多次传入 repo-sftp-known-host 选项以指定多个已知主机文件。使用已知主机文件检查时,不能指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于身份验证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于身份验证的 SFTP 公钥文件。若使用 OpenSSL 编译则为可选,若使用其他库编译则为必需。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
为存储(如 S3、Azure)证书使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
为存储(如 S3、Azure)证书使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定要添加到对象上的标签。此选项可重复使用以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前正确设置,以确保整个仓库的标签一致。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法完整存入内存时,S3 等对象存储支持分块上传。即使文件可以存入内存,限制上传所用的内存量也更为高效。
分块大小越大,通常性能越好,因为可以减少上传请求数量,允许在单次请求中上传更多数据。缺点是内存占用更高;process-max 值较大时,每个进程都需要分配分块缓冲区,整体内存消耗更多。
请注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。不同存储类型对分块大小的术语也不同:AWS S3 称之为"part size"(分片大小),GCS 称之为"chunk size"(分块大小),Azure 称之为"block size"(块大小)。
若文件大于 1GiB(PostgreSQL 默认最大创建文件大小),则分块大小会逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
提供启用/禁用存储(如 S3、Azure)服务器 TLS 证书验证的能力。仅在测试或使用自签名证书等特殊场景下才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库符号链接选项(--repo-symlink)
在仓库中创建符号链接。
启用 latest 和表空间符号链接的创建。这些符号链接在使用快照对仓库进行原地恢复时最为有用,但这是较少见的使用场景。
尽管此功能对大多数用户可能没有实际用处,但为了兼容性默认保持启用。对于不支持符号链接的 POSIX 类存储,禁用符号链接可能是有益的。
default: y
example: --no-repo1-symlink
仓库类型选项(--repo-type)
仓库所使用的存储类型。
支持以下仓库类型:
azure — Azure Blob 存储服务cifs — 类似 posix,但禁用链接和目录 fsyncgcs — Google Cloud 存储posix — 符合 POSIX 标准的文件系统s3 — AWS 简单存储服务sftp — 安全文件传输协议
当 NFS 挂载作为 posix 类型仓库使用时,适用 PostgreSQL 文档中描述的相同规则: 创建数据库集群 - 文件系统。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 数据库选项(--pg-database)
PostgreSQL 数据库名。
连接 PostgreSQL 时使用的数据库名称。默认值通常即可,但某些安装可能不包含此数据库。
注意,出于历史兼容原因,PGDATABASE 环境变量的设置会被忽略。
default: postgres
example: --pg1-database=backupdb
PostgreSQL 主机选项(--pg-host)
远程操作时的 PostgreSQL 主机。
用于 PostgreSQL 主机与仓库主机不在同一台机器上的备份场景。
example: --pg1-host=db.domain.com
已弃用名称:db-host
PostgreSQL 主机证书颁发机构文件选项(--pg-host-ca-file)
PostgreSQL 主机的证书颁发机构文件。
连接 PostgreSQL 主机时使用非系统默认的 CA 文件。
example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
PostgreSQL 主机证书颁发机构路径选项(--pg-host-ca-path)
PostgreSQL 主机的证书颁发机构路径。
连接 PostgreSQL 主机时使用非系统默认的 CA 路径。
example: --pg1-host-ca-path=/etc/pki/tls/certs
PostgreSQL 主机证书文件选项(--pg-host-cert-file)
PostgreSQL 主机的证书文件。
发送给 PostgreSQL 主机以证明客户端身份。
example: --pg1-host-cert-file=/path/to/client.crt
PostgreSQL 主机命令选项(--pg-host-cmd)
PostgreSQL 主机上的 pgBackRest 命令路径。
仅当本地主机与 PostgreSQL 主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,PostgreSQL 主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:db-cmd
PostgreSQL 主机配置文件选项(--pg-host-config)
pgBackRest 数据库主机配置文件。
设置 PostgreSQL 主机上配置文件的位置。仅当 PostgreSQL 主机的配置文件位置与本地配置文件位置不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:db-config
PostgreSQL 主机配置包含路径选项(--pg-host-config-include-path)
pgBackRest 数据库主机配置包含路径。
设置 PostgreSQL 主机上配置包含路径的位置。仅当 PostgreSQL 主机的配置包含路径与本地配置包含路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d
PostgreSQL 主机配置路径选项(--pg-host-config-path)
pgBackRest 数据库主机配置路径。
设置 PostgreSQL 主机上配置路径的位置。仅当 PostgreSQL 主机的配置路径与本地配置路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest
PostgreSQL 主机密钥文件选项(--pg-host-key-file)
PostgreSQL 主机的密钥文件。
证明客户端证书由其所有者发送。
example: --pg1-host-key-file=/path/to/client.key
PostgreSQL 主机端口选项(--pg-host-port)
设置 pg-host 时使用的 PostgreSQL 主机端口。
使用此选项为 PostgreSQL 主机协议指定非默认端口。
注意: 当 pg-host-type=ssh 时,pg-host-port 没有默认值,实际使用的端口由 cmd-ssh 指定的命令配置决定。
default (depending on pg-host-type):
tls - 8432
allowed: [0, 65535]
example: --pg1-host-port=25
已弃用名称:db-ssh-port
PostgreSQL 主机协议类型选项(--pg-host-type)
PostgreSQL 主机协议类型。
支持以下协议类型:
ssh — 安全外壳协议(Secure Shell)。tls — pgBackRest TLS 服务器。
default: ssh
example: --pg1-host-type=tls
PostgreSQL 主机用户选项(--pg-host-user)
设置 pg-host 时使用的 PostgreSQL 主机登录用户。
该用户同时拥有远程 pgBackRest 进程,并负责发起与 PostgreSQL 的连接。为使其正常工作,此用户应为 PostgreSQL 数据库集群的所有者,通常为默认值 postgres。
default: postgres
example: --pg1-host-user=db_owner
已弃用名称:db-user
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
应与 PostgreSQL 报告的 data_directory 一致。尽管可以从多处读取此值,但建议在配置文件中显式设置,以防在恢复或离线备份场景中这些来源不可用。
每次在线备份时,pg-path 选项都会与 PostgreSQL 报告的值进行核对,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
PostgreSQL 端口选项(--pg-port)
PostgreSQL 端口。
PostgreSQL 运行的端口。大多数 PostgreSQL 集群使用默认端口,通常无需指定此选项。
default: 5432
allowed: [0, 65535]
example: --pg1-port=6543
已弃用名称:db-port
PostgreSQL Socket 路径选项(--pg-socket-path)
PostgreSQL Unix socket 路径。
启动 PostgreSQL 时指定的 Unix socket 目录。pgBackRest 会自动查找操作系统的标准位置,通常无需配置此选项,除非通过 postgresql.conf 中的 unix_socket_directories 参数显式修改了 socket 目录。
example: --pg1-socket-path=/var/run/postgresql
已弃用名称:db-socket-path
PostgreSQL 数据库用户选项(--pg-user)
PostgreSQL 数据库用户。
连接 PostgreSQL 时使用的数据库用户名。若未指定,pgBackRest 将使用本地操作系统用户或 PGUSER 环境变量。
example: --pg1-user=backupuser
5 - 检查命令(check)
pgBackRest check 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: check
check 命令用于验证 pgBackRest 及 archive_command 的配置是否正确,确保指定 stanza(stanza 是 pgBackRest 中用于标识 PostgreSQL 集群备份配置的逻辑名称)的归档与备份能够正常运作。该命令会对当前主机上为该 stanza 配置的所有仓库和数据库逐一检查,可检测出配置错误——尤其是归档配置问题,此类问题会导致所需的 WAL 段无法进入归档,从而造成备份不完整。此命令可在 PostgreSQL 主机或仓库主机上运行;也可在备库主机上运行,但由于备库无法执行 pg_switch_xlog()/pg_switch_wal(),命令仅会测试仓库配置。
请注意,该命令会调用 pg_create_restore_point('pgBackRest Archive Check') 和 pg_switch_xlog()/pg_switch_wal() 来强制 PostgreSQL 归档一个 WAL 段。
命令选项
归档检查选项(--archive-check)
在备份完成前检查 WAL 段是否已进入归档。
此选项会验证使备份达到一致状态所需的全部 WAL 段是否均已存在于归档中。建议保持默认值,除非你通过其他方式管理归档。
若启用了 archive-copy,则必须同时启用此选项。
default: y
example: --no-archive-check
归档模式检查选项(--archive-mode-check)
检查 PostgreSQL 的 archive_mode 设置。
此选项默认启用,作用是禁止 PostgreSQL 使用 archive_mode=always。
从备库推送的 WAL 段与从主库推送的 WAL 段在逻辑上可能相同,但校验和不同。禁止多源归档可以避免潜在冲突。
注意:
若禁用此选项,必须确保只有一个归档进程通过 archive-push 命令向仓库写入数据。
default: y
example: --no-archive-mode-check
归档超时选项(--archive-timeout)
归档超时时间。
设置等待每个 WAL 段进入 pgBackRest 归档仓库的最长时间(秒)。此超时适用于 check 和 backup 命令等待备份一致性所需 WAL 段完成归档的场景。
default: 1m
allowed: [100ms, 1d]
example: --archive-timeout=30
从备库备份选项(--backup-standby)
从备库集群进行备份。
从备库备份可降低主库的负载。此选项要求同时配置主库和备库主机。
支持以下模式:
y - 必须使用备库进行备份。prefer - 优先从备库备份,备库不可用时自动切换到主库。n - 仅从主库备份。
default: n
example: --backup-standby=y
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能会额外占用内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
当需要使用特定 SSH 客户端,或 ssh 命令不在 $PATH 中时,使用此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,此选项设置网络传输的压缩级别。压缩可减少网络流量。当 compress-type 不为 none 时,compress-level-network 将被忽略,转而使用 compress-level,以避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
指定路径下扩展名为 .conf 的配置文件将与主配置文件合并,构成完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
数据库超时选项(--db-timeout)
数据库查询超时时间。
设置对数据库执行查询的超时时间(秒)。涉及备份启动/停止函数的查询各自可能耗时较长,因此除非你确定这些函数会快速返回(例如已设置 start-fast=y,且数据库集群在备份期间不会产生大量 WAL 段),否则应将此超时设为较大值。
注意: db-timeout 选项的值必须小于 protocol-timeout 选项的值。
default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600
I/O 超时选项(--io-timeout)
I/O 超时时间。
用于连接和读写操作的超时时间(秒)。
请注意,整个读写操作无需在此时间内完成,但必须持续有所进展,哪怕每次只传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设为 0000,使仓库中的文件和目录以合理的权限模式创建。默认目录权限为 0750,文件权限为 0640。锁文件和日志目录的权限分别为 0770(目录)和 0660(文件)。
若要改用当前运行用户的 umask,请在配置文件中指定 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 nice 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期阻塞。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活机制。
在 socket 连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 PostgreSQL 数据库集群的配置,定义了集群的位置、备份方式、归档选项等。大多数数据库服务器只有一个 PostgreSQL 集群,因此只有一个 stanza;而备份服务器则需要为每个待备份的数据库集群分别配置一个 stanza。
命名 stanza 时,很容易直接使用主集群的名称,但更好的做法是根据集群承载的数据库功能来命名。由于 stanza 名称同时用于主库和所有副本,建议选择能描述集群实际用途的名称(如 app 或 dw),而非本地集群名称(如 main 或 prod)。
TCP 保活计数选项(--tcp-keep-alive-count)
保活数据包计数。
指定连接被判定为断开前,可丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
指定无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活消息重传间隔。
指定未收到确认的 TCP 保活消息在多少秒后重新发送。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件列表。示例为合理选择,除非有特定安全需求。若未设置(默认),则使用底层 OpenSSL 库的默认配置。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件列表。若未设置(默认),则使用底层 OpenSSL 库的默认配置。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。输出到 stderr 的内容不包含时间戳和进程信息。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件存储路径。
指定 pgBackRest 日志文件的存储位置。若 log-level-file=off,则无需配置此路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的子进程启用文件日志记录,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中附加时间戳。生成文档等特殊场景下此选项会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用此选项指定的 PostgreSQL 版本,而不依赖从 pg_control 或 WAL 头部自动检测的版本。此选项主要用于 PostgreSQL 分支版本或开发版本——在这些版本中,自动检测值可能与正式发行版本不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项须格外谨慎。pg_control 和 WAL 头部仍会按指定版本的预期格式读取,即官方开源 PostgreSQL 的格式。若分支版本或开发版本修改了 pgBackRest 所依赖的字段格式,将导致不可预期的行为。通常只有在分支版本于标准 PostgreSQL 结构成员之后追加自定义成员时,此选项才能正常工作。
example: --pg-version-force=15
仓库选项
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定前缀(如 /repo),以便日志和其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
请注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志和其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点。可更新为本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时会重新加载凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档使用本地挂载的文件系统,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当 pgBackRest 在本地主机与仓库主机上的路径不同时才需要此选项。若未定义,仓库主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
repo-host 已设置时的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 无默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(Secure Shell)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
repo-host 已设置时的仓库主机用户。
定义在仓库主机上执行操作所用的用户。建议不要使用 postgres 用户,而是使用专用用户(如 pgbackrest)。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有读取权限,但无法意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的地方。
预先估算所需空间可能比较困难。建议先执行若干次备份,记录不同备份类型(全量/增量/差异)的大小,并衡量每天产生的 WAL 量,从而得出大致的空间需求。随着数据库持续增长,需求也会相应变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志和其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能有用。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭据web-id - 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存储仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
主机指纹的生成方式应与 repo-sftp-host-key-hash-type 一致,通过 awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b 命令生成。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,并拒绝连接到主机密钥已更改或不在已知主机文件中的主机。此模式强制用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接到主机密钥已更改的主机。fingerprint - pgBackRest 将主机密钥与 repo-sftp-host-fingerprint 选项指定的指纹进行比对。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机的端口号。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证过程中用于搜索 SFTP 主机匹配的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将只在这些文件中搜索匹配项。文件路径必须为完整路径或以波浪号开头的路径。此选项可多次传入以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。使用 OpenSSL 编译时为可选;使用其他库编译时为必需。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时,使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时,使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
指定在仓库为对象存储(如 S3)时添加到对象上的标签。可多次使用此选项以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前确保标签设置正确,以保证整个仓库标签的一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
S3 等对象存储支持在文件过大无法全部载入内存时分块上传。即使文件能全部载入内存,限制上传所用内存量也更为高效。
较大的块大小通常能提升性能,因为它可以减少上传请求数量,使更多文件在单次请求中完成上传而无需分块处理。其代价是内存占用更高,且由于块缓冲区需按进程分配,process-max 值越大,整体内存消耗越多。
请注意,有效的块大小因存储类型和平台而异。例如,AWS S3 的最小块大小为 5MiB。各存储类型对块大小的叫法不同,查找最小/最大值时请参考:AWS S3 用"part size",GCS 用"chunk size",Azure 用"block size"。
若文件大小超过 1GiB(PostgreSQL 默认创建文件的上限),块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务端 TLS 证书的验证。禁用验证仅应用于测试或使用自签名证书的场景。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中描述的相同,详见 创建数据库集群 - 文件系统。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 数据库选项(--pg-database)
PostgreSQL 数据库。
连接 PostgreSQL 时使用的数据库名称。默认值通常是最佳选择,但某些安装可能不包含此数据库。
请注意,出于历史原因,PGDATABASE 环境变量的设置将被忽略。
default: postgres
example: --pg1-database=backupdb
PostgreSQL 主机选项(--pg-host)
远程操作时的 PostgreSQL 主机。
用于 PostgreSQL 主机与仓库主机分离的备份场景。
example: --pg1-host=db.domain.com
已弃用名称:db-host
PostgreSQL 主机证书颁发机构文件选项(--pg-host-ca-file)
PostgreSQL 主机证书颁发机构文件。
连接 PostgreSQL 主机时,使用非系统默认的 CA 文件。
example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
PostgreSQL 主机证书颁发机构路径选项(--pg-host-ca-path)
PostgreSQL 主机证书颁发机构路径。
连接 PostgreSQL 主机时,使用非系统默认的 CA 路径。
example: --pg1-host-ca-path=/etc/pki/tls/certs
PostgreSQL 主机证书文件选项(--pg-host-cert-file)
PostgreSQL 主机证书文件。
发送给 PostgreSQL 主机以证明客户端身份。
example: --pg1-host-cert-file=/path/to/client.crt
PostgreSQL 主机命令选项(--pg-host-cmd)
PostgreSQL 主机上的 pgBackRest 命令。
仅当 pgBackRest 在本地主机与 PostgreSQL 主机上的路径不同时才需要此选项。若未定义,PostgreSQL 主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:db-cmd
PostgreSQL 主机配置文件选项(--pg-host-config)
pgBackRest 数据库主机配置文件。
设置 PostgreSQL 主机上配置文件的位置。仅当 PostgreSQL 主机上的配置文件路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:db-config
PostgreSQL 主机配置包含路径选项(--pg-host-config-include-path)
pgBackRest 数据库主机配置包含路径。
设置 PostgreSQL 主机上配置包含路径的位置。仅当 PostgreSQL 主机上的配置包含路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d
PostgreSQL 主机配置路径选项(--pg-host-config-path)
pgBackRest 数据库主机配置路径。
设置 PostgreSQL 主机上配置路径的位置。仅当 PostgreSQL 主机上的配置路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest
PostgreSQL 主机密钥文件选项(--pg-host-key-file)
PostgreSQL 主机密钥文件。
证明客户端证书由其所有者发送。
example: --pg1-host-key-file=/path/to/client.key
PostgreSQL 主机端口选项(--pg-host-port)
pg-host 已设置时的 PostgreSQL 主机端口。
使用此选项为 PostgreSQL 主机协议指定非默认端口。
注意: 当 pg-host-type=ssh 时,pg-host-port 无默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on pg-host-type):
tls - 8432
allowed: [0, 65535]
example: --pg1-host-port=25
已弃用名称:db-ssh-port
PostgreSQL 主机协议类型选项(--pg-host-type)
PostgreSQL 主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(Secure Shell)。tls - pgBackRest TLS 服务器。
default: ssh
example: --pg1-host-type=tls
PostgreSQL 主机用户选项(--pg-host-user)
pg-host 已设置时的 PostgreSQL 主机登录用户。
此用户还将作为远程 pgBackRest 进程的所有者,并负责发起到 PostgreSQL 的连接。为使其正常工作,该用户应为 PostgreSQL 数据库集群的所有者,通常即默认值 postgres。
default: postgres
example: --pg1-host-user=db_owner
已弃用名称:db-user
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
此路径应与 PostgreSQL 报告的 data_directory 一致。尽管该值可从多处读取,但在恢复或离线备份场景下这些资源可能不可用,因此建议显式设置。
每次在线备份时,pg-path 选项都会与 PostgreSQL 报告的值进行核对,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
PostgreSQL 端口选项(--pg-port)
PostgreSQL 端口。
PostgreSQL 运行的端口号。大多数 PostgreSQL 集群使用默认端口,通常无需指定此选项。
default: 5432
allowed: [0, 65535]
example: --pg1-port=6543
已弃用名称:db-port
PostgreSQL Socket 路径选项(--pg-socket-path)
PostgreSQL Unix socket 路径。
启动 PostgreSQL 时指定的 Unix socket 目录。pgBackRest 会自动查找当前操作系统的标准位置,通常无需指定此选项,除非在 postgresql.conf 中通过 unix_socket_directories 显式修改了 socket 目录。
example: --pg1-socket-path=/var/run/postgresql
已弃用名称:db-socket-path
PostgreSQL 数据库用户选项(--pg-user)
PostgreSQL 数据库用户。
连接 PostgreSQL 时使用的数据库用户名。若未指定,pgBackRest 将使用本地操作系统用户或 PGUSER。
example: --pg1-user=backupuser
6 - 过期命令(expire)
pgBackRest expire 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: expire
pgBackRest 基于保留策略对全量备份进行轮换,策略可按数量或时间段定义。按数量保留时,过期操作只关注需要保留的备份数量,不考虑备份的创建时间。差异备份按数量进行保留,但当其依赖的全量备份过期时,差异备份也会随之过期。增量备份没有独立的保留策略——它们始终随关联的全量备份或差异备份一同过期。详情及示例请参见 全量备份保留策略 和 差异备份保留策略 章节。
默认情况下,未过期备份对应的已归档 WAL 会被保留。如有需要(不推荐),可通过归档保留选项按仓库单独调整此策略。详情及示例请参见 归档保留策略 章节。
expire 命令在每次备份成功后自动运行,也可由用户手动执行。手动执行时,将按每个已配置仓库的保留策略处理过期备份。若指定了 --repo 选项,则仅对指定仓库执行过期操作。还可通过 --set 选项将过期操作限定到特定备份集;若未指定 --repo,则会搜索所有仓库,对所有匹配该备份集条件的仓库执行过期。需要注意的是,每次运行 expire 命令时都会检查并执行归档保留策略。
命令选项
最旧备份选项(--oldest)
过期最旧的可删除备份集。
过期可以删除的最旧全量备份集(即至少保留一个比它更新的全量备份)。这等价于将保留数量临时减一,但由系统自动计算。与该过期全量备份集关联的所有备份(差异备份和增量备份)也会一同过期。
使用此选项时,归档保留策略也会相应调整,以便在同一次运行中删除已过期备份的 WAL。
若配置了基于时间的全量保留策略(--repo-retention-full-type=time),则本次执行中 --oldest 将改用基于数量的过期方式。
警告:
此选项不能与 --set 同时使用。
default: n
example: --oldest
备份集选项(--set)
指定要过期的备份集。
无论保留规则如何,指定的备份集(即所提供的备份标签及其所有依赖备份)都将被过期,但仓库中至少必须保留一个全量备份。
警告:
请极其谨慎地使用此选项——它将从 pgBackRest 仓库中永久删除指定备份集中的所有备份,以及使该备份保持一致所不需要的所有归档文件。此操作可能导致相关备份无法执行 PITR。若已配置 --repo-retention-full 和/或 --repo-retention-archive,建议在执行临时过期操作时将这些选项设为最大值,以防意外删除归档文件。
example: --set=20150131-153358F_20150131-153401I
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能会额外占用内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
当需要使用特定 SSH 客户端,或 ssh 命令不在 $PATH 中时,使用此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,此选项设置网络传输的压缩级别。压缩可减少网络流量。当 compress-type 不为 none 时,compress-level-network 将被忽略,转而使用 compress-level,以避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
指定路径下扩展名为 .conf 的配置文件将与主配置文件合并,构成完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
试运行选项(--dry-run)
以试运行模式执行命令。
--dry-run 仅可在命令行使用,适用于需要预判命令将进行哪些修改而不实际执行的场景。
default: n
example: --dry-run
I/O 超时选项(--io-timeout)
I/O 超时时间。
用于连接和读写操作的超时时间(秒)。
请注意,整个读写操作无需在此时间内完成,但必须持续有所进展,哪怕每次只传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件存储路径。
指定 pgBackRest 创建锁文件的位置,用于防止相互冲突的操作并发运行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设为 0000,使仓库中的文件和目录以合理的权限模式创建。默认目录权限为 0750,文件权限为 0640。锁文件和日志目录的权限分别为 0770(目录)和 0660(文件)。
若要改用当前运行用户的 umask,请在配置文件中指定 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 nice 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期阻塞。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活机制。
在 socket 连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 PostgreSQL 数据库集群的配置,定义了集群的位置、备份方式、归档选项等。大多数数据库服务器只有一个 PostgreSQL 集群,因此只有一个 stanza;而备份服务器则需要为每个待备份的数据库集群分别配置一个 stanza。
命名 stanza 时,很容易直接使用主集群的名称,但更好的做法是根据集群承载的数据库功能来命名。由于 stanza 名称同时用于主库和所有副本,建议选择能描述集群实际用途的名称(如 app 或 dw),而非本地集群名称(如 main 或 prod)。
TCP 保活计数选项(--tcp-keep-alive-count)
保活数据包计数。
指定连接被判定为断开前,可丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
指定无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活消息重传间隔。
指定未收到确认的 TCP 保活消息在多少秒后重新发送。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件列表。示例为合理选择,除非有特定安全需求。若未设置(默认),则使用底层 OpenSSL 库的默认配置。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整可接受的加密套件列表。若未设置(默认),则使用底层 OpenSSL 库的默认配置。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。输出到 stderr 的内容不包含时间戳和进程信息。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件存储路径。
指定 pgBackRest 日志文件的存储位置。若 log-level-file=off,则无需配置此路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的子进程启用文件日志记录,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中附加时间戳。生成文档等特殊场景下此选项会被禁用。
default: y
example: --no-log-timestamp
仓库选项
指定仓库选项(--repo)
指定操作仓库。
指定命令操作的目标仓库。
例如,可使用此选项从特定仓库执行恢复,而不是让 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定前缀(如 /repo),以便日志和其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
请注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志和其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点。可更新为本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时会重新加载凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档使用本地挂载的文件系统,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当 pgBackRest 在本地主机与仓库主机上的路径不同时才需要此选项。若未定义,仓库主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要此选项。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
repo-host 已设置时的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 无默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(Secure Shell)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
repo-host 已设置时的仓库主机用户。
定义在仓库主机上执行操作所用的用户。建议不要使用 postgres 用户,而是使用专用用户(如 pgbackrest)。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有读取权限,但无法意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的地方。
预先估算所需空间可能比较困难。建议先执行若干次备份,记录不同备份类型(全量/增量/差异)的大小,并衡量每天产生的 WAL 量,从而得出大致的空间需求。随着数据库持续增长,需求也会相应变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
归档保留选项(--repo-retention-archive)
连续 WAL 保留的备份数量。
注意: 使备份保持一致所需的 WAL 段将始终保留,直到该备份过期,与此选项的配置无关。
若未设置此值且 repo-retention-full-type 为 count(默认值),则归档过期策略默认与 repo-retention-archive-type 对应的 repo-retention-full(或 repo-retention-diff)值一致——前提是 repo-retention-archive-type 设为 full(或 diff)。这确保了 WAL 仅在对应备份过期时才同步过期。若 repo-retention-full-type 为 time,则此值默认删除比满足 repo-retention-full 设置后所保留的最旧全量备份更早的归档。
若 repo-retention-archive-type 设为 incr,则必须设置此选项。在磁盘空间紧张时,此选项与 repo-retention-archive-type 配合可更激进地过期 WAL 段,但代价是相关备份将无法执行 PITR,因此不推荐。
allowed: [1, 9999999]
example: --repo1-retention-archive=2
已弃用名称:retention-archive
归档保留类型选项(--repo-retention-archive-type)
WAL 保留的备份类型。
- 设为
full 时,pgBackRest 将为 repo-retention-archive 指定数量的全量备份保留归档日志。 - 设为
diff(差异)时,pgBackRest 将为 repo-retention-archive 指定数量的全量和差异备份保留归档日志;若最后一次备份是全量备份,它也会被计入差异备份数量。 - 设为
incr(增量)时,pgBackRest 将为 repo-retention-archive 指定数量的全量、差异和增量备份保留归档日志。
建议保持默认值,即仅在全量备份过期时才过期 WAL。
default: full
example: --repo1-retention-archive-type=diff
已弃用名称:retention-archive-type
差异备份保留选项(--repo-retention-diff)
保留的差异备份数量。
差异备份过期时,与之关联的所有增量备份也会一同过期。若未定义,所有差异备份将保留,直到其依赖的全量备份过期。
请注意,在过期计算中,全量备份也会被计入差异备份数量,这在大多数情况下会略微减少实际保留的差异备份数量。
allowed: [1, 9999999]
example: --repo1-retention-diff=3
已弃用名称:retention-diff
全量备份保留选项(--repo-retention-full)
全量备份的保留数量/时间。
全量备份过期时,与之关联的所有差异和增量备份也会一同过期。若未定义此选项,将发出警告。若希望无限期保留,请将此选项设为最大值。
allowed: [1, 9999999]
example: --repo1-retention-full=2
已弃用名称:retention-full
全量备份保留类型选项(--repo-retention-full-type)
全量备份的保留类型。
决定 repo-retention-full 表示的是天数(时间段)还是全量备份数量。
- 设为
time 时,创建时间早于 repo-retention-full 天的全量备份将被删除,但前提是仓库中至少有一个不早于该天数的备份。例如,若 repo-retention-full 为 30,且存在两个全量备份(一个 25 天前,一个 35 天前),则不会过期任何备份——因为删除 35 天前的备份后只剩 25 天前的备份,而 25 天未满足"至少有一个 30 天以内备份"的条件,因此不允许过期更旧的备份。比最旧保留全量备份更早的归档 WAL 将自动过期,除非显式设置了 repo-retention-archive-type 和 repo-retention-archive。 - 设为
count 时,超出 repo-retention-full 数量的全量备份将被过期。例如,若 repo-retention-full 为 4,完成第五个全量备份后,最旧的全量备份将被过期以保持数量为 4。
请注意,只有成功完成的备份才会纳入保留计算。例如,若 repo-retention-full-type 为 count 且 repo-retention-full 为 2,则必须存在 3 个完整的全量备份,最旧的才会被过期。
default: count
example: --repo1-retention-full-type=time
备份历史保留选项(--repo-retention-history)
备份历史清单文件的保留天数。
备份完成时,清单文件(manifest)的副本会存储在 backup.history 路径下。默认情况下这些文件永不过期,因为它们对分析历史数据很有价值,例如用于统计备份和 WAL 随时间的增长趋势。
设置 repo-retention-history 可指定保留备份历史清单的天数。未过期的备份始终保留在备份历史中。指定 repo-retention-history=0 可仅为未过期备份保留备份历史。
当全量备份的历史清单过期时,与该全量备份关联的所有差异和增量备份历史清单也会一同过期。
allowed: [0, 9999999]
example: --repo1-retention-history=365
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定前缀(如 /repo),以便日志和其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能有用。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭据web-id - 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存储仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
主机指纹的生成方式应与 repo-sftp-host-key-hash-type 一致,通过 awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b 命令生成。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,并拒绝连接到主机密钥已更改或不在已知主机文件中的主机。此模式强制用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接到主机密钥已更改的主机。fingerprint - pgBackRest 将主机密钥与 repo-sftp-host-fingerprint 选项指定的指纹进行比对。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机的端口号。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证过程中用于搜索 SFTP 主机匹配的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将只在这些文件中搜索匹配项。文件路径必须为完整路径或以波浪号开头的路径。此选项可多次传入以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。使用 OpenSSL 编译时为可选;使用其他库编译时为必需。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时,使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时,使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
指定在仓库为对象存储(如 S3)时添加到对象上的标签。可多次使用此选项以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前确保标签设置正确,以保证整个仓库标签的一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
S3 等对象存储支持在文件过大无法全部载入内存时分块上传。即使文件能全部载入内存,限制上传所用内存量也更为高效。
较大的块大小通常能提升性能,因为它可以减少上传请求数量,使更多文件在单次请求中完成上传而无需分块处理。其代价是内存占用更高,且由于块缓冲区需按进程分配,process-max 值越大,整体内存消耗越多。
请注意,有效的块大小因存储类型和平台而异。例如,AWS S3 的最小块大小为 5MiB。各存储类型对块大小的叫法不同,查找最小/最大值时请参考:AWS S3 用"part size",GCS 用"chunk size",Azure 用"block size"。
若文件大小超过 1GiB(PostgreSQL 默认创建文件的上限),块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务端 TLS 证书的验证。禁用验证仅应用于测试或使用自签名证书的场景。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库符号链接选项(--repo-symlink)
在仓库中创建符号链接。
启用 latest 符号链接和表空间符号链接的创建。这些符号链接在使用快照进行仓库内原地恢复时最为有用,而这是一个不常见的使用场景。
虽然此功能对绝大多数用户可能没有实际价值,但出于历史原因默认保持开启。对于不支持符号链接的类 POSIX 存储,禁用此选项可能更为合适。
default: y
example: --no-repo1-symlink
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中描述的相同,详见 创建数据库集群 - 文件系统。
default: posix
example: --repo1-type=cifs
7 - 帮助命令(help)
pgBackRest help 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: help
help 命令提供三个层级的帮助信息:未指定命令时显示通用帮助;指定命令(例如 pgbackrest help backup)时显示该命令的完整说明及有效选项列表;在命令之外还指定了某个选项(例如 pgbackrest help backup type)时显示该选项在此命令下的完整说明。
命令选项
显示帮助选项(--help)
显示帮助信息。
即使未指定 help 命令也会显示帮助信息,且优先于 --version 选项。
default: n
example: --help
显示版本选项(--version)
显示版本信息。
即使未指定 version 或 help 命令也会显示版本信息。
default: n
example: --version
8 - Info 命令(info)
pgBackRest info 命令选项与行为参考。
原始页面: pgBackRest Command Docs: info
info 命令可查询单个 stanza(stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称)或所有 stanza 的信息。默认输出为文本格式,以人类可读的摘要展示所请求 stanza 的备份信息。该格式可能随版本更新而变化。
如需机器可读输出,请使用 --output=json。JSON 输出包含的信息远多于文本格式,且除非发现缺陷,其格式保持稳定。
若只需快速查看进度信息,可指定 --detail-level=progress。注意此模式会跳过 stanza 可用性检查以外的所有检查。
每个 stanza 占独立的输出区块,可使用 --stanza 选项将输出限定到单个 stanza。stanza 的 status 字段简要反映其健康状态:ok 表示 pgBackRest 运行正常。若配置了多个仓库,mixed 状态表示该 stanza 在一个或多个仓库上存在异常,此时会按仓库分别显示详细状态。若某仓库发生了未知错误代码的错误,将使用 other 作为错误码,并附上完整的错误详情。wal archive min/max 显示当前归档中最小和最大 WAL 段;配置多个仓库时,除非指定了 --repo 选项,否则将跨所有仓库汇总报告。注意,由于归档保留策略或其他原因,归档中可能存在间隙。
若主机上正在运行 backup/expire 或 restore 命令,status 信息旁边将分别显示 backup/expire running 和/或 restore running。
备份按从旧到新的顺序列出。最旧的备份始终是全量备份(标签末尾以 F 标识),最新的备份可以是全量备份、差异备份(末尾以 D 标识)或增量备份(末尾以 I 标识)。
timestamp start/stop 定义了备份运行的时间段。timestamp stop 可用于确定时间点恢复(PITR)所需的目标备份。更多关于时间点恢复的信息,请参见 时间点恢复 章节。
wal start/stop 定义了恢复时将数据库恢复到一致状态所需的 WAL 范围。backup 命令完成前会确保该 WAL 范围已存在于归档中。
database size 是数据库未压缩的完整大小,database backup size 是本次备份实际需要备份的数据量(全量备份时两者相同)。
repo 表示该备份所在的仓库。backup set size 包含该备份及仓库中恢复数据库所需引用的所有备份文件,backup size 仅包含本次备份中的文件(全量备份时两者相同)。若 pgBackRest 启用了压缩,仓库大小反映压缩后的文件大小。
backup reference total 汇总了恢复该备份时所需引用的其他备份数量。使用 --set 选项可显示完整的引用列表。
命令选项
详细级别选项(--detail-level)
输出详细级别。
支持以下级别:
progress - 仅输出当前备份/expire 的进度信息。此级别不能与 --set 选项同时使用。full - 输出完整信息。
default: full
example: --detail-level=progress
输出格式选项(--output)
输出格式。
支持以下输出类型:
text - 备份信息的人类可读摘要。json - JSON 格式的完整机器可读备份信息。
default: text
example: --output=json
备份集选项(--set)
要查看详情的备份集。
详情包括:恢复该备份所需引用的其他备份完整列表、备份集中的数据库列表(含 OID,不含模板数据库)、表空间(含 OID)及其默认恢复目标路径,以及指定 --link-all 时符号链接的恢复目标路径。
example: --set=20150131-153358F_20150131-153401I
类型选项(--type)
按备份类型过滤。
使用以下备份类型之一过滤输出:
full - 仅输出全量备份。diff - 仅输出差异备份。incr - 仅输出增量备份。
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能还会使用额外内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用其他 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定具体路径。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,设置网络传输的压缩级别。压缩用于减少网络流量。当 compress-type 不等于 none 时,将忽略 compress-level-network,转而使用 compress-level,以避免文件被压缩两次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定非默认的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
额外 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,形成完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 选项的默认基础路径,除非这两个选项已在命令行中显式设置。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读/写操作的超时时间(秒)。
注意,整个读/写操作无需在此超时时间内完成,但必须有所进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 使用此路径下的锁文件防止冲突操作并发执行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为进程分配的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期等待。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活(keep-alive)。
在套接字连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 PostgreSQL 数据库集群的配置单元,定义了集群的位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则为每个需要备份的数据库集群各配置一个 stanza。
命名 stanza 时,虽然容易以主集群名称命名,但更好的做法是以集群所承载数据库的功能来命名。由于 stanza 名称同时适用于主库和所有副本,选择能描述集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
保活(keep-alive)计数。
在判定连接已断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT 套接字选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活(keep-alive)空闲时间。
无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE 套接字选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活(keep-alive)间隔时间。
未收到确认的 TCP 保活消息在多少秒后重新发送。
此选项仅在支持 TCP_KEEPINTVL 套接字选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置是合理的选择,除非有特殊安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。输出到 stderr 的日志不含时间戳和进程信息。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意,若 log-level-file=off,则无需设置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为该进程创建的所有子进程启用文件日志记录,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳。在生成文档等特殊情况下,此选项会被禁用。
default: y
example: --no-log-timestamp
仓库选项
指定仓库选项(--repo)
设置仓库。
指定命令操作的目标仓库。
例如,可使用此选项从特定仓库执行恢复,而不是让 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
pgBackRest 仓库可通过设置 repo-path=/ 存储在容器根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管身份自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 前添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意,即使仓库类型(如 S3)支持服务端加密,pgBackRest 也始终在客户端执行加密。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点。可更新为使用本地 GCS 服务器或其他端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,例如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时将重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
当备份和归档到本地挂载的文件系统时,无需设置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当仓库主机上的 pgBackRest 命令路径与本地不同时才需要设置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时仓库主机使用的端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - Secure Shell。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时仓库主机使用的用户。
定义在仓库主机上执行操作的用户。建议使用非 postgres 用户,例如 pgbackrest。如果 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有只读权限,避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的地方。
事先估算所需空间可能比较困难。最佳做法是先执行几次备份,记录不同备份类型(全量/增量/差异)的大小,并测量每天生成的 WAL 量,以此作为空间规划的参考。随着数据库的演进,需求也会随时间变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义/测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能会有用。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶时所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费模式。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 前添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
指纹的生成方式应与 repo-sftp-host-key-hash-type 一致。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接到主机密钥已更改或未在已知主机文件中找到的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件中,但不允许连接到主机密钥已更改的主机。fingerprint - pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证期间用于搜索 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些路径中搜索匹配项。文件路径必须是完整路径或以波浪号(~)开头的路径。该选项可多次传入以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。编译时使用 OpenSSL 则为可选,使用其他库则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机。通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定的主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定添加到对象上的标签。可重复使用此选项以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前正确设置,以确保整个仓库的标签一致。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大而无法完整存入内存时,S3 等对象存储支持分块上传。即使文件能够存入内存,限制上传所用内存量也更为高效。
较大的分块大小通常能提升性能,因为可以减少上传请求次数,并允许在单次请求中上传更多数据而无需分块。缺点是内存占用更高,且由于分块缓冲区必须按进程分配,较大的 process-max 值会导致整体内存消耗增加。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语不同:AWS S3 使用 “part size”,GCS 使用 “chunk size”,Azure 使用 “block size”。
若文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务器 TLS 证书的验证。仅在测试场景或使用自签名证书时才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库的目标时间。
目标时间定义了命令读取版本化存储上的仓库所使用的时间点。通过此选项,命令可以读取某一历史时刻的仓库状态,从而恢复因用户误操作或恶意软件导致被删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认不启用。除了启用版本控制外,还可考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除。
使用 repo-target-time 选项时,还必须同时指定 repo 选项。并非所有仓库类型都支持版本控制,通常针对单个仓库进行恢复更为合理。
注意,与存储时间戳的比较为 <=(小于等于)所提供的时间戳,且提供的时间戳中的毫秒部分将被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,pgBackRest 遵循的规则与 PostgreSQL 文档中描述的相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
9 - 仓库获取命令(repo-get)
pgBackRest repo-get 命令选项与行为参考。
原始页面: pgBackRest Command Docs: repo-get
repo-get 命令类似于 Unix 的 cat 命令,但支持所有仓库类型。使用此命令需要提供完整的文件名,主要用于管理、排查和测试目的,不是常规 pgBackRest 使用流程中的必需命令。
若仓库已加密,repo-get 将自动解密文件。文件不会自动解压,但可将输出通过管道传递给相应的解压命令,例如 gzip -d。
若配置了多个仓库,命令默认使用优先级最高的仓库(如 repo1),除非通过 --repo 选项指定了具体仓库。
命令选项
忽略缺失文件选项(--ignore-missing)
忽略缺失的源文件。
若源文件不存在,则以退出码 1 退出,而不抛出错误。
default: n
example: --ignore-missing
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能还会使用额外内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用其他 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定具体路径。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,设置网络传输的压缩级别。压缩用于减少网络流量。当 compress-type 不等于 none 时,将忽略 compress-level-network,转而使用 compress-level,以避免文件被压缩两次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定非默认的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
额外 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,形成完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 选项的默认基础路径,除非这两个选项已在命令行中显式设置。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读/写操作的超时时间(秒)。
注意,整个读/写操作无需在此超时时间内完成,但必须有所进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,以合理的默认权限创建仓库中的文件。默认目录权限为 0750,默认文件权限为 0640;锁文件和日志目录的权限分别为 0770(目录)和 0660(文件)。
若要使用执行用户的 umask,请在配置文件中指定 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为进程分配的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期等待。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
原始数据选项(--raw)
不对数据进行转换。
执行当前命令时跳过所有数据转换操作(如加密、解压等)。
default: n
example: --raw
保活选项(--sck-keep-alive)
启用保活(keep-alive)。
在套接字连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 PostgreSQL 数据库集群的配置单元,定义了集群的位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则为每个需要备份的数据库集群各配置一个 stanza。
命名 stanza 时,虽然容易以主集群名称命名,但更好的做法是以集群所承载数据库的功能来命名。由于 stanza 名称同时适用于主库和所有副本,选择能描述集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
保活(keep-alive)计数。
在判定连接已断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT 套接字选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活(keep-alive)空闲时间。
无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE 套接字选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活(keep-alive)间隔时间。
未收到确认的 TCP 保活消息在多少秒后重新发送。
此选项仅在支持 TCP_KEEPINTVL 套接字选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置是合理的选择,除非有特殊安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,到对象存储(如 S3)的连接也经过加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。输出到 stderr 的日志不含时间戳和进程信息。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意,若 log-level-file=off,则无需设置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为该进程创建的所有子进程启用文件日志记录,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳。在生成文档等特殊情况下,此选项会被禁用。
default: y
example: --no-log-timestamp
仓库选项
指定仓库选项(--repo)
设置仓库。
指定命令操作的目标仓库。
例如,可使用此选项从特定仓库执行恢复,而不是让 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
pgBackRest 仓库可通过设置 repo-path=/ 存储在容器根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管身份自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 前添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意,即使仓库类型(如 S3)支持服务端加密,pgBackRest 也始终在客户端执行加密。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点。可更新为使用本地 GCS 服务器或其他端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,例如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时将重新加载凭证。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
当备份和归档到本地挂载的文件系统时,无需设置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当仓库主机上的 pgBackRest 命令路径与本地不同时才需要设置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要设置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时仓库主机使用的端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - Secure Shell。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时仓库主机使用的用户。
定义在仓库主机上执行操作的用户。建议使用非 postgres 用户,例如 pgbackrest。如果 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有只读权限,避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的地方。
事先估算所需空间可能比较困难。最佳做法是先执行几次备份,记录不同备份类型(全量/增量/差异)的大小,并测量每天生成的 WAL 量,以此作为空间规划的参考。随着数据库的演进,需求也会随时间变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义/测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能会有用。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶时所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费模式。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 前添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
指纹的生成方式应与 repo-sftp-host-key-hash-type 一致。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接到主机密钥已更改或未在已知主机文件中找到的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件中,但不允许连接到主机密钥已更改的主机。fingerprint - pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证期间用于搜索 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些路径中搜索匹配项。文件路径必须是完整路径或以波浪号(~)开头的路径。该选项可多次传入以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。编译时使用 OpenSSL 则为可选,使用其他库则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储(如 S3、Azure)时使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储(如 S3、Azure)时使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机。通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定的主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定添加到对象上的标签。可重复使用此选项以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前正确设置,以确保整个仓库的标签一致。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大而无法完整存入内存时,S3 等对象存储支持分块上传。即使文件能够存入内存,限制上传所用内存量也更为高效。
较大的分块大小通常能提升性能,因为可以减少上传请求次数,并允许在单次请求中上传更多数据而无需分块。缺点是内存占用更高,且由于分块缓冲区必须按进程分配,较大的 process-max 值会导致整体内存消耗增加。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语不同:AWS S3 使用 “part size”,GCS 使用 “chunk size”,Azure 使用 “block size”。
若文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务器 TLS 证书的验证。仅在测试场景或使用自签名证书时才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库的目标时间。
目标时间定义了命令读取版本化存储上的仓库所使用的时间点。通过此选项,命令可以读取某一历史时刻的仓库状态,从而恢复因用户误操作或恶意软件导致被删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认不启用。除了启用版本控制外,还可考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除。
使用 repo-target-time 选项时,还必须同时指定 repo 选项。并非所有仓库类型都支持版本控制,通常针对单个仓库进行恢复更为合理。
注意,与存储时间戳的比较为 <=(小于等于)所提供的时间戳,且提供的时间戳中的毫秒部分将被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
将 NFS 挂载用作 posix 仓库时,pgBackRest 遵循的规则与 PostgreSQL 文档中描述的相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
10 - 仓库列表命令(repo-ls)
pgBackRest repo-ls 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: repo-ls
repo-ls 类似于 Unix 的 ls 命令,但支持所有 pgBackRest 仓库类型。该命令接受一个路径参数,可以是绝对路径,也可以是相对于 --repo-path 所定义的仓库根路径的相对路径。此命令主要用于管理、排查和测试场景,并非常规部署的必要命令。
默认以文本格式输出,每行一个文件名。指定 --output=json 可切换为 JSON 格式。
若配置了多个仓库,默认操作优先级最高的仓库(如 repo1),如需指定特定仓库,请使用 --repo 选项。
命令选项
过滤输出选项(--filter)
使用正则表达式过滤输出。
过滤器在输出文件名或路径名之前生效。
example: --filter="(F|D|I)$"
输出格式选项(--output)
输出格式。
支持以下输出类型:
text — 简单列表,每行一个文件、链接或路径名。json — 以 JSON 格式输出文件、链接或路径的详细信息。
JSON 格式包含以下字段:
name — 文件、链接或路径名(递归时包含部分路径)。type — file(文件)、path(路径)或 link(链接)。size — 字节大小(仅限文件)。time — 最后修改时间(仅限文件)。destination — 链接目标(仅限链接)。
default: text
example: --output=json
递归子路径选项(--recurse)
在输出中包含所有子路径。
输出将递归包含所有子路径及其下的文件。
default: n
example: --recurse
排序输出选项(--sort)
按升序、降序或不排序输出。
支持以下排序类型:
asc — 升序。desc — 降序。none — 不排序。
default: asc
example: --sort=desc
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
该缓冲区用于复制、压缩、加密等操作。实际使用的缓冲区数量取决于具体选项,每种操作可能额外占用内存,例如 gz 压缩最多可额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上执行时,此选项设置网络传输的压缩级别,以减少网络流量。若 compress-type 不等于 none,则忽略此设置,改用 compress-level,避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
通过此选项可指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加配置文件的目录路径。
该目录下扩展名为 .conf 的文件将与 pgBackRest 主配置文件合并,共同构成最终的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置覆盖 --config 和 --config-include-path 的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时。
连接、读写操作的超时时间(秒)。
注意,整个读写操作不必在此超时内完成,但必须持续有进展,哪怕每次只传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设为 0000,确保仓库中的文件以合理的权限创建。默认目录模式为 0750,文件模式为 0640;锁目录和日志目录的目录模式为 0770,文件模式为 0660。
如需沿用执行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
指定内核调度器为该进程分配的 niceness 值。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限自行提升优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时。
设置本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期挂起。
注意: protocol-timeout 的值必须大于 db-timeout。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在套接字连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,定义了集群的位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则会为每个需要备份的集群各配置一个 stanza。
stanza 名称很容易直接使用主库集群名,但更好的做法是用名称描述集群中所包含的数据库内容。由于该名称同时用于主库和所有副本,选择能体现集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
Keep-alive 计数。
指定在判定连接断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在系统支持 TCP_KEEPCNT 套接字选项时有效。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
Keep-alive 空闲时间。
指定在无网络活动达到多少秒后,操作系统开始发送 TCP keep-alive 消息。
此选项仅在系统支持 TCP_KEEPIDLE 套接字选项时有效。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
Keep-alive 间隔时间。
指定未收到确认的 TCP keep-alive 消息重新发送前的等待秒数。
此选项仅在系统支持 TCP_KEEPINTVL 套接字选项时有效。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。示例中的配置是合理的选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些级别的日志输出到 stderr 而非 stdout(由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件存储路径。
pgBackRest 将日志文件保存到此路径。注意,若 log-level-file=off,则无需配置此项。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为该进程创建的所有子进程启用文件日志记录,使用 log-level-file 指定的日志级别。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中输出时间戳。某些特殊场景(如生成文档)下会禁用此选项。
default: y
example: --no-log-timestamp
仓库选项
指定仓库选项(--repo)
指定仓库。
指定命令操作的目标仓库。
例如,可通过此选项指定从特定仓库执行恢复,而非由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
pgBackRest 仓库可通过设置 repo-path=/ 存储在容器根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 Azure 生成的内容也可存放在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared — 共享密钥sas — 共享访问签名auto — 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host — 连接到 account.endpoint 主机。path — 连接到 endpoint 主机,并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密算法。
支持以下加密类型:
none — 不加密aes-256-cbc — 256 位密钥的 AES 加密标准
注意,即使仓库存储类型(如 S3)本身支持加密,pgBackRest 的加密始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 GCS 生成的内容也可存放在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点地址,可替换为本地 GCS 服务器或其他备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto — 使用实例服务账号授权。service — 使用本地存储的服务账号密钥。token — 用于本地测试,如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时会重新加载身份凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档存储在本地挂载的文件系统中,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用指定的 CA 文件替代系统默认值。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用指定的 CA 路径替代系统默认值。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
向仓库主机发送此证书以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当仓库主机上的 pgBackRest 命令路径与本地不同时才需要配置。若未定义,将沿用本地命令路径。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的路径。仅当仓库主机的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
repo-host 已设置时的仓库主机端口。
通过此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 所指定命令的配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh — 安全外壳协议。tls — pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
repo-host 已设置时的仓库主机用户。
定义在仓库主机上执行操作所使用的用户。建议使用专用用户(如 pgbackrest)而非 postgres。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
预先估算所需空间可能比较困难。建议先执行几次备份,分别记录全量、增量、差异备份的大小,并统计每天的 WAL 生成量,从而大致估算所需空间。随着数据库的演进,空间需求也会持续变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 AWS 生成的内容也可存放在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与存储桶所在区域匹配。
自定义或测试配置时,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项可能有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared — 共享密钥auto — 自动获取临时凭据web-id — 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS KMS 密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host — 连接到 bucket.endpoint 主机。path — 连接到 endpoint 主机,并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存放仓库的 SFTP 主机地址。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
指纹的生成方式须与 repo-sftp-host-key-hash-type 保持一致。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict — pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接密钥已变更或不在已知主机文件中的主机。此选项要求手动添加所有新主机。accept-new — pgBackRest 自动将新主机密钥添加到已知主机文件,但不允许连接密钥已变更的主机。fingerprint — 根据 repo-sftp-host-fingerprint 指定的指纹验证主机密钥。none — 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 握手时计算远程主机密钥摘要所用的哈希算法。较新版本的 libssh2 在 md5 和 sha1 之外还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存储仓库的主机上对应的用户名。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证时用于匹配 SFTP 主机的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若指定了一个或多个文件路径,pgBackRest 将仅在这些文件中查找匹配项。路径必须为完整路径或以波浪号(~)开头的路径。此选项可多次传入以指定多个文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件路径。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件路径。若编译时链接的是 OpenSSL,则此项可选;若链接的是其他库,则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接对象存储(如 S3、Azure)时,使用指定的 CA 文件替代系统默认值。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接对象存储(如 S3、Azure)时,使用指定的 CA 路径替代系统默认值。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到非标准存储端点(如 S3、Azure)的主机地址,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接对象存储端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库使用对象存储(如 S3)时,为对象添加的标签。此选项可多次指定以添加多个标签。
pgBackRest 不提供修改已有标签的功能,因此请在执行 stanza-create 之前确认标签设置正确,以保证整个仓库的标签一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
S3 等对象存储在文件过大无法整体载入内存时,支持分块上传。即使文件能放入内存,限制单次上传的内存用量也更为高效。
较大的块大小通常有助于提升性能,因为它能减少上传请求次数,在单个请求中传输更多数据。但代价是内存占用更高,且块缓冲区按进程分配,process-max 越大,总内存消耗越多。
不同存储类型和平台对块大小的有效范围要求不同。例如,AWS S3 的最小块大小为 5MiB。各存储类型对此的术语也有差异:AWS S3 称为 “part size”,GCS 称为 “chunk size”,Azure 称为 “block size”。
若文件超过 1GiB(PostgreSQL 默认的单文件上限),块大小将自动逐步增大直至允许的最大值,以确保文件能够上传完成。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
控制是否验证对象存储(如 S3、Azure)服务器的 TLS 证书。仅在测试或使用自签名证书等特殊场景下才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库目标时间。
指定读取版本化存储上仓库时所参照的时间点,从而访问某一历史时刻的仓库状态,用于恢复因误操作或恶意软件导致删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认未启用。除启用版本控制外,还可以考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除。
使用 repo-target-time 时,必须同时指定 repo 选项。并非所有仓库类型都支持版本控制,通常针对单个仓库进行恢复最为合理。
注意,时间戳比较使用 <= 关系,且提供的时间戳中的毫秒部分会被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure — Azure Blob 存储服务cifs — 类似 posix,但禁用链接和目录 fsyncgcs — Google Cloud 存储posix — 符合 POSIX 规范的文件系统s3 — AWS 简单存储服务sftp — 安全文件传输协议
将 NFS 挂载用作 posix 类型仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中的描述相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
11 - 恢复命令(restore)
pgBackRest restore 命令的选项与行为参考。
Source: pgBackRest Command Docs: restore
restore 命令默认从第一个存有备份的仓库中自动选取最新备份(参见 快速开始 - 恢复备份)。仓库的检查顺序由 pgbackrest.conf 决定(例如先检查 repo1,再检查 repo2)。若要从特定仓库恢复,可使用 --repo 选项(例如 --repo=1)。若需恢复非最新的备份,可传入 --set 选项。
使用 --type=time 或 --type=lsn 进行 PITR(时间点恢复)时,必须通过 --target 选项指定目标时间或目标 LSN。若未通过 --set 选项指定备份集,系统将依次检查各仓库,查找包含所请求时间或 LSN 的备份。若未找到匹配备份,--type=time 将使用第一个存有备份的仓库中的最新备份,而 --type=lsn 则不会选择任何备份。对于其他类型的 PITR(如 xid),若目标早于最新备份,则必须通过 --set 选项明确指定备份集。详情及示例请参见 时间点恢复。
按照 PostgreSQL 的建议,复制槽不包含在恢复中。更多信息请参阅 PostgreSQL 文档中的 Backing Up The Data Directory。
命令选项
归档模式选项(--archive-mode)
恢复后集群的归档模式设置。
此选项用于在恢复后的集群上保留或禁用归档功能。当集群必须被提升(promote)以执行某些操作,但并非打算成为新主库时,此选项非常有用——在这种情况下,将 WAL 从该集群推送到仓库并不合适。
支持以下模式:
off - 通过设置 archive_mode=off 禁用归档。preserve - 保留当前的 archive_mode 设置。
注意: 此选项不适用于 PostgreSQL < 12。
default: preserve
example: --archive-mode=off
排除数据库选项(--db-exclude)
恢复时排除指定的数据库。
被排除的数据库将以稀疏清零文件的形式恢复,以节省空间,但仍允许 PostgreSQL 完成恢复过程。恢复完成后,这些数据库将无法访问,但可以用 drop database 命令将其删除。可多次传入 --db-exclude 选项以排除多个数据库。
与 --db-include 选项组合使用时,--db-exclude 仅适用于标准系统数据库(template0、template1 和 postgres)。
example: --db-exclude=db_main
包含数据库选项(--db-include)
仅恢复指定的数据库。
此功能允许只恢复选定的数据库。未明确包含的数据库将以稀疏清零文件的形式恢复,以节省空间,但仍允许 PostgreSQL 完成恢复过程。恢复完成后,未包含的数据库将无法访问,但可以用 drop database 命令将其删除。
注意: 内置数据库(template0、template1 和 postgres)始终会被恢复,除非被明确排除。
可多次传入 --db-include 选项以包含多个数据库。
更多信息及注意事项请参见 选择性数据库恢复。
example: --db-include=db_main
强制选项(--force)
强制执行恢复。
单独使用时,此选项将强制完全覆盖 PostgreSQL 数据目录及表空间路径。与 --delta 组合使用时,将基于时间戳/大小执行差量比对,而非使用校验和。
default: n
example: --force
恢复全部链接选项(--link-all)
恢复所有符号链接。
默认情况下,链接的目录和文件将作为普通目录和文件恢复到 $PGDATA 中。这是因为在与原始备份环境不同的系统上,将符号链接恢复到其原始目标可能并不安全。启用此选项后,所有符号链接将按原始备份系统的方式完整恢复。
default: n
example: --link-all
链接映射选项(--link-map)
修改符号链接的目标路径。
恢复时允许修改符号链接所指向的文件或路径。当恢复目标系统的存储布局与原始备份系统不同时,此选项非常有用。
example: --link-map=pg_xlog=/data/xlog
恢复选项(--recovery-option)
在 postgresql.auto.conf 或 recovery.conf 中设置选项。
各选项的详细说明请参阅 PostgreSQL 的 服务器配置 文档(请确保选择对应的 PostgreSQL 版本)。此选项可多次使用。
对于 PostgreSQL >= 12,选项将写入 postgresql.auto.conf;对于旧版本,选项将写入 recovery.conf。
注意: restore_command 选项由 pgBackRest 自动生成,但可通过此选项覆盖。请谨慎手动指定 restore_command,因为 pgBackRest 本身就是为处理该事项而设计的。目标恢复选项(recovery_target_name、recovery_target_time 等)由 pgBackRest 自动生成,不应通过此选项手动设置。
由于 pgBackRest 写入 postgresql.auto.conf 或 recovery.conf 文件后不会自动启动 PostgreSQL,在手动重启之前始终可以编辑或检查这些文件。
example: --recovery-option=primary_conninfo=db.mydomain.com
备份集选项(--set)
要恢复的备份集。
指定要恢复的备份集。latest 表示恢复最新备份,否则请提供具体的备份名称。
default: latest
example: --set=20150131-153358F_20150131-153401I
表空间映射选项(--tablespace-map)
将表空间恢复到指定目录。
恢复时将表空间移动到新位置。当备库或已升级系统上的表空间路径与原始系统不同时,此选项非常有用。
表空间位置不存储在 pg_tablespace 中,因此可以随意移动。但不建议将表空间移动到 data_directory,这可能会引发问题。关于移动表空间的更多信息,可参考 http://www.databasesoup.com/2013/11/moving-tablespaces.html。
example: --tablespace-map=ts_01=/db/ts_01
映射全部表空间选项(--tablespace-map-all)
将所有表空间恢复到指定目录。
默认情况下,表空间将恢复到其原始位置。可通过 --tablespace-map 选项为每个表空间单独修改,但有时将所有表空间一次性重新映射到同一个新目录更为方便,在存储布局与原始备份系统不同的开发或测试环境中尤为如此。
指定的路径将作为父路径,备份中所有表空间的子目录都将在其下创建。
注意:
备份启动后创建的表空间不会被映射。如有表空间映射需求,请在创建表空间后重新进行一次备份。
example: --tablespace-map-all=/data/tablespace
目标选项(--target)
恢复目标。
当 --type 为 lsn、name、xid 或 time 时,用于定义恢复目标。若目标早于最新备份且 --type 不是 time 或 lsn,则需使用 --set 选项指定备份集。
example: --target=2015-01-30 14:15:11 EST
目标动作选项(--target-action)
到达恢复目标时的动作。
当 hot_standby=on(PostgreSQL 10 起的默认值)时,此选项统一控制集群在到达目标或归档中没有更多 WAL 时的行为。
当 PostgreSQL >= 12 且 hot_standby=off 时,pause 的行为等同于 shutdown。当 PostgreSQL < 12 且 hot_standby=off 时,pause 的行为等同于 promote。
支持以下动作:
pause - 到达恢复目标时暂停。promote - 到达恢复目标时提升并切换时间线。shutdown - 到达恢复目标时关闭服务器(PostgreSQL >= 9.5)。
default: pause
example: --target-action=promote
目标排他选项(--target-exclusive)
在到达恢复目标之前停止。
定义是否以排他方式恢复到目标(默认为包含目标),仅在 --type 为 lsn、time 或 xid 时有效。例如,当 --type=xid 且 --target=1007 时,指定 --target-exclusive 将排除事务 1007 的内容。更多信息请参阅 PostgreSQL 文档中的 recovery_target_inclusive 选项。
default: n
example: --no-target-exclusive
目标时间线选项(--target-timeline)
沿指定时间线进行恢复。
更多信息请参阅 PostgreSQL 文档中的 recovery_target_timeline。
example: --target-timeline=3
类型选项(--type)
恢复类型。
支持以下恢复类型:
default - 恢复到归档流的末尾。immediate - 仅恢复到数据库达到一致性状态为止。lsn - 恢复到 --target 中指定的 LSN(日志序列号),仅支持 PostgreSQL >= 10。name - 恢复到 --target 中指定的恢复点名称。xid - 恢复到 --target 中指定的事务 ID。time - 恢复到 --target 中指定的时间。preserve - 保留现有的 postgresql.auto.conf 或 recovery.conf 文件。standby - 向 postgresql.auto.conf 或 recovery.conf 文件中添加 standby_mode=on,使集群以备库模式启动。none - 不写入 postgresql.auto.conf 或 recovery.conf 文件,PostgreSQL 将尝试使用 pg_xlog/pg_wal 中已有的 WAL 段达到一致性。请预先提供所需的 WAL 段,或通过 archive-copy 设置将其包含在备份中。
警告:
应避免使用 type=none,因为恢复结束时时间线不会递增。这可能导致 PostgreSQL 尝试归档重复的 WAL 段(会被拒绝),进而耗尽磁盘空间并引发 PostgreSQL panic。此外,pg_rewind 等工具可能无法正常工作,甚至可能造成数据损坏。
请注意,离线备份的默认恢复 type 为 none,因为当 wal_level=minimal 时无法进行时间点恢复。若明确设置了 type,则以该设置为准,因为只要 wal_level > minimal,即可从离线备份执行时间点恢复。
default: default
example: --type=xid
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于选项配置,每个操作可能占用额外内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
pgBackRest 命令选项(--cmd)
pgBackRest 命令。
pgBackRest 在某些情况下需要生成命令字符串,例如 restore 命令生成 restore_command 设置时。此时将使用运行当前 pgBackRest 进程的命令,除非通过 --cmd 选项另行指定。
注意:
对 pgBackRest 命令进行封装可能导致不可预期的行为,不建议这样做。
default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
当需要使用其他 SSH 客户端,或 ssh 命令不在 $PATH 中时,使用此选项指定特定的 SSH 客户端命令。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,设置网络传输的压缩级别。压缩用于减少网络流量。当 compress-type 不等于 none 时,compress-level-network 设置将被忽略,改用 compress-level,以避免文件被压缩两次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项指定与默认路径不同的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,形成完整的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 选项的默认基础路径,前提是这两个选项未在命令行中被显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
Delta 选项(--delta)
使用校验和进行恢复或备份。
恢复时,默认要求 PostgreSQL 数据目录和表空间目录已存在且为空。启用此选项后,将使用校验和执行差量恢复。
备份时,启用此选项将使用校验和而非时间戳来判断是否需要复制文件。
default: n
example: --delta
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读/写操作的超时时间(秒)。
请注意,整个读/写操作不必在此超时时间内完成,但必须有一定进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件存储路径。
pgBackRest 将锁文件存储在此路径下,以防止并发运行相互冲突的操作。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,以合理的方式创建仓库中的文件权限。默认目录模式为 0750,默认文件模式为 0640。锁文件和日志目录的目录及文件模式分别为 0770 和 0660。
若要使用当前执行用户的 umask,请在配置文件中设置 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器分配给该进程的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。在大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
最大进程数选项(--process-max)
压缩/传输使用的最大进程数。
每个进程将执行压缩和传输以加快命令运行速度,但不要将 process-max 设置过高,以免影响数据库性能。
default: 1
allowed: [1, 999]
example: --process-max=4
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远程进程在协议层等待接收新消息的超时时间(秒)。此设置可防止进程无限期等待消息。
注意: --protocol-timeout 选项的值必须大于 --db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活(keep-alive)。
在套接字连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza(stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称)是对一个 PostgreSQL 数据库集群的配置,定义了集群所在位置、备份方式、归档选项等。大多数数据库服务器只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则为每个需要备份的集群各配置一个 stanza。
stanza 命名时容易直接使用主集群名称,但更好的做法是使用描述该集群中数据库用途的名称。由于 stanza 名称同时用于主库和所有副本,选择一个描述集群实际功能的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
保活计数。
指定在连接被判定为失效之前,可以丢失的 TCP 保活消息数量。
此选项在支持 TCP_KEEPCNT 套接字选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
指定在无网络活动持续多少秒后,操作系统应发送 TCP 保活消息。
此选项在支持 TCP_KEEPIDLE 套接字选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活间隔时间。
指定未收到确认的 TCP 保活消息在多少秒后应重新发送。
此选项在支持 TCP_KEEPINTVL 套接字选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整接受的加密套件。示例中的配置是合理的选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整接受的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试信息)、调试信息、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试信息)、调试信息、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
标准错误输出日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 --log-level-console 指定)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录跟踪信息(非常详细的调试信息)、调试信息、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件存储路径。
pgBackRest 将日志文件存储在此路径下。请注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的所有子进程启用文件日志记录,日志级别使用 --log-level-file 指定的值。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中启用时间戳。此选项在生成文档等特殊场景下会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 分支版本或开发版本,因为这些版本中上述值可能与正式发布版本不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项时需谨慎,因为 pg_control 和 WAL 头部仍将按指定版本的预期格式读取,即来自官方开源 PostgreSQL 版本的格式。若分支版本或开发版本更改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。一般而言,只有当分支在标准 PostgreSQL 成员之后添加所有自定义结构成员时,此选项才能按预期工作。
example: --pg-version-force=15
仓库选项
指定仓库选项(--repo)
设置仓库。
指定命令操作的目标仓库。
例如,可使用此选项从特定仓库执行恢复,而非让 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定一个前缀(如 /repo),以便日志和其他 Azure 生成的内容也可以存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
用于加密仓库的加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
请注意,即使仓库类型(如 S3)本身支持加密,加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),以便日志和其他 GCS 生成的内容也可以存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点。可更新为使用本地 GCS 服务器或备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号自动授权。service - 使用本地存储的密钥文件中的服务账号。token - 用于本地测试,如 fakegcs。
当 repo-gcs-key-type=service 时,凭据将在身份验证令牌续期时重新加载。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
备份和归档到本地挂载的文件系统时,无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机 pgBackRest 命令。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要设置。若未定义,仓库主机命令将与本地命令相同。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件与本地配置文件位于不同路径时才需要此设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地配置包含路径不同时才需要此设置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地配置路径不同时才需要此设置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
与客户端证书配合使用,证明证书由所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 --repo-host 时的仓库主机端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,--repo-host-port 没有默认值,端口将使用 --cmd-ssh 指定命令所配置的端口。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 --repo-host 时的仓库主机用户。
定义在仓库主机上执行操作所使用的用户。建议不要使用 postgres 用户,而改用 pgbackrest 等专用用户。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库具有读权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
提前估算所需空间可能比较困难。建议先进行几次备份,记录不同类型备份(全量/增量/差异)的大小,并测量每天产生的 WAL 量。这将给出大致的空间需求,但实际需求会随数据库的演变而变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),以便日志和其他 AWS 生成的内容也可以存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,可使用 --repo-storage-ca-file、--repo-storage-ca-path、--repo-storage-host、--repo-storage-port 和 --repo-storage-verify-tls 选项。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭据web-id - 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务器端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶时所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
包含仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 --repo-sftp-host-key-hash-type 匹配。通过以下命令生成指纹:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录中。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,且拒绝连接主机密钥已更改或不在已知主机文件中的主机。此选项强制用户手动添加所有新主机。accept-new - pgBackRest 将自动将新主机密钥添加到用户的已知主机文件,但不允许连接主机密钥已更改的主机。fingerprint - pgBackRest 将根据 --repo-sftp-host-fingerprint 选项指定的指纹来验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
用于存储仓库的主机上的用户名。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
身份验证期间用于搜索 SFTP 主机匹配项的已知主机文件。若未指定,pgBackRest 将默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些路径中搜索匹配项。文件路径必须是完整路径或以波浪号开头的路径。可多次传入 --repo-sftp-known-host 选项以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 --repo-sftp-host-fingerprint。另请参阅 --repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于身份验证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于身份验证的 SFTP 公钥文件。针对 OpenSSL 编译时为可选,针对其他库编译时为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
为存储(如 S3、Azure)证书使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file, repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
为存储(如 S3、Azure)证书使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path, repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试目的。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host, repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接到存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port, repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定添加到对象上的标签。可重复使用此选项添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前确保标签已正确设置,以保证整个仓库的标签统一。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
对象存储(如 S3)允许在文件过大无法存入内存时分块上传。即使文件可以存入内存,限制单次上传占用的内存量也更为高效。
较大的块大小通常可以带来更好的性能,因为它减少了上传请求数量,允许在单个请求中上传更多数据而非分块处理。其缺点是内存占用更高——由于块缓冲区必须按进程分配,--process-max 值越大,整体内存消耗越多。
请注意,有效的块大小因存储类型和平台而异。例如,AWS S3 的最小块大小为 5MiB。各存储类型对块大小的术语也不同,因此搜索最小/最大值时,AWS S3 请使用"part size",GCS 请使用"chunk size",Azure 请使用"block size"。
如果文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),块大小将逐步增加到允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用存储(如 S3、Azure)服务器的 TLS 证书验证。仅在测试场景或使用自签名证书时才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库目标时间。
定义命令读取版本化存储上的仓库所使用的时间点。这允许命令读取某个历史时间点的仓库状态,以便恢复因用户误操作或恶意软件而被删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认不启用。除启用版本控制外,还可以考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除。
指定 --repo-target-time 时,还必须提供 --repo 选项。并非所有仓库类型都支持版本控制,通常针对单个仓库进行恢复更为合理。
请注意,与存储时间戳的比较使用 <= 关系,且提供的时间戳中的毫秒部分将被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud Storageposix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
使用 NFS 挂载作为 posix 仓库时,适用规则与 PostgreSQL 文档中描述的相同:创建数据库集群 - 文件系统。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
此路径应与 PostgreSQL 报告的 data_directory 一致。尽管可以从多处读取此值,但在恢复或离线备份场景中这些来源可能不可用,因此建议在配置文件中明确设置。
--pg-path 选项在每次在线备份时都会与 PostgreSQL 报告的值进行验证,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
12 - 服务器命令(server)
pgBackRest server 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: server
pgBackRest 服务器允许在不使用 SSH 协议的情况下访问远程主机。
命令选项
TLS 服务器地址选项(--tls-server-address)
TLS 服务器地址。
服务器监听客户端请求的 IP 地址。
default: localhost
example: --tls-server-address=*
TLS 服务器授权客户端选项(--tls-server-auth)
TLS 服务器授权客户端。
服务器通过验证客户端证书,并将其证书 CN(Common Name,通用名称)与 tls-server-auth 选项所配置的列表进行比对,来完成对客户端的授权。
可通过向 tls-server-auth 选项传入逗号分隔的列表,授权某个客户端 CN 访问多个 stanza(stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称);也可通过指定 tls-server-auth=client-cn=* 授权其访问所有 stanza。客户端 CN 不支持通配符。
example: --tls-server-auth=client-cn=stanza1,stanza2
TLS 服务器证书颁发机构选项(--tls-server-ca-file)
TLS 服务器证书颁发机构。
用于验证客户端证书是否由受信任的证书颁发机构签发。
example: --tls-server-ca-file=/path/to/server.ca
TLS 服务器证书选项(--tls-server-cert-file)
TLS 服务器证书文件。
发送给客户端以证明服务器身份的证书。
example: --tls-server-cert-file=/path/to/server.crt
TLS 服务器密钥选项(--tls-server-key-file)
TLS 服务器密钥文件。
用于证明服务器证书归属的私钥。
example: --tls-server-key-file=/path/to/server.key
TLS 服务器端口选项(--tls-server-port)
TLS 服务器端口。
服务器监听客户端请求的端口。
default: 8432
allowed: [1, 65535]
example: --tls-server-port=8000
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于各选项配置,每个操作可能还会额外占用内存,例如 gz 压缩可能额外使用 256KiB 内存。
允许的值为:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
配置文件选项(--config)
pgBackRest 配置文件。
指定与默认值不同的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,最终形成一个完整的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此选项覆盖 --config 和 --config-include-path 的默认基础路径,但仅在这两个选项未在命令行中明确指定时生效。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读写操作的超时时间,单位为秒。
注意:整个读写操作不必在此超时时间内完成,但必须有所进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。普通进程在大多数情况下无权提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
本地或远程进程在协议层等待新消息的超时时间,单位为秒。此设置可防止进程无限期阻塞等待消息。
注意: protocol-timeout 选项的值必须大于 db-timeout 选项的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活。
在 socket 连接上启用保活消息。
default: y
example: --no-sck-keep-alive
TCP 保活计数选项(--tcp-keep-alive-count)
保活计数。
连接被判定为断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
无网络活动持续多少秒后,操作系统开始发送 TCP 保活消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活间隔时间。
未被确认的 TCP 保活消息重新发送前的等待秒数。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,连接到对象存储(如 S3)时默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例中的配置是合理的选择,除非有特殊安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,连接到对象存储(如 S3)时默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录追踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件写入此路径。若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳。在某些特殊情况下(如生成文档时),此选项会被禁用。
default: y
example: --no-log-timestamp
13 - 服务器心跳命令(server-ping)
pgBackRest server-ping 命令选项与行为参考。
原始页面: pgBackRest Command Docs: server-ping
向 pgBackRest TLS 服务器发送 ping,确认其正在接受连接。此命令仅作为存活性检查,不进行身份验证。
若命令行中未指定主机,则使用 tls-server-host 选项的值。
命令选项
TLS 服务器地址选项(--tls-server-address)
TLS 服务器地址。
服务器监听客户端请求的 IP 地址。
default: localhost
example: --tls-server-address=*
TLS 服务器端口选项(--tls-server-port)
TLS 服务器端口。
服务器监听客户端请求的端口号。
default: 8432
allowed: [1, 65535]
example: --tls-server-port=8000
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
用于复制、压缩、加密等操作的缓冲区大小。实际使用的缓冲区数量取决于具体选项,每个操作可能会额外消耗内存,例如 gz 压缩可能额外占用 256KiB 内存。
允许的值为:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项可以指定非默认的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与主配置文件合并,形成统一的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 选项的默认基础路径,但若这两个选项已在命令行中显式指定,则此设置不生效。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读写操作的超时时间(单位:秒)。
注意,整个读写操作无需在超时时间内全部完成,但必须有一定进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为进程分配的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
保活选项(--sck-keep-alive)
启用 keep-alive。
在 socket 连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
TCP 保活计数选项(--tcp-keep-alive-count)
keep-alive 探测次数。
指定在判定连接已断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在支持 TCP_KEEPCNT socket 选项的系统上可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
keep-alive 空闲时间。
指定在多长时间无网络活动后(单位:秒),操作系统开始发送 TCP keep-alive 消息。
此选项仅在支持 TCP_KEEPIDLE socket 选项的系统上可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
keep-alive 重传间隔时间。
指定未收到确认的 TCP keep-alive 消息在多长时间后重传(单位:秒)。
此选项仅在支持 TCP_KEEPINTVL socket 选项的系统上可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。除非有特定的安全要求,否则示例值是一个合理的选择。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 的日志输出级别。
指定哪些日志级别将输出到 stderr 而非 stdout(后者由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件写入此路径。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳输出。某些特殊场景(如生成文档时)会禁用此选项。
default: y
example: --no-log-timestamp
14 - Stanza 创建命令(stanza-create)
pgBackRest stanza-create 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: stanza-create
stanza-create 命令须在 pgbackrest.conf 中完成 stanza 配置后再执行(stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称)。若配置了多个仓库,stanza-create 会在每个仓库上分别建立 stanza。已创建的 stanza 会被跳过,因此即便新增了仓库,也可以随时安全地重复执行 stanza-create。
更多信息和示例,请参见 创建 Stanza。
命令选项
在线选项(--online)
在在线集群上创建 stanza。
指定 --no-online 可阻止 pgBackRest 在创建 stanza 时连接 PostgreSQL。
default: y
example: --no-online
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
该缓冲区用于复制、压缩、加密等操作。实际使用的缓冲区数量取决于所启用的选项,每个操作还可能额外占用内存,例如 gz 压缩可能额外使用约 256KiB 内存。
允许值为:16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
需要使用特定 SSH 客户端,或 ssh 命令不在 $PATH 中时,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,通过此选项设置网络传输的压缩级别,以降低网络流量。若 compress-type 不等于 none,则忽略 compress-level-network,转而使用 compress-level,避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
指定与默认值不同的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下以 .conf 为扩展名的配置文件将与主配置文件合并,形成完整配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
用于覆盖 --config 和 --config-include-path 的默认基础路径;若这两个选项已在命令行中显式指定,则此设置不生效。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
数据库超时选项(--db-timeout)
数据库查询超时时间。
设置对数据库执行查询的超时时长(单位:秒)。这包括备份启动和停止函数——两者各自可能需要较长时间。因此,除非明确知道这些函数会很快返回(例如已设置 start-fast=y,且备份期间数据库集群不会产生大量 WAL 段),否则应将此超时值设置得较高。
注意: db-timeout 的值必须小于 protocol-timeout。
default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读/写操作的超时时长(单位:秒)。
注意,整个读/写操作无需在此超时时间内全部完成,但必须持续有进展,哪怕每次仅传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 将锁文件存放于此路径,用于防止相互冲突的操作并发执行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中的文件和目录拥有合理的权限。默认目录权限为 0750,默认文件权限为 0640;锁文件目录和日志目录的目录权限为 0770,文件权限为 0660。
若要改用执行用户自身的 umask,可在配置文件中指定 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为该进程分配的优先级(即 niceness 值)。正值降低优先级,负值提升优先级。普通进程通常没有权限提升自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待新消息的超时时长(单位:秒),防止进程无限期等待。
注意: protocol-timeout 的值必须大于 db-timeout。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在套接字连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是对一个 PostgreSQL 数据库集群的备份配置,定义了集群的位置、备份方式及归档选项等内容。大多数数据库服务器只有一个 PostgreSQL 集群,因此只需配置一个 stanza;备份服务器则需要为每个待备份的数据库集群各配置一个 stanza。
命名 stanza 时,用主集群名称命名看似直观,但更好的做法是用名称描述集群中存储的数据库。由于 stanza 名称同时用于主库和所有副本,选用描述集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
TCP 保活计数。
指定在连接被判定为断开之前,允许丢失的 TCP 保活消息数量。
此选项仅在系统支持 TCP_KEEPCNT 套接字选项时可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
TCP 保活空闲时间。
指定网络空闲多少秒后,操作系统应开始发送 TCP 保活消息。
此选项仅在系统支持 TCP_KEEPIDLE 套接字选项时可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
TCP 保活间隔时间。
指定在未收到确认的情况下,TCP 保活消息的重传间隔(单位:秒)。
此选项仅在系统支持 TCP_KEEPINTVL 套接字选项时可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,与对象存储(如 S3)的连接默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例值是合理的选择,除非有特殊安全需求。未设置时(默认行为),使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,与对象存储(如 S3)的连接默认也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。未设置时(默认行为),使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、信息、警告和错误debug - 记录调试、详细信息、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、信息、警告和错误debug - 记录调试、详细信息、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 的日志输出级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、信息、警告和错误debug - 记录调试、详细信息、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存放于此路径。注意,若 log-level-file=off,则无需配置此选项。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的子进程启用文件日志,使用 log-level-file 指定的日志级别。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中启用时间戳。该选项在生成文档等特殊场景下会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 分支版本或开发版本——这些版本中的相关值可能与发行版本不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项须谨慎,因为 pg_control 和 WAL 头部仍将按照所指定版本对应的官方 PostgreSQL 格式读取。若分支版本或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常,只有当分支在标准 PostgreSQL 结构成员之后追加自定义成员时,此选项才能正常工作。
example: --pg-version-force=15
仓库选项
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志等 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中前置账户名。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥的高级加密标准
注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密操作始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志等 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
连接存储服务的端点,可修改为本地 GCS 服务器地址或其他备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号自动授权。service - 使用本地存储的服务账号密钥文件。token - 用于本地测试,例如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时将重新加载凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时使用的仓库主机。
若备份和归档存储在本地挂载的文件系统上,则无需配置此选项。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机,用于验证客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,仓库主机命令与本地命令相同。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
仓库主机端口。
设置 repo-host 时,通过此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口以 cmd-ssh 所指定命令的配置为准。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
仓库主机用户。
设置 repo-host 时,定义在仓库主机上执行操作所使用的用户。建议使用专用用户(如 pgbackrest)而非 postgres。若 PostgreSQL 也运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库具有读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存放备份文件和归档 WAL 段的位置。
提前估算所需空间可能较为困难。建议先执行几次备份,记录不同备份类型(全量/增量/差异)的大小,并测量每日产生的 WAL 量,以此大致了解所需空间。随着数据库的增长,需求也会随时间变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录下,但通常建议指定一个前缀路径(如 /repo),以便日志等 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域对应。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 选项可能会有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭据web-id - 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶时所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中前置存储桶名。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存储仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
主机指纹的生成方式应与 repo-sftp-host-key-hash-type 一致。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥文件通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接主机密钥已变更或在已知主机文件中不存在的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 将自动将新主机密钥添加到已知主机文件,但不允许连接主机密钥已变更的主机。fingerprint - pgBackRest 将对照 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 启动时用于计算远程系统主机密钥摘要的哈希类型。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存储仓库的主机上所使用的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
用于在认证过程中查找 SFTP 主机匹配条目的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将在这些路径中查找匹配项;文件路径必须是绝对路径或以波浪号开头的路径。此选项可多次传入,以指定多个已知主机文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。编译时链接了 OpenSSL 时为可选项;链接了其他库时为必填项。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接存储服务(如 S3、Azure)时,使用非系统默认的 CA 文件验证证书。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接存储服务(如 S3、Azure)时,使用非系统默认的 CA 路径验证证书。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储服务(如 S3、Azure)端点以外的主机,通常用于测试场景。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储服务(如 S3、Azure)端点或指定主机时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
指定当仓库为对象存储(如 S3)时,附加到对象上的标签。可重复使用此选项以添加多个标签。
pgBackRest 没有提供修改这些标签的机制,因此请在运行 stanza-create 之前确认标签设置正确,以保证整个仓库的标签一致。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法全部载入内存时,对象存储(如 S3)支持以分块方式上传。即使文件可以全部载入内存,限制上传所用内存也更为高效。
较大的分块大小通常能提升性能,因为它可减少上传请求次数,并允许在单次请求中传输更多数据。代价是内存占用更高——分块缓冲区按进程分配,process-max 值越大,总体内存消耗也越多。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语不同:AWS S3 称之为"part size",GCS 称之为"chunk size",Azure 称之为"block size"。
若文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增加至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储服务(如 S3、Azure)服务器 TLS 证书的验证。禁用验证仅应用于测试环境或使用自签名证书的场景。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob Storage 服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud Storageposix - 符合 POSIX 规范的文件系统s3 - AWS Simple Storage Servicesftp - 安全文件传输协议
以 NFS 挂载作为 posix 类型仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中描述的规则相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 数据库选项(--pg-database)
PostgreSQL 数据库名称。
连接 PostgreSQL 时使用的数据库名称。默认值通常可正常使用,但某些安装环境中可能不包含此数据库。
注意,出于历史原因,PGDATABASE 环境变量的设置将被忽略。
default: postgres
example: --pg1-database=backupdb
PostgreSQL 主机选项(--pg-host)
远程操作时使用的 PostgreSQL 主机。
用于 PostgreSQL 主机与仓库主机分离的备份场景。
example: --pg1-host=db.domain.com
已弃用名称:db-host
PostgreSQL 主机证书颁发机构文件选项(--pg-host-ca-file)
PostgreSQL 主机证书颁发机构文件。
连接 PostgreSQL 主机时,使用非系统默认的 CA 文件。
example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
PostgreSQL 主机证书颁发机构路径选项(--pg-host-ca-path)
PostgreSQL 主机证书颁发机构路径。
连接 PostgreSQL 主机时,使用非系统默认的 CA 路径。
example: --pg1-host-ca-path=/etc/pki/tls/certs
PostgreSQL 主机证书文件选项(--pg-host-cert-file)
PostgreSQL 主机证书文件。
发送给 PostgreSQL 主机,用于验证客户端身份。
example: --pg1-host-cert-file=/path/to/client.crt
PostgreSQL 主机命令选项(--pg-host-cmd)
PostgreSQL 主机上的 pgBackRest 命令路径。
仅当本地主机与 PostgreSQL 主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,PostgreSQL 主机命令与本地命令相同。
default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:db-cmd
PostgreSQL 主机配置文件选项(--pg-host-config)
pgBackRest 数据库主机配置文件。
设置 PostgreSQL 主机上配置文件的位置。仅当 PostgreSQL 主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:db-config
PostgreSQL 主机配置包含路径选项(--pg-host-config-include-path)
pgBackRest 数据库主机配置包含路径。
设置 PostgreSQL 主机上配置包含路径的位置。仅当 PostgreSQL 主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d
PostgreSQL 主机配置路径选项(--pg-host-config-path)
pgBackRest 数据库主机配置路径。
设置 PostgreSQL 主机上配置路径的位置。仅当 PostgreSQL 主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest
PostgreSQL 主机密钥文件选项(--pg-host-key-file)
PostgreSQL 主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --pg1-host-key-file=/path/to/client.key
PostgreSQL 主机端口选项(--pg-host-port)
PostgreSQL 主机端口。
设置 pg-host 时,通过此选项为 PostgreSQL 主机协议指定非默认端口。
注意: 当 pg-host-type=ssh 时,pg-host-port 没有默认值,端口以 cmd-ssh 所指定命令的配置为准。
default (depending on pg-host-type):
tls - 8432
allowed: [0, 65535]
example: --pg1-host-port=25
已弃用名称:db-ssh-port
PostgreSQL 主机协议类型选项(--pg-host-type)
PostgreSQL 主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --pg1-host-type=tls
PostgreSQL 主机用户选项(--pg-host-user)
PostgreSQL 主机登录用户。
设置 pg-host 时,该用户同时拥有远程 pgBackRest 进程,并负责发起与 PostgreSQL 的连接。为确保其正常工作,该用户通常应为 PostgreSQL 数据库集群的所有者,默认为 postgres。
default: postgres
example: --pg1-host-user=db_owner
已弃用名称:db-user
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
此路径应与 PostgreSQL 报告的 data_directory 一致。尽管该值可从多处获取,但为了在恢复或离线备份场景下这些资源不可用时仍能正常工作,建议明确配置此项。
pg-path 在每次在线备份时都会与 PostgreSQL 报告的值进行核对,应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
PostgreSQL 端口选项(--pg-port)
PostgreSQL 端口。
PostgreSQL 运行的端口。大多数 PostgreSQL 集群使用默认端口,通常无需指定此选项。
default: 5432
allowed: [0, 65535]
example: --pg1-port=6543
已弃用名称:db-port
PostgreSQL Socket 路径选项(--pg-socket-path)
PostgreSQL Unix 套接字路径。
PostgreSQL 启动时指定的 Unix 套接字目录。pgBackRest 会自动查找操作系统标准位置,通常无需配置此选项,除非通过 postgresql.conf 中的 unix_socket_directories 显式修改了套接字目录。
example: --pg1-socket-path=/var/run/postgresql
已弃用名称:db-socket-path
PostgreSQL 数据库用户选项(--pg-user)
PostgreSQL 数据库用户。
连接 PostgreSQL 时使用的数据库用户名。若未指定,pgBackRest 将使用本地操作系统用户或 PGUSER 环境变量。
example: --pg1-user=backupuser
15 - Stanza 删除命令(stanza-delete)
pgBackRest stanza-delete 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: stanza-delete
stanza-delete 命令用于删除仓库中与指定 stanza 关联的所有数据。stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称。
警告:
此命令会永久删除指定 stanza 在 pgBackRest 仓库中的所有备份和归档数据,请谨慎使用。
删除 stanza 的步骤如下:
- 停止与该 stanza 关联的 PostgreSQL 集群(或使用
--force 选项强制删除)。 - 在执行
stanza-delete 命令的主机上先运行 stop 命令。 - 运行
stanza-delete 命令。
命令执行成功后,需自行从所有 pgBackRest 配置文件和/或环境变量中移除该 stanza 的相关配置。
每次只能从一个仓库中删除 stanza。若需从多个仓库中删除,请使用 --repo 选项逐一指定每个仓库,分别执行 stanza-delete 命令。
命令选项
强制删除选项(--force)
强制删除 stanza。
若该 stanza 对应的 PostgreSQL 实例仍在运行,可使用此选项强制从仓库中删除该 stanza。
default: n
example: --no-force
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
此选项设置用于复制、压缩、加密及其他操作的缓冲区大小。实际使用的缓冲区数量取决于具体操作,部分操作可能额外占用内存,例如 gz 压缩可能额外占用 256KiB。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用特定 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,此选项控制网络传输的压缩级别,用于减少网络流量。若 compress-type 不为 none,则忽略 compress-level-network,转而使用 compress-level,确保文件只被压缩一次。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
指定与默认路径不同的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,最终形成完整配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 的默认基础路径,前提是这两个选项未在命令行中明确指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
数据库超时选项(--db-timeout)
数据库查询超时时间。
设置针对数据库查询的超时时间(秒),包括备份启动/停止函数。由于这些函数可能耗时较长,建议将此值设置得宽裕一些——除非确认已设置 start-fast=y,且数据库集群在备份期间不会产生大量 WAL 段。
注意: db-timeout 的值必须小于 protocol-timeout 的值。
default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600
I/O 超时选项(--io-timeout)
I/O 超时时间。
用于连接及读/写操作的超时时间(秒)。
注意,整个读/写操作无需在此超时时间内完成,但必须有一定进展,哪怕只传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 将锁文件写入此路径,以防止并发执行相互冲突的操作。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中创建的文件权限更合理。默认目录权限为 0750,文件权限为 0640;锁文件和日志目录的目录权限为 0770,文件权限为 0660。
若要沿用执行用户自身的 umask,请在配置文件中指定 neutral-umask=n,或在命令行使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器赋予该进程的 nice 值。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提升自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期挂起。
注意: protocol-timeout 的值必须大于 db-timeout 的值。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在套接字连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是对一个 PostgreSQL 数据库集群的备份配置,定义了集群位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份主机则会为每个需要备份的数据库集群各配置一个 stanza。
命名建议:相比使用本地集群名称(如 main 或 prod),更好的做法是根据集群中实际存放的数据来命名 stanza(如 app 或 dw),因为 stanza 名称同时用于主库和所有副本。
TCP 保活计数选项(--tcp-keep-alive-count)
Keep-alive 计数。
指定在判定连接已断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在系统支持 TCP_KEEPCNT 套接字选项时可用。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
Keep-alive 空闲时间。
指定在没有网络活动多少秒后,操作系统应发送 TCP keep-alive 消息。
此选项仅在系统支持 TCP_KEEPIDLE 套接字选项时可用。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
Keep-alive 间隔时间。
指定未收到确认的 TCP keep-alive 消息在多少秒后重新发送。
此选项仅在系统支持 TCP_KEEPINTVL 套接字选项时可用。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。示例值是一个合理的选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务器之间的所有 TLS 连接均经过加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许使用的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录追踪信息(非常详细的调试)、调试信息、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录追踪信息(非常详细的调试)、调试信息、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别输出到 stderr 而非 stdout(由 log-level-console 控制)。输出到 stderr 的日志不含时间戳和进程信息。
支持以下日志级别:
off - 不记录任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试信息、详情、信息、警告和错误trace - 记录追踪信息(非常详细的调试)、调试信息、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件写入此路径。注意,若 log-level-file=off,则无需配置此选项。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的所有子进程启用文件日志,日志级别由 log-level-file 控制。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中启用时间戳。此选项在特殊情况下(如生成文档时)会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用此选项指定的版本,替代从 pg_control 或 WAL 头部自动检测的版本。此选项主要用于 PostgreSQL 分支版本或开发版本——这些版本中的相关值可能与发布版本不同。PostgreSQL 通过 server_version_num 上报的版本号必须与强制指定的版本一致。
警告:
使用此选项需谨慎。pg_control 和 WAL 头部仍会按照指定版本的预期格式(即官方开源 PostgreSQL 的格式)读取。若分支版本或开发版本更改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常,只有当分支将所有自定义结构成员添加在标准 PostgreSQL 成员之后时,此选项才能按预期工作。
example: --pg-version-force=15
仓库选项
指定仓库选项(--repo)
设置仓库。
指定命令操作的目标仓库。例如,可使用此选项从特定仓库执行恢复,而非由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在容器根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 Azure 生成的内容也可存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管身份自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加账户名。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 256 位密钥长度的高级加密标准
注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 GCS 生成的内容也可存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点,可更改为本地 GCS 服务器或其他备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号自动授权。service - 使用本地存储的密钥文件中的服务账号。token - 用于本地测试,例如使用 fakegcs。
当 repo-gcs-key-type=service 时,凭据将在认证令牌续期时重新加载。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
备份和归档到本地挂载的文件系统时,无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用非系统默认的 CA 文件。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用非系统默认的 CA 路径。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令路径。
仅当本地主机与仓库主机上的 pgBackRest 路径不同时才需要配置。若未定义,则与本地命令路径保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的位置。仅当仓库主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时仓库主机的端口。
使用此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 指定命令中的配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时仓库主机的用户。
定义用于仓库主机操作的用户。建议使用非 postgres 的专用用户(如 pgbackrest)。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库具有读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份并归档 WAL 段的位置。
预估所需空间并不容易。建议先执行几次备份,记录不同类型备份(全量/增量/差异)的大小,并测量每天产生的 WAL 量,从而得出大致估算。随着数据库的增长,空间需求也会随时间变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
通过设置 repo-path=/ 可将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志和其他 AWS 生成的内容也可存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项可能会有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭证web-id - 自动获取 Web 身份凭证
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
创建存储桶时所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费模式。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭证的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机并在 URI 前添加存储桶名。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存储仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 repo-sftp-host-key-hash-type 匹配。可通过以下命令生成指纹:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接主机密钥已更改或不在已知主机文件中的主机。此选项要求手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到已知主机文件,但不允许连接主机密钥已更改的主机。fingerprint - pgBackRest 将根据 repo-sftp-host-fingerprint 选项指定的指纹验证主机密钥。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希算法。较新版本的 libssh2 在支持 md5 和 sha1 的基础上,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存储仓库的主机上使用的用户名。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证过程中用于匹配 SFTP 主机的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将仅在这些文件中搜索匹配项。文件路径必须为绝对路径或以波浪号开头。此选项可多次传入以指定多个文件。若要使用已知主机文件检查,不得同时指定 repo-sftp-host-fingerprint。另请参见 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。若基于 OpenSSL 编译,此项可选;若基于其他库编译,则为必填项。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
为存储(如 S3、Azure)证书使用非系统默认的 CA 文件。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file、repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
为存储(如 S3、Azure)证书使用非系统默认的 CA 路径。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path、repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试场景。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host、repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port、repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库为对象存储(如 S3)时,指定添加到对象上的标签。可多次传入此选项以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前确认标签设置正确,确保整个仓库的标签统一。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
当文件过大无法全部载入内存时,对象存储(如 S3)允许分块上传。即使文件可以载入内存,限制上传所用内存量也更高效。
较大的分块大小通常有助于提升性能:减少上传请求数,并允许更多文件在单次请求中完成上传而无需分块。缺点是内存占用更高——由于分块缓冲区必须按进程分配,较大的 process-max 值将导致整体内存消耗更多。
注意,不同存储类型和平台对有效分块大小有所不同。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语不同,查询最小/最大值时请注意:AWS S3 使用"part size",GCS 使用"chunk size",Azure 使用"block size"。
若文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增大至允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
启用或禁用对存储(如 S3、Azure)服务器 TLS 证书的验证。仅在测试或使用自签名证书时才应禁用此功能。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls、repo-s3-verify-ssl、repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google Cloud 存储posix - POSIX 兼容文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
使用 NFS 挂载作为 posix 仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中的描述相同,参见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 数据库选项(--pg-database)
PostgreSQL 数据库。
连接 PostgreSQL 时使用的数据库名称。默认值通常最为合适,但某些安装环境中可能不存在此数据库。
注意,由于历史原因,PGDATABASE 环境变量的设置将被忽略。
default: postgres
example: --pg1-database=backupdb
PostgreSQL 主机选项(--pg-host)
远程操作时的 PostgreSQL 主机。
用于 PostgreSQL 主机与仓库主机分离时的备份场景。
example: --pg1-host=db.domain.com
已弃用名称:db-host
PostgreSQL 主机证书颁发机构文件选项(--pg-host-ca-file)
PostgreSQL 主机证书颁发机构文件。
连接 PostgreSQL 主机时,使用非系统默认的 CA 文件。
example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
PostgreSQL 主机证书颁发机构路径选项(--pg-host-ca-path)
PostgreSQL 主机证书颁发机构路径。
连接 PostgreSQL 主机时,使用非系统默认的 CA 路径。
example: --pg1-host-ca-path=/etc/pki/tls/certs
PostgreSQL 主机证书文件选项(--pg-host-cert-file)
PostgreSQL 主机证书文件。
发送给 PostgreSQL 主机以证明客户端身份。
example: --pg1-host-cert-file=/path/to/client.crt
PostgreSQL 主机命令选项(--pg-host-cmd)
PostgreSQL 主机上的 pgBackRest 命令路径。
仅当本地主机与 PostgreSQL 主机上的 pgBackRest 路径不同时才需要配置。若未定义,则与本地命令路径保持一致。
default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:db-cmd
PostgreSQL 主机配置文件选项(--pg-host-config)
pgBackRest 数据库主机配置文件。
设置 PostgreSQL 主机上配置文件的位置。仅当 PostgreSQL 主机上的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:db-config
PostgreSQL 主机配置包含路径选项(--pg-host-config-include-path)
pgBackRest 数据库主机配置包含路径。
设置 PostgreSQL 主机上配置包含路径的位置。仅当 PostgreSQL 主机上的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d
PostgreSQL 主机配置路径选项(--pg-host-config-path)
pgBackRest 数据库主机配置路径。
设置 PostgreSQL 主机上配置路径的位置。仅当 PostgreSQL 主机上的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest
PostgreSQL 主机密钥文件选项(--pg-host-key-file)
PostgreSQL 主机密钥文件。
用于证明客户端证书由所有者发送。
example: --pg1-host-key-file=/path/to/client.key
PostgreSQL 主机端口选项(--pg-host-port)
设置了 pg-host 时 PostgreSQL 主机的端口。
使用此选项为 PostgreSQL 主机协议指定非默认端口。
注意: 当 pg-host-type=ssh 时,pg-host-port 没有默认值,端口由 cmd-ssh 指定命令中的配置决定。
default (depending on pg-host-type):
tls - 8432
allowed: [0, 65535]
example: --pg1-host-port=25
已弃用名称:db-ssh-port
PostgreSQL 主机协议类型选项(--pg-host-type)
PostgreSQL 主机协议类型。
支持以下协议类型:
ssh - 安全外壳协议(SSH)。tls - pgBackRest TLS 服务器。
default: ssh
example: --pg1-host-type=tls
PostgreSQL 主机用户选项(--pg-host-user)
设置了 pg-host 时 PostgreSQL 主机的登录用户。
此用户同时作为远程 pgBackRest 进程的所有者,并负责发起与 PostgreSQL 的连接。为使其正常工作,该用户通常应为 PostgreSQL 数据库集群的所有者,默认为 postgres。
default: postgres
example: --pg1-host-user=db_owner
已弃用名称:db-user
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
此路径应与 PostgreSQL 上报的 data_directory 一致。虽然可以从多处读取此值,但建议在配置文件中明确设置,以确保在恢复或离线备份等这些资源不可用的场景下仍能正常使用。
pg-path 在每次在线备份时都会与 PostgreSQL 上报的值进行校验,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
PostgreSQL 端口选项(--pg-port)
PostgreSQL 端口。
PostgreSQL 监听的端口。大多数集群使用默认端口,通常无需指定此选项。
default: 5432
allowed: [0, 65535]
example: --pg1-port=6543
已弃用名称:db-port
PostgreSQL Socket 路径选项(--pg-socket-path)
PostgreSQL Unix Socket 路径。
PostgreSQL 启动时指定的 Unix Socket 目录。pgBackRest 会自动在操作系统的标准位置查找,通常无需指定此选项——除非在 postgresql.conf 中通过 unix_socket_directories 修改了 Socket 目录。
example: --pg1-socket-path=/var/run/postgresql
已弃用名称:db-socket-path
PostgreSQL 数据库用户选项(--pg-user)
PostgreSQL 数据库用户。
连接 PostgreSQL 时使用的数据库用户名。若未指定,pgBackRest 将使用当前操作系统用户或 PGUSER 环境变量中的用户。
example: --pg1-user=backupuser
16 - Stanza 升级命令(stanza-upgrade)
pgBackRest stanza-upgrade 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: stanza-upgrade
将 PostgreSQL 升级到新的主版本后,必须立即将所有 pgBackRest 配置中的 pg-path 更新为新的数据库位置,然后运行 stanza-upgrade 命令。若主机上配置了多个仓库,每个仓库都会执行 stanza 升级。若数据库处于离线状态,请使用 --no-online 选项。
命令选项
在线选项(--online)
在线更新集群。
指定 --no-online 可阻止 pgBackRest 在升级 stanza 时连接 PostgreSQL。
default: y
example: --no-online
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
缓冲区大小用于复制、压缩、加密及其他操作。实际使用的缓冲区数量取决于各项选项,且每个操作可能会占用额外的内存,例如 gz 压缩最多可额外消耗 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
若需要使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上运行时,设置网络传输的压缩级别。压缩用于降低网络流量。若 compress-type 不等于 none,则忽略 compress-level-network 设置,改用 compress-level,从而避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
通过此选项可指定与默认值不同的配置文件路径。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
pgBackRest 附加配置文件路径。
指定路径下扩展名为 .conf 的配置文件将与 pgBackRest 主配置文件合并,形成一个统一的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 选项的默认基础路径,除非这两个选项已在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将被设为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将被设为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
数据库超时选项(--db-timeout)
数据库查询超时时间。
设置对数据库执行查询操作的超时时间(单位:秒)。这包括备份启动/停止函数,这些函数各自可能耗时较长。因此,除非确认这些函数能快速返回(例如已设置 start-fast=y,且数据库集群在备份期间不会产生大量 WAL 段),否则应将超时时间设置得足够长。
注意: db-timeout 的值必须小于 protocol-timeout。
default: 30m
allowed: [100ms, 7d]
example: --db-timeout=600
I/O 超时选项(--io-timeout)
I/O 超时时间。
连接及读写操作的超时时间(单位:秒)。
注意,整个读写操作无需在此时间内完成,但必须持续有所进展,哪怕仅传输了一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 将锁文件存储在此路径下,以防止冲突操作并发运行。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,使仓库中的文件以合理的权限创建。目录默认权限为 0750,文件默认权限为 0640。锁文件目录和日志目录的目录权限与文件权限分别为 0770 和 0660。
若要改用执行用户自身的 umask,请在配置文件中指定 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
进程优先级。
定义内核调度器赋予该进程的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
协议超时选项(--protocol-timeout)
协议超时时间。
设置本地或远程进程在协议层等待接收新消息的超时时间(单位:秒)。此设置可防止进程无限期等待。
注意: protocol-timeout 的值必须大于 db-timeout。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用保活机制。
在套接字连接上启用保活消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 PostgreSQL 数据库集群的配置单元,定义了集群的位置、备份方式、归档选项等信息。大多数数据库服务器只有一个 PostgreSQL 数据库集群,因此只有一个 stanza;而备份服务器通常会为每个需要备份的数据库集群分别配置一个 stanza。
命名 stanza 时,人们往往倾向于使用主集群名称,但更好的做法是根据集群所承载的数据库功能来命名。由于 stanza 名称会同时用于主库和所有副本,选择能描述集群实际功能的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
保活计数。
指定在判定连接已断开之前,允许丢失的 TCP 保活消息数量。
此选项仅适用于支持 TCP_KEEPCNT 套接字选项的系统。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
保活空闲时间。
指定网络无活动后,操作系统发送 TCP 保活消息前的等待时间(单位:秒)。
此选项仅适用于支持 TCP_KEEPIDLE 套接字选项的系统。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
保活间隔时间。
指定未收到确认的 TCP 保活消息在重传前的等待时间(单位:秒)。
此选项仅适用于支持 TCP_KEEPINTVL 套接字选项的系统。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许使用的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别要求为 TLSv1.2。
可根据需要调整所接受的加密套件。示例值是合理的选择,除非有特定的安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许使用的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密。默认情况下,与对象存储(如 S3)的连接也会加密。
注意: 任何传输连接的最低安全级别要求为 TLSv1.2。
可根据需要调整所接受的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、普通信息、警告和错误debug - 记录调试信息、详细信息、普通信息、警告和错误trace - 记录追踪信息(非常详细的调试输出)、调试信息、普通信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、普通信息、警告和错误debug - 记录调试信息、详细信息、普通信息、警告和错误trace - 记录追踪信息(非常详细的调试输出)、调试信息、普通信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些日志级别的输出将写入 stderr 而非 stdout(由 log-level-console 指定)。写入 stderr 的日志不包含时间戳和进程信息。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详细信息、普通信息、警告和错误debug - 记录调试信息、详细信息、普通信息、警告和错误trace - 记录追踪信息(非常详细的调试输出)、调试信息、普通信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件存储在此路径下。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为当前进程创建的所有子进程启用文件日志,日志级别由 log-level-file 指定。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
启用日志时间戳。
在控制台和文件日志中启用时间戳。在某些特殊场景(如生成文档)下,此选项会被禁用。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而非通过读取 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 分支版本或开发版本,这些版本的控制文件版本号可能与正式发布版本不同。PostgreSQL 通过 server_version_num 报告的版本必须与强制指定的版本一致。
警告:
使用此选项时请务必谨慎,因为 pg_control 和 WAL 头部仍将按照指定版本所对应的官方 PostgreSQL 格式进行解析。若分支版本或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常情况下,此选项仅在分支版本将所有自定义结构成员追加在标准 PostgreSQL 成员之后时才能正常工作。
example: --pg-version-force=15
仓库选项
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
可通过设置 repo-path=/ 将 pgBackRest 仓库存储在容器根目录,但通常建议指定一个前缀路径(如 /repo),以便日志及其他 Azure 生成的内容也能存储在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared - 共享密钥sas - 共享访问签名auto - 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host - 连接到 account.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加账户名前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密算法。
支持以下加密类型:
none - 仓库不加密aes-256-cbc - 使用 256 位密钥的高级加密标准
注意,即使仓库类型(如 S3)本身支持加密,pgBackRest 的加密操作也始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
可通过设置 repo-path=/ 将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志及其他 GCS 生成的内容也能存储在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
连接存储服务所使用的端点地址。可更新为本地 GCS 服务器或其他备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto - 使用实例服务账号授权。service - 使用本地存储的服务账号密钥。token - 用于本地测试,例如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时将重新加载凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费方的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档均写入本地挂载的文件系统,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
使用非系统默认的 CA 文件连接仓库主机。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
使用非系统默认的 CA 路径连接仓库主机。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
发送给仓库主机以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当本地主机与仓库主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,仓库主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的路径。仅当仓库主机的配置文件路径与本地配置文件路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机的配置包含路径与本地配置包含路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机的配置路径与本地配置路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
设置了 repo-host 时仓库主机使用的端口。
通过此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口号由 cmd-ssh 指定的命令配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh - 安全 Shell。tls - pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
设置了 repo-host 时仓库主机使用的用户。
定义在仓库主机上执行操作所使用的用户。建议使用专用用户(如 pgbackrest),而非 postgres 用户。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其拥有仓库的读权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
提前估算所需空间可能较为困难。建议先执行几次备份,记录不同类型备份(全量/增量/差异)的大小,并测量每日产生的 WAL 数据量,以此粗略估算所需空间。随着数据库规模增长,实际需求也会随之变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
可通过设置 repo-path=/ 将 pgBackRest 仓库存储在存储桶根目录,但通常建议指定一个前缀路径(如 /repo),以便日志及其他 AWS 生成的内容也能存储在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与所选区域匹配。
对于自定义或测试配置,可使用 repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared - 共享密钥auto - 自动获取临时凭据web-id - 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS 密钥管理服务密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host - 连接到 bucket.endpoint 主机。path - 连接到 endpoint 主机,并在 URI 中添加存储桶名前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存放仓库的 SFTP 主机。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
SFTP 仓库主机指纹的生成方式应与 repo-sftp-host-key-hash-type 一致。可通过以下命令生成指纹:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下 SFTP 主机密钥检查类型:
strict - pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts 文件,并拒绝连接主机密钥已更改或不在已知主机文件中的主机。此选项要求用户手动添加所有新主机。accept-new - pgBackRest 会自动将新主机密钥添加到用户的已知主机文件,但不允许连接主机密钥已更改的主机。fingerprint - pgBackRest 将主机密钥与 repo-sftp-host-fingerprint 选项指定的指纹进行比对验证。none - 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明在 SSH 启动时用于计算远程系统主机密钥摘要的哈希算法。较新版本的 libssh2 除支持 md5 和 sha1 外,还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存放仓库的主机上使用的用户。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证时用于搜索 SFTP 主机匹配的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若配置了一个或多个文件路径,pgBackRest 将仅在这些文件中搜索匹配项。文件路径必须是完整路径或以波浪号开头的路径。此选项可多次指定以搜索多个已知主机文件。使用已知主机文件检查时,不得指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件。若编译时使用 OpenSSL,此项为可选;若使用其他库,则为必填项。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
使用非系统默认的 CA 文件验证存储(如 S3、Azure)证书。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file, repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
使用非系统默认的 CA 路径验证存储(如 S3、Azure)证书。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path, repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到存储(如 S3、Azure)端点以外的主机,通常用于测试场景。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host, repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接存储(如 S3、Azure)端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port, repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
指定在仓库为对象存储(如 S3)时添加到对象上的标签,可多次指定以添加多个标签。
pgBackRest 不提供修改这些标签的功能,因此请在运行 stanza-create 之前确认标签设置正确,以确保整个仓库的标签统一。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
S3 等对象存储在文件过大无法存入内存时,支持分块上传。即使文件可以存入内存,限制上传时的内存用量也能提高内存效率。
较大的分块大小通常能带来更好的性能,因为它可以减少上传请求次数,并允许更多文件在单次请求中完成上传而无需分块。缺点是内存占用更高,且由于分块缓冲区必须按进程分配,process-max 值越大,整体内存消耗越高。
注意,有效的分块大小因存储类型和平台而异。例如,AWS S3 的最小分块大小为 5MiB。各存储类型对分块大小的术语叫法不同:AWS S3 称为"part size",GCS 称为"chunk size",Azure 称为"block size",查询最小/最大值时请注意使用对应术语。
若文件大于 1GiB(PostgreSQL 默认创建的最大文件大小),分块大小将逐步增大,直至达到允许的最大值,以完成文件上传。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
控制是否验证存储(如 S3、Azure)服务器的 TLS 证书。仅在测试场景或使用自签名证书时才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure - Azure Blob 存储服务cifs - 类似 posix,但禁用链接和目录 fsyncgcs - Google 云存储posix - 符合 POSIX 标准的文件系统s3 - AWS 简单存储服务sftp - 安全文件传输协议
当使用 NFS 挂载作为 posix 类型仓库时,pgBackRest 适用与 PostgreSQL 文档中相同的规则,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
Stanza 选项
PostgreSQL 数据库选项(--pg-database)
PostgreSQL 数据库。
连接 PostgreSQL 时使用的数据库名称。默认值通常适用,但某些安装环境可能不包含此数据库。
注意,出于历史兼容性原因,PGDATABASE 环境变量的设置将被忽略。
default: postgres
example: --pg1-database=backupdb
PostgreSQL 主机选项(--pg-host)
远程操作时的 PostgreSQL 主机。
用于 PostgreSQL 主机与仓库主机不同时的备份场景。
example: --pg1-host=db.domain.com
已弃用名称:db-host
PostgreSQL 主机证书颁发机构文件选项(--pg-host-ca-file)
PostgreSQL 主机证书颁发机构文件。
使用非系统默认的 CA 文件连接 PostgreSQL 主机。
example: --pg1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
PostgreSQL 主机证书颁发机构路径选项(--pg-host-ca-path)
PostgreSQL 主机证书颁发机构路径。
使用非系统默认的 CA 路径连接 PostgreSQL 主机。
example: --pg1-host-ca-path=/etc/pki/tls/certs
PostgreSQL 主机证书文件选项(--pg-host-cert-file)
PostgreSQL 主机证书文件。
发送给 PostgreSQL 主机以证明客户端身份。
example: --pg1-host-cert-file=/path/to/client.crt
PostgreSQL 主机命令选项(--pg-host-cmd)
PostgreSQL 主机上的 pgBackRest 命令。
仅当本地主机与 PostgreSQL 主机上的 pgBackRest 命令路径不同时才需要配置。若未定义,PostgreSQL 主机命令将与本地命令保持一致。
default: [path of executed pgbackrest binary]
example: --pg1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:db-cmd
PostgreSQL 主机配置文件选项(--pg-host-config)
pgBackRest 数据库主机配置文件。
设置 PostgreSQL 主机上配置文件的路径。仅当 PostgreSQL 主机的配置文件路径与本地配置文件路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --pg1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:db-config
PostgreSQL 主机配置包含路径选项(--pg-host-config-include-path)
pgBackRest 数据库主机配置包含路径。
设置 PostgreSQL 主机上配置包含路径的位置。仅当 PostgreSQL 主机的配置包含路径与本地配置包含路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --pg1-host-config-include-path=/conf/pgbackrest/conf.d
PostgreSQL 主机配置路径选项(--pg-host-config-path)
pgBackRest 数据库主机配置路径。
设置 PostgreSQL 主机上配置路径的位置。仅当 PostgreSQL 主机的配置路径与本地配置路径不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --pg1-host-config-path=/conf/pgbackrest
PostgreSQL 主机密钥文件选项(--pg-host-key-file)
PostgreSQL 主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --pg1-host-key-file=/path/to/client.key
PostgreSQL 主机端口选项(--pg-host-port)
设置了 pg-host 时 PostgreSQL 主机使用的端口。
通过此选项为 PostgreSQL 主机协议指定非默认端口。
注意: 当 pg-host-type=ssh 时,pg-host-port 没有默认值,端口号由 cmd-ssh 指定的命令配置决定。
default (depending on pg-host-type):
tls - 8432
allowed: [0, 65535]
example: --pg1-host-port=25
已弃用名称:db-ssh-port
PostgreSQL 主机协议类型选项(--pg-host-type)
PostgreSQL 主机协议类型。
支持以下协议类型:
ssh - 安全 Shell。tls - pgBackRest TLS 服务器。
default: ssh
example: --pg1-host-type=tls
PostgreSQL 主机用户选项(--pg-host-user)
设置了 pg-host 时 PostgreSQL 主机的登录用户。
该用户同时也是远程 pgBackRest 进程的所有者,并负责发起与 PostgreSQL 的连接。为确保正常工作,此用户应是 PostgreSQL 数据库集群的所有者,通常为 postgres(默认值)。
default: postgres
example: --pg1-host-user=db_owner
已弃用名称:db-user
PostgreSQL 路径选项(--pg-path)
PostgreSQL 数据目录。
此路径应与 PostgreSQL 报告的 data_directory 一致。尽管可以从多处读取该值,但建议显式配置,以防在恢复或离线备份场景中这些资源不可用。
pg-path 选项在每次在线备份时都会与 PostgreSQL 报告的值进行校验,因此应始终保持最新。
example: --pg1-path=/data/db
已弃用名称:db-path
PostgreSQL 端口选项(--pg-port)
PostgreSQL 端口。
PostgreSQL 运行的端口号。大多数 PostgreSQL 集群使用默认端口,通常无需指定此项。
default: 5432
allowed: [0, 65535]
example: --pg1-port=6543
已弃用名称:db-port
PostgreSQL Socket 路径选项(--pg-socket-path)
PostgreSQL Unix Socket 路径。
PostgreSQL 启动时指定的 Unix Socket 目录。pgBackRest 会自动查找操作系统的标准位置,通常无需配置此项,除非通过 postgresql.conf 中的 unix_socket_directories 显式修改了 Socket 目录。
example: --pg1-socket-path=/var/run/postgresql
已弃用名称:db-socket-path
PostgreSQL 数据库用户选项(--pg-user)
PostgreSQL 数据库用户。
连接 PostgreSQL 时使用的数据库用户名。若未指定,pgBackRest 将使用本地操作系统用户或 PGUSER 环境变量。
example: --pg1-user=backupuser
17 - 启动命令(start)
pgBackRest start 命令选项与行为参考。
原始页面: pgBackRest Command Docs: start
如果 pgBackRest 进程之前已通过 stop 命令停止,可使用 start 命令重新允许它们运行。注意,此命令不会立即启动任何 pgBackRest 进程,只是解除运行限制。详情与示例请参见 启动与停止。
通用选项
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项可以指定非默认的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与主配置文件合并,形成统一的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 选项的默认基础路径,但若这两个选项已在命令行中显式指定,则此设置不生效。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 使用锁文件防止并发执行相互冲突的操作,此选项指定锁文件的存放位置。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,以便以合理的权限创建仓库中的文件。目录的默认权限为 0750,文件的默认权限为 0640。锁文件和日志目录的目录及文件权限分别为 0770 和 0660。
如需使用运行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为进程分配的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,包括集群位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则需要为每个待备份的集群分别配置一个 stanza。
命名 stanza 时,以主集群名称命名看似直观,但更好的做法是用集群所承载数据库的功能来命名。由于 stanza 名称会同时用于主库和所有副本,因此选择能描述集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
日志选项
控制台日志级别选项(--log-level-console)
控制台日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 的日志输出级别。
指定哪些日志级别将输出到 stderr 而非 stdout(后者由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件写入此路径。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳输出。某些特殊场景(如生成文档时)会禁用此选项。
default: y
example: --no-log-timestamp
18 - 停止命令(stop)
pgBackRest stop 命令选项与行为参考。
原始页面: pgBackRest Command Docs: stop
禁止任何新的 pgBackRest 进程运行。默认情况下,正在运行的进程将被允许正常完成。使用 --force 选项可强制终止正在运行的进程。
stop 命令执行完成后,此后尝试运行的 pgBackRest 进程将返回错误。详情与示例请参见 启动与停止。
命令选项
强制停止选项(--force)
强制停止所有 pgBackRest 进程。
此选项会向所有正在运行的 pgBackRest 进程发送 TERM 信号,实现立即的优雅关闭。注意,这也会关闭由其他系统发起、但在当前系统上运行的远程进程。例如,若备份是在备份服务器上启动的,在数据库主机上运行 stop --force 将同时关闭备份服务器上的备份进程。
default: n
example: --force
通用选项
配置文件选项(--config)
pgBackRest 配置文件。
使用此选项可以指定非默认的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加 pgBackRest 配置文件的路径。
该路径下扩展名为 .conf 的配置文件将与主配置文件合并,形成统一的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置用于覆盖 --config 和 --config-include-path 选项的默认基础路径,但若这两个选项已在命令行中显式指定,则此设置不生效。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
锁文件路径选项(--lock-path)
锁文件的存储路径。
pgBackRest 使用锁文件防止并发执行相互冲突的操作,此选项指定锁文件的存放位置。
default: /tmp/pgbackrest
example: --lock-path=/backup/db/lock
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设置为 0000,以便以合理的权限创建仓库中的文件。目录的默认权限为 0750,文件的默认权限为 0640。锁文件和日志目录的目录及文件权限分别为 0770 和 0660。
如需使用运行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
定义内核调度器为进程分配的优先级(即 niceness 值)。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限提高自身优先级。
allowed: [-20, 19]
example: --priority=19
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,包括集群位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则需要为每个待备份的集群分别配置一个 stanza。
命名 stanza 时,以主集群名称命名看似直观,但更好的做法是用集群所承载数据库的功能来命名。由于 stanza 名称会同时用于主库和所有副本,因此选择能描述集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
日志选项
控制台日志级别选项(--log-level-console)
控制台日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志的输出级别。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 的日志输出级别。
指定哪些日志级别将输出到 stderr 而非 stdout(后者由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off - 不输出任何日志(不推荐)error - 仅记录错误warn - 记录警告和错误info - 记录信息、警告和错误detail - 记录详情、信息、警告和错误debug - 记录调试、详情、信息、警告和错误trace - 记录跟踪(非常详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件的存储路径。
pgBackRest 将日志文件写入此路径。注意,若 log-level-file=off,则无需配置日志路径。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中启用时间戳输出。某些特殊场景(如生成文档时)会禁用此选项。
default: y
example: --no-log-timestamp
19 - 验证命令(verify)
pgBackRest verify 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: verify
verify 用于验证仓库中的备份和归档是否有效。
命令选项
输出格式选项(--output)
输出类型。
支持以下输出类型:
none — 不输出验证信息。text — 将验证信息输出到标准输出。
default: none
example: --output=text
备份集选项(--set)
要验证的备份集。
验证与指定备份集关联的所有数据库文件和归档文件。
example: --set=20150131-153358F_20150131-153401I
详细输出选项(--verbose)
详细输出。
默认不启用详细输出,仅显示包含仓库错误的简要结果。设为 true 后,还将输出成功验证项的详细信息。
default: n
example: --verbose
通用选项
缓冲区大小选项(--buffer-size)
I/O 操作的缓冲区大小。
该缓冲区用于复制、压缩、加密等操作。实际使用的缓冲区数量取决于具体选项,每种操作可能额外占用内存,例如 gz 压缩最多可额外使用 256KiB 内存。
允许的值为 16KiB、32KiB、64KiB、128KiB、256KiB、512KiB、1MiB、2MiB、4MiB、8MiB 和 16MiB。
default: 1MiB
example: --buffer-size=2MiB
pgBackRest 命令选项(--cmd)
pgBackRest 命令。
pgBackRest 有时需要构造命令字符串,例如 restore 命令生成 restore_command 设置时。若未通过 cmd 选项显式指定,将使用当前 pgBackRest 进程所用的命令路径。
注意: 对 pgBackRest 命令进行包装可能导致不可预期的行为,不建议使用。
default: [path of executed pgbackrest binary]
example: --cmd=/var/lib/pgsql/bin/pgbackrest_wrapper.sh
SSH 客户端命令选项(--cmd-ssh)
SSH 客户端命令。
如需使用特定的 SSH 客户端,或 ssh 命令不在 $PATH 中,可通过此选项指定。
default: ssh
example: --cmd-ssh=/usr/bin/ssh
网络压缩级别选项(--compress-level-network)
网络压缩级别。
当 compress-type=none 且命令不在仓库所在主机上执行时,此选项设置网络传输的压缩级别,以减少网络流量。若 compress-type 不等于 none,则忽略此设置,改用 compress-level,避免对文件进行二次压缩。
default: 1
allowed: [-5, 12]
example: --compress-level-network=1
配置文件选项(--config)
pgBackRest 配置文件。
通过此选项可指定非默认路径的配置文件。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --config=/conf/pgbackrest/pgbackrest.conf
配置包含路径选项(--config-include-path)
附加配置文件的目录路径。
该目录下扩展名为 .conf 的文件将与 pgBackRest 主配置文件合并,共同构成最终的配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --config-include-path=/conf/pgbackrest/conf.d
配置基础路径选项(--config-path)
pgBackRest 配置文件的基础路径。
此设置覆盖 --config 和 --config-include-path 的默认基础路径,前提是这两个选项未在命令行中显式指定。
例如,仅传入 --config-path=/conf/pgbackrest 时,--config 的默认值将变为 /conf/pgbackrest/pgbackrest.conf,--config-include-path 的默认值将变为 /conf/pgbackrest/conf.d。
default: CFGOPTDEF_CONFIG_PATH
example: --config-path=/conf/pgbackrest
I/O 超时选项(--io-timeout)
I/O 超时。
连接、读写操作的超时时间(秒)。
注意,整个读写操作不必在此超时内完成,但必须持续有进展,哪怕每次只传输一个字节。
default: 1m
allowed: [100ms, 1h]
example: --io-timeout=120
中性 umask 选项(--neutral-umask)
使用中性 umask。
将 umask 设为 0000,确保仓库中的文件以合理的权限创建。默认目录模式为 0750,文件模式为 0640;锁目录和日志目录的目录模式为 0770,文件模式为 0660。
如需沿用执行用户自身的 umask,请在配置文件中设置 neutral-umask=n,或在命令行中使用 --no-neutral-umask。
default: y
example: --no-neutral-umask
进程优先级选项(--priority)
设置进程优先级。
指定内核调度器为该进程分配的 niceness 值。正值降低优先级,负值提高优先级。大多数情况下,进程没有权限自行提升优先级。
allowed: [-20, 19]
example: --priority=19
最大进程数选项(--process-max)
压缩与传输使用的最大进程数。
每个进程并行执行压缩和传输操作,可加快命令执行速度。但不宜将 process-max 设置过高,以免影响数据库性能。
default: 1
allowed: [1, 999]
example: --process-max=4
协议超时选项(--protocol-timeout)
协议超时。
设置本地或远程进程在协议层等待新消息的超时时间(秒),防止进程无限期挂起。
注意: protocol-timeout 的值必须大于 db-timeout。
default: 31m
allowed: [100ms, 7d]
example: --protocol-timeout=630
保活选项(--sck-keep-alive)
启用 keep-alive。
在套接字连接上启用 keep-alive 消息。
default: y
example: --no-sck-keep-alive
Stanza 选项(--stanza)
定义 stanza。
stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称,定义了集群的位置、备份方式、归档选项等。大多数数据库主机只有一个 PostgreSQL 集群,因此只有一个 stanza;备份服务器则会为每个需要备份的集群各配置一个 stanza。
stanza 名称很容易直接使用主库集群名,但更好的做法是用名称描述集群中所包含的数据库内容。由于该名称同时用于主库和所有副本,选择能体现集群实际用途的名称(如 app 或 dw)比使用本地集群名称(如 main 或 prod)更为合适。
TCP 保活计数选项(--tcp-keep-alive-count)
Keep-alive 计数。
指定在判定连接断开之前,允许丢失的 TCP keep-alive 消息数量。
此选项仅在系统支持 TCP_KEEPCNT 套接字选项时有效。
allowed: [1, 32]
example: --tcp-keep-alive-count=3
TCP 保活空闲时间选项(--tcp-keep-alive-idle)
Keep-alive 空闲时间。
指定在无网络活动达到多少秒后,操作系统开始发送 TCP keep-alive 消息。
此选项仅在系统支持 TCP_KEEPIDLE 套接字选项时有效。
allowed: [1, 3600]
example: --tcp-keep-alive-idle=60
TCP 保活间隔选项(--tcp-keep-alive-interval)
Keep-alive 间隔时间。
指定未收到确认的 TCP keep-alive 消息重新发送前的等待秒数。
此选项仅在系统支持 TCP_KEEPINTVL 套接字选项时有效。
allowed: [1, 900]
example: --tcp-keep-alive-interval=30
TLSv1.2 加密套件选项(--tls-cipher-12)
允许的 TLSv1.2 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。示例中的配置是合理的选择,除非有特定安全要求。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-12=HIGH:MEDIUM:+3DES:!aNULL
TLSv1.3 加密套件选项(--tls-cipher-13)
允许的 TLSv1.3 加密套件。
pgBackRest 客户端与服务端之间的所有 TLS 连接均已加密,默认情况下与对象存储(如 S3)的连接也会加密。
注意: 所有传输连接的最低安全级别为 TLSv1.2。
如有需要,可调整允许的加密套件。若未设置(默认),则使用底层 OpenSSL 库的默认值。
example: --tls-cipher-13=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
日志选项
控制台日志级别选项(--log-level-console)
控制台日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: warn
example: --log-level-console=error
文件日志级别选项(--log-level-file)
文件日志级别。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: info
example: --log-level-file=debug
标准错误日志级别选项(--log-level-stderr)
stderr 日志级别。
指定哪些级别的日志输出到 stderr 而非 stdout(由 log-level-console 控制)。时间戳和进程信息不会输出到 stderr。
支持以下日志级别:
off — 不记录任何日志(不推荐)error — 仅记录错误warn — 记录警告和错误info — 记录信息、警告和错误detail — 记录详情、信息、警告和错误debug — 记录调试、详情、信息、警告和错误trace — 记录跟踪(极详细的调试信息)、调试、信息、警告和错误
default: off
example: --log-level-stderr=error
日志路径选项(--log-path)
日志文件存储路径。
pgBackRest 将日志文件保存到此路径。注意,若 log-level-file=off,则无需配置此项。
default: /var/log/pgbackrest
example: --log-path=/backup/db/log
子进程日志选项(--log-subprocess)
启用子进程日志记录。
为该进程创建的所有子进程启用文件日志记录,使用 log-level-file 指定的日志级别。
default: n
example: --log-subprocess
日志时间戳选项(--log-timestamp)
在日志中启用时间戳。
在控制台和文件日志中输出时间戳。某些特殊场景(如生成文档)下会禁用此选项。
default: y
example: --no-log-timestamp
维护者选项
强制指定 PostgreSQL 版本选项(--pg-version-force)
强制指定 PostgreSQL 版本。
使用指定的 PostgreSQL 版本,而不是从 pg_control 或 WAL 头部自动检测到的版本。此选项主要用于 PostgreSQL 分支版本或开发版本——这些版本中,自动检测到的值可能与正式发布版本号不同。PostgreSQL 通过 server_version_num 报告的版本号必须与强制指定的版本一致。
警告: 请谨慎使用此选项。启用后,pg_control 和 WAL 头部将按照指定版本(即官方 PostgreSQL 发布版本)的预期格式解析。若分支或开发版本修改了 pgBackRest 所依赖字段的格式,将导致不可预期的行为。通常,只有当分支版本将所有自定义结构成员追加在标准 PostgreSQL 成员之后时,此选项才能正常工作。
example: --pg-version-force=15
仓库选项
指定仓库选项(--repo)
指定仓库。
指定命令操作的目标仓库。
例如,可通过此选项指定从特定仓库执行恢复,而非由 pgBackRest 自动选择。
allowed: [1, 256]
example: --repo=1
Azure 仓库容器选项(--repo-azure-container)
Azure 仓库容器。
用于存储仓库的 Azure 容器。
pgBackRest 仓库可通过设置 repo-path=/ 存储在容器根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 Azure 生成的内容也可存放在同一容器中。
example: --repo1-azure-container=pg-backup
Azure 仓库密钥类型选项(--repo-azure-key-type)
Azure 仓库密钥类型。
支持以下授权类型:
shared — 共享密钥sas — 共享访问签名auto — 使用 Azure 托管标识自动授权
default: shared
example: --repo1-azure-key-type=sas
Azure 仓库 URI 风格选项(--repo-azure-uri-style)
Azure URI 风格。
支持以下 URI 风格:
host — 连接到 account.endpoint 主机。path — 连接到 endpoint 主机,并在 URI 中添加账户前缀。
default: host
example: --repo1-azure-uri-style=path
仓库加密类型选项(--repo-cipher-type)
仓库加密算法。
支持以下加密类型:
none — 不加密aes-256-cbc — 256 位密钥的 AES 加密标准
注意,即使仓库存储类型(如 S3)本身支持加密,pgBackRest 的加密始终在客户端执行。
default: none
example: --repo1-cipher-type=aes-256-cbc
GCS 仓库存储桶选项(--repo-gcs-bucket)
GCS 仓库存储桶。
用于存储仓库的 GCS 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 GCS 生成的内容也可存放在同一存储桶中。
example: --repo1-gcs-bucket=/pg-backup
GCS 仓库端点选项(--repo-gcs-endpoint)
GCS 仓库端点。
用于连接存储服务的端点地址,可替换为本地 GCS 服务器或其他备用端点。
default: storage.googleapis.com
example: --repo1-gcs-endpoint=localhost
GCS 仓库密钥类型选项(--repo-gcs-key-type)
GCS 仓库密钥类型。
支持以下授权类型:
auto — 使用实例服务账号授权。service — 使用本地存储的服务账号密钥。token — 用于本地测试,如 fakegcs。
当 repo-gcs-key-type=service 时,认证令牌续期时会重新加载身份凭据。
default: service
example: --repo1-gcs-key-type=auto
GCS 仓库项目 ID 选项(--repo-gcs-user-project)
GCS 项目 ID。
用于确定请求计费归属的 GCS 项目 ID。
example: --repo1-gcs-user-project=my-project
仓库主机选项(--repo-host)
远程操作时的仓库主机。
若备份和归档存储在本地挂载的文件系统中,则无需此设置。
example: --repo1-host=repo1.domain.com
已弃用名称:backup-host
仓库主机证书颁发机构文件选项(--repo-host-ca-file)
仓库主机证书颁发机构文件。
连接仓库主机时,使用指定的 CA 文件替代系统默认值。
example: --repo1-host-ca-file=/etc/pki/tls/certs/ca-bundle.crt
仓库主机证书颁发机构路径选项(--repo-host-ca-path)
仓库主机证书颁发机构路径。
连接仓库主机时,使用指定的 CA 路径替代系统默认值。
example: --repo1-host-ca-path=/etc/pki/tls/certs
仓库主机证书文件选项(--repo-host-cert-file)
仓库主机证书文件。
向仓库主机发送此证书以证明客户端身份。
example: --repo1-host-cert-file=/path/to/client.crt
仓库主机命令选项(--repo-host-cmd)
仓库主机上的 pgBackRest 命令。
仅当仓库主机上的 pgBackRest 命令路径与本地不同时才需要配置。若未定义,将沿用本地命令路径。
default: [path of executed pgbackrest binary]
example: --repo1-host-cmd=/usr/lib/backrest/bin/pgbackrest
已弃用名称:backup-cmd
仓库主机配置文件选项(--repo-host-config)
pgBackRest 仓库主机配置文件。
设置仓库主机上配置文件的路径。仅当仓库主机的配置文件路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_FILE
example: --repo1-host-config=/conf/pgbackrest/pgbackrest.conf
已弃用名称:backup-config
仓库主机配置包含路径选项(--repo-host-config-include-path)
pgBackRest 仓库主机配置包含路径。
设置仓库主机上配置包含路径的位置。仅当仓库主机的配置包含路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH "/" PROJECT_CONFIG_INCLUDE_PATH
example: --repo1-host-config-include-path=/conf/pgbackrest/conf.d
仓库主机配置路径选项(--repo-host-config-path)
pgBackRest 仓库主机配置路径。
设置仓库主机上配置路径的位置。仅当仓库主机的配置路径与本地不同时才需要配置。
default: CFGOPTDEF_CONFIG_PATH
example: --repo1-host-config-path=/conf/pgbackrest
仓库主机密钥文件选项(--repo-host-key-file)
仓库主机密钥文件。
用于证明客户端证书由其所有者发送。
example: --repo1-host-key-file=/path/to/client.key
仓库主机端口选项(--repo-host-port)
repo-host 已设置时的仓库主机端口。
通过此选项为仓库主机协议指定非默认端口。
注意: 当 repo-host-type=ssh 时,repo-host-port 没有默认值,端口由 cmd-ssh 所指定命令的配置决定。
default (depending on repo-host-type):
tls - 8432
allowed: [0, 65535]
example: --repo1-host-port=25
已弃用名称:backup-ssh-port
仓库主机协议类型选项(--repo-host-type)
仓库主机协议类型。
支持以下协议类型:
ssh — 安全外壳协议。tls — pgBackRest TLS 服务器。
default: ssh
example: --repo1-host-type=tls
仓库主机用户选项(--repo-host-user)
repo-host 已设置时的仓库主机用户。
定义在仓库主机上执行操作所使用的用户。建议使用专用用户(如 pgbackrest)而非 postgres。若 PostgreSQL 运行在仓库主机上,可将 postgres 用户加入 pgbackrest 组,使其对仓库拥有读取权限,同时避免意外损坏仓库内容。
default: pgbackrest
example: --repo1-host-user=repo-user
已弃用名称:backup-user
仓库路径选项(--repo-path)
备份和归档的存储路径。
仓库是 pgBackRest 存储备份和归档 WAL 段的位置。
预先估算所需空间可能比较困难。建议先执行几次备份,分别记录全量、增量、差异备份的大小,并统计每天的 WAL 生成量,从而大致估算所需空间。随着数据库的演进,空间需求也会持续变化。
default: /var/lib/pgbackrest
example: --repo1-path=/backup/db/backrest
S3 仓库存储桶选项(--repo-s3-bucket)
S3 仓库存储桶。
用于存储仓库的 S3 存储桶。
pgBackRest 仓库可通过设置 repo-path=/ 存储在存储桶根目录,但通常建议指定一个前缀(如 /repo),这样日志及其他 AWS 生成的内容也可存放在同一存储桶中。
example: --repo1-s3-bucket=pg-backup
S3 仓库端点选项(--repo-s3-endpoint)
S3 仓库端点。
AWS 端点应与存储桶所在区域匹配。
自定义或测试配置时,repo-storage-ca-file、repo-storage-ca-path、repo-storage-host、repo-storage-port 和 repo-storage-verify-tls 等选项可能有所帮助。
example: --repo1-s3-endpoint=s3.amazonaws.com
S3 仓库密钥类型选项(--repo-s3-key-type)
S3 仓库密钥类型。
支持以下类型:
shared — 共享密钥auto — 自动获取临时凭据web-id — 自动获取 Web 身份凭据
default: shared
example: --repo1-s3-key-type=auto
S3 仓库 KMS 密钥 ID 选项(--repo-s3-kms-key-id)
S3 仓库 KMS 密钥。
使用指定的 AWS KMS 密钥启用 S3 服务端加密。
example: --repo1-s3-kms-key-id=bceb4f13-6939-4be3-910d-df54dee817b7
S3 仓库区域选项(--repo-s3-region)
S3 仓库区域。
存储桶所在的 AWS 区域。
example: --repo1-s3-region=us-east-1
S3 仓库请求方付费选项(--repo-s3-requester-pays)
S3 仓库请求方付费。
启用 S3 请求方付费功能。
default: n
example: --no-repo1-s3-requester-pays
S3 仓库角色选项(--repo-s3-role)
S3 仓库角色。
当 repo-s3-key-type=auto 时,用于获取临时凭据的 AWS 角色名称(非完整 ARN)。
example: --repo1-s3-role=authrole
S3 仓库 URI 风格选项(--repo-s3-uri-style)
S3 URI 风格。
支持以下 URI 风格:
host — 连接到 bucket.endpoint 主机。path — 连接到 endpoint 主机,并在 URI 中添加存储桶前缀。
default: host
example: --repo1-s3-uri-style=path
SFTP 仓库主机选项(--repo-sftp-host)
SFTP 仓库主机。
存放仓库的 SFTP 主机地址。
example: --repo1-sftp-host=sftprepo.domain
SFTP 仓库主机指纹选项(--repo-sftp-host-fingerprint)
SFTP 仓库主机指纹。
指纹的生成方式须与 repo-sftp-host-key-hash-type 保持一致。可通过以下命令生成:awk '{print $2}' ssh_host_xxx_key.pub | base64 -d | (md5sum or sha1sum) -b。SSH 主机密钥通常位于 /etc/ssh 目录下。
example: --repo1-sftp-host-fingerprint=f84e172dfead7aeeeae6c1fdfb5aa8cf
SFTP 主机密钥检查类型选项(--repo-sftp-host-key-check-type)
SFTP 主机密钥检查类型。
支持以下检查类型:
strict — pgBackRest 不会自动将主机密钥添加到 ~/.ssh/known_hosts,并拒绝连接密钥已变更或不在已知主机文件中的主机。此选项要求手动添加所有新主机。accept-new — pgBackRest 自动将新主机密钥添加到已知主机文件,但不允许连接密钥已变更的主机。fingerprint — 根据 repo-sftp-host-fingerprint 指定的指纹验证主机密钥。none — 不执行主机密钥检查。
default: strict
example: --repo1-sftp-host-key-check-type=accept-new
SFTP 仓库主机密钥哈希类型选项(--repo-sftp-host-key-hash-type)
SFTP 仓库主机密钥哈希类型。
声明 SSH 握手时计算远程主机密钥摘要所用的哈希算法。较新版本的 libssh2 在 md5 和 sha1 之外还支持 sha256。
example: --repo1-sftp-host-key-hash-type=sha256
SFTP 仓库主机端口选项(--repo-sftp-host-port)
SFTP 仓库主机端口。
default: 22
allowed: [1, 65535]
example: --repo1-sftp-host-port=22
SFTP 仓库主机用户选项(--repo-sftp-host-user)
SFTP 仓库主机用户。
存储仓库的主机上对应的用户名。
example: --repo1-sftp-host-user=pg-backup
SFTP 已知主机文件选项(--repo-sftp-known-host)
SFTP 已知主机文件。
认证时用于匹配 SFTP 主机的已知主机文件。若未指定,pgBackRest 默认搜索 ~/.ssh/known_hosts、~/.ssh/known_hosts2、/etc/ssh/ssh_known_hosts 和 /etc/ssh/ssh_known_hosts2。若指定了一个或多个文件路径,pgBackRest 将仅在这些文件中查找匹配项。路径必须为完整路径或以波浪号(~)开头的路径。此选项可多次传入以指定多个文件。使用已知主机文件检查时,不得同时指定 repo-sftp-host-fingerprint。另请参阅 repo-sftp-host-check-type 选项。
example: --repo1-sftp-known-host=/home/postgres/.ssh/known_hosts
SFTP 仓库私钥文件选项(--repo-sftp-private-key-file)
SFTP 私钥文件。
用于认证的 SFTP 私钥文件路径。
example: --repo1-sftp-private-key-file=~/.ssh/id_ed25519
SFTP 仓库公钥文件选项(--repo-sftp-public-key-file)
SFTP 公钥文件。
用于认证的 SFTP 公钥文件路径。若编译时链接的是 OpenSSL,则此项可选;若链接的是其他库,则为必填。
example: --repo1-sftp-public-key-file=~/.ssh/id_ed25519.pub
仓库存储 CA 文件选项(--repo-storage-ca-file)
仓库存储 CA 文件。
连接对象存储(如 S3、Azure)时,使用指定的 CA 文件替代系统默认值。
example: --repo1-storage-ca-file=/etc/pki/tls/certs/ca-bundle.crt
已弃用名称:repo-azure-ca-file, repo-s3-ca-file
仓库存储 TLS CA 路径选项(--repo-storage-ca-path)
仓库存储 CA 路径。
连接对象存储(如 S3、Azure)时,使用指定的 CA 路径替代系统默认值。
example: --repo1-storage-ca-path=/etc/pki/tls/certs
已弃用名称:repo-azure-ca-path, repo-s3-ca-path
仓库存储主机选项(--repo-storage-host)
仓库存储主机。
连接到非标准存储端点(如 S3、Azure)的主机地址,通常用于测试。
example: --repo1-storage-host=127.0.0.1
已弃用名称:repo-azure-host, repo-s3-host
仓库存储端口选项(--repo-storage-port)
仓库存储端口。
连接对象存储端点(或指定主机)时使用的端口。
default: 443
allowed: [1, 65535]
example: --repo1-storage-port=9000
已弃用名称:repo-azure-port, repo-s3-port
仓库存储标签选项(--repo-storage-tag)
仓库存储标签。
当仓库使用对象存储(如 S3)时,为对象添加的标签。此选项可多次指定以添加多个标签。
pgBackRest 不提供修改已有标签的功能,因此请在执行 stanza-create 之前确认标签设置正确,以保证整个仓库的标签一致性。
example: --repo1-storage-tag=key1=value1
仓库存储上传分块大小选项(--repo-storage-upload-chunk-size)
仓库存储上传分块大小。
S3 等对象存储在文件过大无法整体载入内存时,支持分块上传。即使文件能放入内存,限制单次上传的内存用量也更为高效。
较大的块大小通常有助于提升性能,因为它能减少上传请求次数,在单个请求中传输更多数据。但代价是内存占用更高,且块缓冲区按进程分配,process-max 越大,总内存消耗越多。
不同存储类型和平台对块大小的有效范围要求不同。例如,AWS S3 的最小块大小为 5MiB。各存储类型对此的术语也有差异:AWS S3 称为 “part size”,GCS 称为 “chunk size”,Azure 称为 “block size”。
若文件超过 1GiB(PostgreSQL 默认的单文件上限),块大小将自动逐步增大直至允许的最大值,以确保文件能够上传完成。
default (depending on repo-type):
azure - 4MiB
gcs - 4MiB
s3 - 5MiB
allow range (depending on repo-type):
azure - [4MiB, 1GiB]
gcs - [4MiB, 1GiB]
s3 - [5MiB, 1GiB]
example: --repo1-storage-upload-chunk-size=16MiB
仓库存储证书验证选项(--repo-storage-verify-tls)
仓库存储证书验证。
控制是否验证对象存储(如 S3、Azure)服务器的 TLS 证书。仅在测试或使用自签名证书等特殊场景下才应禁用验证。
default: y
example: --no-repo1-storage-verify-tls
已弃用名称:repo-azure-verify-tls, repo-s3-verify-ssl, repo-s3-verify-tls
仓库目标时间选项(--repo-target-time)
仓库目标时间。
指定读取版本化存储上仓库时所参照的时间点,从而访问某一历史时刻的仓库状态,用于恢复因误操作或恶意软件导致删除或损坏的数据。
S3、GCS 和 Azure 均支持版本化存储,但通常默认未启用。除启用版本控制外,还可以考虑为 S3 启用对象锁定,为 GCS 或 Azure 启用软删除。
使用 repo-target-time 时,必须同时指定 repo 选项。并非所有仓库类型都支持版本控制,通常针对单个仓库进行恢复最为合理。
注意,时间戳比较使用 <= 关系,且提供的时间戳中的毫秒部分会被截断。
example: --repo-target-time=2024-08-08 12:12:12+00
仓库类型选项(--repo-type)
仓库使用的存储类型。
支持以下仓库类型:
azure — Azure Blob 存储服务cifs — 类似 posix,但禁用链接和目录 fsyncgcs — Google Cloud 存储posix — 符合 POSIX 规范的文件系统s3 — AWS 简单存储服务sftp — 安全文件传输协议
将 NFS 挂载用作 posix 类型仓库时,适用于 pgBackRest 的规则与 PostgreSQL 文档中的描述相同,详见 Creating a Database Cluster - File Systems。
default: posix
example: --repo1-type=cifs
20 - 版本命令(version)
pgBackRest version 命令的选项与行为参考。
原始页面: pgBackRest Command Docs: version
显示已安装的 pgBackRest 版本。
命令选项
输出格式选项(--output)
输出类型。
支持以下输出类型:
text — 以文本形式显示已安装的 pgBackRest 版本。num — 以整数形式显示已安装的 pgBackRest 版本。
default: text
example: --output=num