PostgreSQL Field Guide

云 PG 生产选型清单

用可验证问题和演练替代功能表打勾

1. 兼容性清单

  • PostgreSQL 大版本、次版本补丁节奏和停止支持日期是什么?
  • pg_extension 中需要的扩展及版本是否都可用?升级是自动、手工还是需要迁移?
  • 哪些参数不可改?是否允许 shared_preload_libraries
  • 是否支持逻辑复制、复制槽、FDW、事件触发器和所需认证方式?
  • 系统目录、统计视图和超级用户操作有哪些替代接口?
  • 驱动、ORM、迁移工具和备份工具是否通过真实流水线测试?

把检查结果保存为机器可读清单,绑定服务 SKU、区域、引擎版本和核对日期。

2. 可用性与恢复

测试通过条件示例
强制主备切换客户端在预算内重连;事务失败以可识别 SQLSTATE 返回;没有静默部分成功
PITR恢复到指定时间的新实例;校验业务行数、约束、角色和扩展;实测 RTO
误删恢复明确整实例、整库、单表各自的恢复路径和耗时
区域故障DNS、密钥、对象存储备份和应用计算不与数据库同故障域
备份导出能在厂商账号之外恢复一份可用副本

自动故障转移会断连接

应用仍需设置连接超时、事务级重试和幂等键。不要重放一个已经可能提交成功的写操作,除非可以用业务幂等键确认结果。

3. 连接与弹性

计算每个应用副本、后台任务、迁移工具、BI 和 Agent 的连接上限。对 serverless/Agent 流量优先使用受控池,但要确认:

  • transaction pooling 是否与 session state、临时表、LISTEN/NOTIFY 或 prepared statements 兼容;
  • 缩容、休眠、故障切换时连接字符串和 TLS 证书是否变化;
  • statement_timeoutidle_in_transaction_session_timeout 和客户端超时谁先触发;
  • 突发请求是否在应用层排队,而不是把连接风暴直接传给 PostgreSQL。

4. 成本模型

除计算与存储外,至少估算 IOPS、备份、跨区流量、只读副本、日志、监控、代理、PITR、快照导出和支持计划。AI 工作负载还应单列 embedding、索引重建、向量存储和检索候选重排成本。

5. 可迁移性

每季度或大版本升级前执行一次:

pg_dump --format=custom --no-owner --no-acl "$DATABASE_URL" > app.dump
createdb portability_restore
pg_restore --exit-on-error --no-owner --no-acl \
  --dbname=portability_restore app.dump

这只是逻辑可迁移性检查,不替代平台 PITR。恢复后还要核对 extension、role/grant、large object、sequence、行数、约束、关键查询结果和执行计划。

上线证据包

  • 服务/区域/SKU/引擎/扩展版本清单;
  • RPO、RTO、连接预算和容量模型;
  • failover、PITR、误删与平台外恢复报告;
  • 加密、网络、角色、RLS 与密钥轮换记录;
  • 版本升级、扩展升级和厂商退出 runbook;
  • 基准负载下的延迟、错误、WAL、vacuum、存储与成本数据。

Last updated on

On this page