PostgreSQL Field Guide

生产运维入口

从目标、可恢复性和可观测性出发管理 PostgreSQL

先定义目标

目标要回答的问题
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 活动和连接池饱和度。阈值必须来自本系统基线。

变更纪律

  1. 在类似规模数据上测量锁与耗时。
  2. 写明回退路径和不可逆点。
  3. 设置 lock_timeout,避免迁移无限等待后突然获取大锁。
  4. 观察执行期间的锁、WAL、复制延迟和错误率。
  5. 用查询或业务指标验证结果。

生产 DDL 不是“执行成功就结束”,而是一个可观察、可中断、可验证的发布。

Last updated on

On this page