日志默认存放在 /var/log/postgresql/ 目录,常见文件包括:
postgresql-{版本号}-main.log:主数据库日志。pg_wal/ 目录:预写式日志(WAL),用于崩溃恢复。sudo tail -f postgresql-{版本号}-main.log。grep -i "ERROR" postgresql-*.log。错误与异常排查
grep -i "error" /var/log/postgresql/*.log。could not connect 或 too many clients already。慢查询监控
postgresql.conf 中设置 log_min_duration_statement = 1000(记录执行时间>1秒的查询),重启服务后查看日志。pg_stat_statements 扩展分析高频慢查询:SELECT query, total_time, calls FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
```。
性能与状态分析
SELECT * FROM pg_stat_activity;。SELECT * FROM pg_locks;。sudo apt-get install pgbadger
pgbadger /var/log/postgresql/*.log -o report.html
```。
logrotate 配置自动压缩旧日志(如保留7天)。pgAudit 扩展记录敏感操作(如DDL、DML)。| 参数 | 作用 | 示例 |
|---|---|---|
log_min_messages |
控制日志级别(DEBUG到PANIC) | log_min_messages = warning |
log_directory |
指定日志存储路径 | log_directory = 'pg_log' |
log_filename |
定义日志文件名格式 | log_filename = 'postgresql-%Y-%m-%d.log' |
通过以上步骤,可高效分析PostgreSQL日志,快速定位故障或优化性能。
参考来源: