PostgreSQL在Linux上的故障排查步骤如下:
-
查看日志文件:
- 日志路径通常为
/var/log/postgresql/,使用tail -f postgresql-{版本号}-main.log实时查看。 - 通过
grep "error"搜索错误关键词,或用pgBadger工具生成可视化报告。
- 日志路径通常为
-
检查服务状态:
- 使用
systemctl status postgresql确认服务是否正常运行,异常时尝试重启sudo systemctl restart postgresql。
- 使用
-
分析配置文件:
- 检查
postgresql.conf(路径:/etc/postgresql/{版本号}/main/或/var/lib/pgsql/data/)中的listen_addresses、端口、内存参数等是否正确。 - 确认
pg_hba.conf中的客户端认证配置(如IP允许范围、认证方式)。
- 检查
-
监控数据库状态:
- 通过
pg_stat_activity视图查看当前连接、查询及锁等待情况,识别长时间运行的查询或死锁。 - 使用
EXPLAIN分析慢查询的执行计划,优化索引或调整SQL。
- 通过
-
检查系统资源:
- 用
top、htop、free命令监控CPU、内存使用情况,用df -h查看磁盘空间。 - 确保临时表空间、日志目录有足够空间,避免因磁盘满导致故障。
- 用
-
处理网络与权限问题:
- 检查防火墙是否放行数据库端口(默认5432),用
ping或telnet测试网络连通性。 - 确认PostgreSQL用户对数据目录、配置文件有正确权限(如
/var/lib/pgsql的读写权限)。
- 检查防火墙是否放行数据库端口(默认5432),用
-
使用工具辅助排查:
pgBadger:分析日志生成性能、错误报告。pg_dump/pg_restore:备份与恢复数据,用于数据损坏时的修复。
参考来源: