十六、故障排查与应急手册
本手册面向 PostgreSQL 线上处置,遵循统一流程:保护数据完整性优先 → 取证 → 定位根因 → 小步修复 → 验证 → 复盘。每篇按固定模板组织,包含立即保护措施与禁止操作两节,帮助在压力下避免二次伤害。
WARNING
应急处置的第一原则是保护数据完整性。全手册明确禁止把以下动作作为首选:VACUUM FULL 抢救、强制 KILL 会话、删除复制槽、pg_resetwal、关闭 fsync、手工删除 pg_wal/ 或数据目录文件。任何破坏性操作都需先备份、评估回退、确认授权。
处置总流程
手册目录
- 锁等待与阻塞
- 频繁死锁(40P01)
- SQL 突然变慢与计划回退
- Autovacuum 滞后与表/索引膨胀
- 事务 ID 回卷(XID Wraparound)风险
- WAL 激增与 pg_wal 磁盘压力
- 宕机后崩溃恢复过慢
- 磁盘空间耗尽
- 误删/误更新后的 PITR 回退
- 复制延迟持续增长
- 故障切换后实例只读或双写
通用取证快照
进入任何排查前,先固定一份"现场坐标",避免多节点时间线混淆:
sql
SELECT now() AS ts, inet_server_addr() AS host,
current_setting('server_version') AS version,
pg_is_in_recovery() AS in_recovery;