这是本节的多页打印视图。 .
备份
pgcli 备份指南
快照
快照类型:
full— 完整备份(默认,自包含)diff— 自上次完整备份以来的更改incr— 自上次备份以来的更改
共享备份容器
所有实例共享单个 pgbackrest 容器;每个实例在存储库中都有自己的 stanza。
一份配置一个仓库。 这个容器只服务一个仓库——
data_dir下的本地目 录,或配置了backup.repo.s3时那唯一的一个 S3 端点——环境里的每个 stanza (普通实例与 Patroni 集群一视同仁)都推给它。不存在按实例或按集群选仓库: 于是一个 pgcli 环境就只备份到一个 store。若想把第二个 store(比如再pg addon install minio一个)只喂给部分集群,就跑第二份配置 (pg config init --namespace …)、配上它自己的备份容器——完整走法见 示例:HA 集群 + 自签 CA 的 MinIO。
备份基础设施(网络、镜像、目录、配置、容器)在 pg start 时自动准备;手动运行 pg backup setup 重新初始化,例如更改基础目录之后。
S3 对象存储仓库
Patroni 集群的备份与 WAL 归档可以推送到任意 S3 兼容存储(MinIO、silo、rustfs、
garage、AWS S3……)。配置写在 pg.yaml 的 backup.repo.s3 下:
然后(重)跑 setup,它会自动完成归档编排:
- HTTPS 是硬性要求。 pgBackRest 拒绝明文 S3(上游明确不实现),端点必须
提供 TLS。pgcli 自带的 MinIO 用
pg addon install minio --tls开启原生 HTTPS —— pgcli 会生成自签 CA,并把ca.crt路径填进上面的ca_file。 外部端点(真实 AWS S3 等公签证书)留空ca_file即可;实在无法提供 CA 时 可用verify_tls: false逃生(不做证书校验)。 - 远端存储主机取 CA——无需 scp。 MinIO 在另一台机器时,用一次 TLS 握手就
能取回信任锚,不必拷贝文件:
pg backup fetch-ca <存储主机>:9002从端点下发 的证书里取出信任锚,存到<base-dir>/backup/repo-ca/下并打印 SHA-256 指纹——这本质是"首次使用即信任"(TOFU),所以信任前先把指纹与存储主机对拍 一次,再把文件交给pg backup setup --s3-ca-file <路径>。它覆盖 pgcli 会提供 的两种 TLS 形态:开--tls的 MinIO(下发的是生成好的"叶+CA"链,取出的是 签名根);以及喂了pg cert自签叶证书的 MinIO(叶本身就是信任锚,原样保存 即可)。公共 CA 签发的端点根本不需要ca_file,此命令对它们没有意义。 - 跨机 HA 免手工分发。 Patroni 集群分散在多台主机时,
ca_file与备份 SSH 公钥只需在一台主机配好:pg backup setup把 CA 发布进集群的 etcd 注册表,ca_file留空的加入者自动拉取;各主机的备份公钥在pg ha create时发布, 由setup合并进每个成员的 authorized_keys。注册表里只放公开材料(CA 证书、SSH 公钥),绝不含私钥或 S3 secret_key。详见 HA 文档"备份跨机 leader"一节。 - 归档自动化。 setup 检测到 Patroni 成员的归档配置过期时,会 pause 集群、
按"副本先、leader 后"重建成员容器(recreate 即重启,
archive_mode是 postmaster 级参数)、resume。每个成员的 patroni.yml 会注入同一份archive_command(每个集群一个 stanza,成员互为pg*-host,pgBackRest 自动定位 primary),WAL 从此持续 push 到 S3。 - 作用范围。 S3 仓库只作用于 Patroni 集群的 stanza;
pg直接管理的普通 实例备份仍走本地仓库,互不影响。
等价的一次性 flag 写法(secret_key 建议手编 pg.yaml,避免落入 shell 历史):