pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
SafeGrd 是面向 PostgreSQL 13 及以上版本的新备份服务,会定期恢复备份并核对行数。
它先生成备份,随后在内存或临时数据库中恢复,统计恢复出来的数据,让团队在真正需要备份之前就发现问题。
safegrd 守护进程运行在数据库附近的主机上,以只读角色连接数据库。在 PostgreSQL 14 及以上版本中,该角色只需要 pg_read_all_data 权限;在 PostgreSQL 13 上则需逐个模式授权。模式结构由 pg_dump 获取,数据行通过二进制 COPY 读取,两者位于同一事务。首次备份后,每次只上传发生变化的部分。
备份离开主机之前会用 age 加密,再写入启用 Object Lock 的 S3 存储桶。存储桶可以由用户提供,也可以由 SafeGrd 托管。备份数据不会经过 SafeGrd 的服务器。
age 密钥的管理方式由用户选择。使用客户管理的密钥时,只有客户能够解密备份;使用 SafeGrd 管理的密钥时,SafeGrd 会密封保存密钥,只向已登记的主机释放,即使丢失一台主机也能恢复。
Supabase、Neon 和 Amazon RDS 可通过连接字符串接入。Supabase 备份在 Supabase 自己的 Postgres 镜像中恢复,以便载入归档中的扩展。
恢复测试称为 Fire Drill。它取出最新备份、解密,并通过以下两种方式之一检查:
SELECT count(*) FROM users WHERE email IS NULL 返回 0。每次演练都会生成带签名和日期的记录,包含数量与检查结果,每条记录引用前一条记录。证明验证器会在浏览器中,使用 SafeGrd 公布的签名公钥检查整条记录链,无需安装软件。
sh
curl -fsSL https://safegrd.dev/install.sh | sh
safegrd login
safegrd enroll
CLI 源码已在 GitHub 发布,采用 Business Source License 1.1。
免费方案支持一个数据库:每天备份到 SafeGrd 托管存储,或每小时备份到用户自己的存储桶,每周进行一次内存演练。付费方案每月 15 美元起,增加每小时备份、沙箱演练与更多数据库。
文档:safegrd.dev/docs。