备份策略

本地备份、MinIO、S3 等不同备份仓库的配置与选择。

Pigsty 支持多种备份仓库类型,可根据可靠性需求、成本预算和恢复时间要求选择合适的策略。


仓库类型

本地仓库(Local)

备份存储在主库节点的本地磁盘上。

pgbackrest_method: local
pgbackrest_repo:
  local:
    path: /pg/backup
    retention_full_type: count
    retention_full: 2

优点

  • 配置简单,无需额外基础设施
  • 恢复速度快(本地 IO)
  • 无网络依赖

缺点

  • 主库节点故障时备份可能丢失
  • 占用主库磁盘空间
  • 不支持异地容灾

适用场景:开发测试、单节点部署、对 RPO 要求不高的场景

MinIO 仓库

备份存储在 MinIO 对象存储集群上。

pgbackrest_method: minio
pgbackrest_repo:
  minio:
    type: s3
    s3_endpoint: sss.pigsty
    s3_bucket: pgsql
    s3_key: pgbackrest
    s3_key_secret: S3User.Backup
    s3_uri_style: path
    retention_full_type: time
    retention_full: 14

优点

  • 备份与数据库物理隔离
  • 支持多副本,高可靠性
  • 支持加密存储
  • 可扩展存储容量

缺点

  • 需要部署 MinIO 集群
  • 恢复速度受网络带宽限制

适用场景:生产环境、需要异地容灾的场景

云对象存储(S3/GCS/Azure)

备份存储在云厂商的对象存储服务上。

pgbackrest_method: s3
pgbackrest_repo:
  s3:
    type: s3
    s3_endpoint: s3.amazonaws.com
    s3_bucket: my-pg-backup
    s3_key: AKIAXXXXXXXX
    s3_key_secret: xxxxxxxxxxxx
    s3_region: us-east-1
    retention_full_type: time
    retention_full: 30

优点

  • 无需自建存储基础设施
  • 跨地域复制,高可靠性
  • 按使用量付费

缺点

  • 产生存储和流量费用
  • 依赖互联网连接
  • 恢复时可能产生较高流量费

适用场景:云上部署、需要异地容灾但不想自建存储


保留策略

按数量保留

保留最近 N 个全量备份:

retention_full_type: count
retention_full: 2  # 保留 2 个全量备份

按时间保留

保留最近 N 天内的备份:

retention_full_type: time
retention_full: 14  # 保留 14 天内的备份

差异/增量保留

retention_diff: 7   # 保留 7 个差异备份
retention_incr: 14  # 保留 14 个增量备份

备份调度

默认调度

Pigsty 默认不设置自动备份调度,需要手动配置。

配置定时备份

通过 node_crontab 配置定时任务:

node_crontab:
  # 每天凌晨 1 点执行全量备份
  - '00 01 * * * postgres /pg/bin/pg-backup full'

  # 每 4 小时执行差异备份
  - '00 */4 * * * postgres /pg/bin/pg-backup diff'

推荐策略

数据量 全量备份 差异备份 说明
< 100GB 每天 1 次 - 小库直接全量
100GB ~ 1TB 每周 1 次 每天 1 次 平衡恢复时间和空间
> 1TB 每周 1 次 每天 1 次 + 增量 大库需要增量备份

加密配置

备份加密

对于远程仓库,强烈建议启用加密:

pgbackrest_repo:
  minio:
    cipher_type: aes-256-cbc
    cipher_pass: YourSecurePassword123!

支持的加密算法

  • aes-256-cbc:AES 256 位加密(推荐)
  • none:不加密(仅用于测试)

注意:务必安全保管加密密码,丢失后无法恢复备份!


压缩配置

pgBackRest 支持多种压缩算法:

pgbackrest_repo:
  local:
    compress_type: zst    # 压缩算法
    compress_level: 3     # 压缩级别 (1-9)
算法 特点
zst(默认) 高压缩率,快速,推荐使用
lz4 极快速,压缩率一般
gz 传统 gzip,兼容性好
bz2 高压缩率,速度较慢

块级增量备份

pgBackRest 2.x 支持块级增量备份,显著减少备份大小:

pgbackrest_repo:
  minio:
    block: y     # 启用块级备份
    bundle: y    # 小文件合并

优势

  • 只备份实际变更的数据块
  • 大幅减少备份大小和传输量
  • 特别适合大型数据库

多仓库配置

可以同时配置多个备份仓库:

pgbackrest_repo:
  local:
    path: /pg/backup
    retention_full: 2
  minio:
    type: s3
    s3_endpoint: sss.pigsty
    s3_bucket: pgsql
    retention_full: 14

使用场景

  • 本地仓库:快速恢复
  • 远程仓库:异地容灾