温馨提示×

如何调试CentOS PostgreSQL

小樊
32
2026-08-05 00:31:43
栏目: 云计算

CentOS 上调试 PostgreSQL,一般从 服务状态、日志、配置文件、权限、SQL 问题 几个方面入手。下面给你一套从入门到进阶的调试思路,适用于 CentOS 7 / 8 / Rocky / Alma 等系统。


一、确认 PostgreSQL 是否正常运行

1️⃣ 查看服务状态

systemctl status postgresql

或(不同版本)

systemctl status postgresql-15

✅ running 表示正常
❌ failed / inactive 表示服务未启动或异常

2️⃣ 启动 / 重启 / 停止

sudo systemctl start postgresql
sudo systemctl restart postgresql
sudo systemctl stop postgresql

二、查看日志(最重要)

1️⃣ PostgreSQL 日志位置

常见路径:

/var/lib/pgsql/data/log/
/var/lib/pgsql/15/data/log/
/var/log/postgresql/

查看日志:

ls -lh /var/lib/pgsql/data/log/
tail -f /var/lib/pgsql/data/log/postgresql-*.log

2️⃣ Systemd 日志

journalctl -u postgresql -xe

✅ 很多启动失败、端口占用问题都在这里


三、检查配置文件

1️⃣ 主配置文件位置

/var/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/data/pg_hba.conf

2️⃣ 常见错误点

✅ 监听地址

listen_addresses = '*'
port = 5432

✅ 允许远程连接

# pg_hba.conf
host  all  all  0.0.0.0/0  md5

修改后重启:

systemctl restart postgresql

四、检查端口和进程

1️⃣ 端口监听

ss -lntp | grep 5432

netstat -lntp | grep 5432

✅ 说明 PostgreSQL 正在监听

2️⃣ 进程检查

ps aux | grep postgres

五、调试连接问题

1️⃣ 本地连接测试

sudo -u postgres psql

2️⃣ 指定用户和数据库

psql -U postgres -d postgres -h 127.0.0.1

常见错误:

错误 原因
password authentication failed 密码错误
no pg_hba.conf entry 访问策略未允许
could not connect to server 服务未启动

六、调试 SQL / 性能问题

1️⃣ 开启 SQL 日志

# postgresql.conf
log_statement = 'all'
log_min_duration_statement = 200ms

重启后查看日志

2️⃣ 查看慢查询

SELECT * FROM pg_stat_activity;

3️⃣ 查看锁

SELECT * FROM pg_locks;

七、权限 & 数据目录问题(CentOS 常见)

1️⃣ 数据目录权限

ls -ld /var/lib/pgsql/data

✅ 正确权限:

drwx------ postgres postgres

修复:

chown -R postgres:postgres /var/lib/pgsql/data
chmod 700 /var/lib/pgsql/data

2️⃣ SELinux(非常常见)

检查:

getenforce

临时关闭测试:

setenforce 0

如恢复正常,需配置 SELinux 或放通端口:

semanage port -a -t postgresql_port_t -p tcp 5432

八、调试 PostgreSQL 启动失败(经典)

常见原因

  • 数据目录权限错误
  • postgresql.conf 配置错误
  • 端口被占用
  • SELinux
  • 磁盘空间满

快速定位

journalctl -u postgresql -xe
tail -n 100 /var/lib/pgsql/data/log/postgresql-*.log
df -h

九、调试工具推荐

pg_isready
pg_ctl status -D /var/lib/pgsql/data

十、如果你愿意,我可以继续帮你

你可以直接把错误信息贴出来,比如:

  • 启动失败的完整日志
  • psql 报错
  • 连接超时
  • 查询慢

我可以 逐行帮你分析并给出修复命令

0