2026.10.01
PGHoard:面向 PostgreSQL 的对象存储备份与恢复工具
PGHoard 为 PostgreSQL 提供定期全量备份、WAL 归档、时间点恢复和备用节点初始化,适合需要自主管理备份链路的团队。
它解决什么问题
PGHoard 是一个 PostgreSQL 备份守护进程与恢复工具,核心思路是把数据库的 basebackup 与后续 WAL(预写日志)保存起来,以便在需要时恢复到特定时间点。它可以使用本地文件系统,也可以连接多种对象存储;对于单数据库主机,项目 README 特别建议使用对象存储,以便主机故障时仍能获取备份。
已知功能
PGHoard 能按周期创建 basebackup,并通过 pg_receivexlog、PostgreSQL 的 archive_command,或仍标为实验性的 walreceiver 模式接收 WAL。它支持 PITR,也能直接从对象存储恢复,并可用备份初始化新的 standby,使其自动配置为复制中的 hot-standby。
项目列出的对象存储包括 AWS S3、Google Cloud、OpenStack Swift、Azure 和 Ceph。备份与 WAL 可使用 Snappy、Zstandard 或 LZMA 压缩;还可以选择对静态备份数据加密。恢复侧提供 WAL 预取,传输侧会在临时对象存储连接问题时重试,并检查 WAL 文件头。项目还提供 archive sync 与 archive cleanup 工具,以及用于监控的统计和告警文件。
适合谁
它适合已经运行 PostgreSQL、希望自行掌控备份位置和恢复流程的运维团队、平台团队,以及需要把备份接入现有对象存储账户的组织。需要注意的是,PGHoard 不是脱离 PostgreSQL 配置即可使用的备份按钮:使用者需要理解 WAL 归档、复制用户、pg_hba.conf、wal_level 和 max_wal_senders 等设置,并负责设计保留周期、凭据管理和恢复演练。
采用前的限制
README 表示 PGHoard 可备份和恢复 PostgreSQL 9.3 及以上版本,但只对 PostgreSQL 13 及以上版本进行测试和积极开发。项目以 Python 实现,开发与测试使用 Python 3.10 及以上;README 还称其主要在现代 Linux x86-64 系统上开发和测试,其他平台是否适用取决于所需模块。2.8.0 的正式发布说明增加了 PostgreSQL 19 支持,但具体运行环境仍应结合项目文档验证。
对象存储和加密并非“装上就完成”:相应 Python 依赖通常是可选模块,云端凭据需要写入配置,备份恢复权限也必须单独规划。加密会增加密钥保管责任;项目资料没有在本文来源中给出完整的密钥轮换或灾难恢复策略,使用前应自行审查。压缩算法的速度、体积和恢复负载也需要在目标工作负载上测试,不能仅凭默认值判断。
部署考虑
部署前应确认 PostgreSQL 已允许 WAL 归档与读取,创建合适的复制用户,配置主库和备用节点访问规则,并准备 JSON 配置。Linux 上 README 推荐使用 systemd;没有 systemd 时,可考虑 Supervisor 或其他进程控制系统。正式采用前,建议验证对象存储权限、网络中断后的重试行为、历史清理规则、PITR 所需 WAL 是否完整,以及在 PGHoard 主机不可用时能否从独立位置完成恢复。仓库元数据显示项目采用 Apache License 2.0,且当前未归档,但这不等于对你的 PostgreSQL 版本、云端配置或恢复目标作出保证。
资料来源
资料核对日期:2026-10-01