生产运维入口
从目标、可恢复性和可观测性出发管理 PostgreSQL
生产工具栈
PgBouncer、pgBackRest、Patroni、CloudNativePG 与分阶段选型。
监控与日志
pg_stat_statements、JSON 日志、Prometheus、Grafana 与 pgBadger。
安全迁移
expand-and-contract、DDL 锁、CI、RLS 测试与零停机边界。
Autovacuum 与膨胀
dead tuples、冻结风险、vacuum 进度与热点表参数。
备份与恢复
逻辑备份、物理备份、PITR、恢复演练与证据。
安全基线
角色、认证、TLS、search_path、RLS 与审计边界。
复制与升级
流复制、逻辑复制、版本升级和切换清单。
先定义目标
| 目标 | 要回答的问题 |
|---|---|
| RPO | 最多允许丢失多少数据? |
| RTO | 故障后多久必须恢复服务? |
| 容量 | 峰值连接、数据增长、WAL 与备份增长是多少? |
| 可用性 | 哪些故障自动切换,哪些必须人工判断? |
| 安全 | 谁能连接、读哪些数据、做哪些变更? |
没有目标的“高可用”和“做了备份”不可验证。
每日最小检查
SELECT now(), version();
SELECT state, count(*)
FROM pg_stat_activity
GROUP BY state
ORDER BY state;
SELECT datname, age(datfrozenxid)
FROM pg_database
ORDER BY age(datfrozenxid) DESC;
SELECT
num_timed,
num_requested,
num_done,
buffers_written,
write_time,
sync_time
FROM pg_stat_checkpointer;
SELECT buffers_clean, maxwritten_clean, buffers_alloc
FROM pg_stat_bgwriter;PostgreSQL 17 起,检查点统计位于 pg_stat_checkpointer,后台写进程统计仍在 pg_stat_bgwriter。字段定义见 PostgreSQL 18 累积统计视图。
还应监控磁盘空间、WAL 生成/归档、复制 lag、备份状态、事务时长、锁等待、查询延迟、autovacuum 活动和连接池饱和度。阈值必须来自本系统基线。
变更纪律
- 在类似规模数据上测量锁与耗时。
- 写明回退路径和不可逆点。
- 设置
lock_timeout,避免迁移无限等待后突然获取大锁。 - 观察执行期间的锁、WAL、复制延迟和错误率。
- 用查询或业务指标验证结果。
生产 DDL 不是“执行成功就结束”,而是一个可观察、可中断、可验证的发布。
Last updated on