当前位置: 首页 > news >正文

PostgreSQL 常用日志

PostgreSQL 常用日志详解

PostgreSQL 提供了多种日志类型,用于监控数据库活动、排查问题和优化性能。以下是 PostgreSQL 中最常用的日志类型及其配置和使用方法。

一、主要日志类型

日志类型文件位置主要内容用途
服务器日志postgresql-<日期>.log服务器运行状态、错误信息监控服务器状态、排查错误
WAL 日志pg_wal/ 目录预写式日志 (Write-Ahead Logging)崩溃恢复、时间点恢复
CSV 日志postgresql-<日期>.csv结构化日志数据日志分析、自动化处理
审计日志自定义位置用户活动记录安全审计、合规性检查

二、服务器日志配置

1. 基本配置 (postgresql.conf)

# 日志收集开关
logging_collector = on# 日志文件位置
log_directory = 'pg_log'# 日志文件名模式
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'# 日志文件大小限制
log_rotation_size = 100MB# 日志保留天数
log_rotation_age = 1d

2. 日志级别控制

# 最小日志级别 (DEBUG5, DEBUG4, DEBUG3, DEBUG2, DEBUG1, INFO, NOTICE, WARNING, ERROR, LOG, FATAL, PANIC)
log_min_messages = warning# 客户端语句日志级别
log_min_error_statement = error# 记录执行时间超过此值的语句 (毫秒)
log_min_duration_statement = 1000

三、常用日志分析场景

1. 查看慢查询

-- 查找执行时间最长的查询
SELECT query, total_time, calls, mean_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

2. 错误日志分析

# 查找错误日志中的关键错误
grep -i "error" /var/lib/postgresql/data/pg_log/postgresql-*.log# 查找特定时间段的日志
sed -n '/2023-10-01 14:00:00/,/2023-10-01 15:00:00/p' postgresql.log

3. 连接问题排查

# 查找连接失败记录
grep "could not connect" /var/lib/postgresql/data/pg_log/postgresql-*.log# 查找连接过多警告
grep "too many clients already" /var/lib/postgresql/data/pg_log/postgresql-*.log

四、WAL 日志管理

1. 检查 WAL 日志状态

-- 查看当前WAL日志位置
SELECT pg_current_wal_lsn();-- 查看WAL日志归档状态
SELECT * FROM pg_stat_archiver;

2. 清理 WAL 日志

-- 手动触发WAL日志清理
SELECT pg_switch_wal();-- 设置WAL保留策略 (v13+)
ALTER SYSTEM SET wal_keep_size = '1GB';

五、审计日志配置

1. 使用 pgaudit 扩展

-- 安装扩展
CREATE EXTENSION pgaudit;-- 配置审计规则
ALTER SYSTEM SET pgaudit.log = 'read, write, ddl';-- 审计特定表
ALTER SYSTEM SET pgaudit.log_relation = 'on';

2. 查看审计日志

# 查找DDL操作
grep "DDL" /var/lib/postgresql/data/pg_log/postgresql-*.log# 查找数据修改操作
grep "UPDATE\|INSERT\|DELETE" /var/lib/postgresql/data/pg_log/postgresql-*.log

六、日志维护最佳实践

  1. 定期轮转日志:配置合理的日志文件大小和保留时间
  2. 集中管理日志:考虑使用日志收集工具如 ELK Stack
  3. 监控关键指标:设置日志告警规则
  4. 安全存储:确保日志文件有适当权限
  5. 性能平衡:详细日志会影响性能,根据需求调整级别

七、常用日志相关命令

1. 实时查看日志

tail -f /var/lib/postgresql/data/pg_log/postgresql-*.log

2. 日志文件分析工具

# 使用pgBadger分析日志
pgbadger /var/lib/postgresql/data/pg_log/postgresql-*.log -o report.html# 使用awk统计错误类型
awk '/ERROR:/ {count[$0]++} END {for (msg in count) print count[msg], msg}' postgresql.log | sort -nr

通过合理配置和分析这些日志,可以有效监控 PostgreSQL 数据库的健康状态,快速定位问题并优化性能。

相关文章:

  • Python数据分析与机器学习实战:从数据到洞察的完整路径
  • Java中常见API的分类概述及示例
  • Python爬虫实战:获取xie程网近两周长沙飞敦煌机票数据,为51出行做参考
  • Go语言中 defer 使用场景及深度注意事项指南
  • 如何应对政策变化导致的项目风险
  • 【Linux】静态库 动态库
  • Python 设计模式:访问者模式
  • AI+直播电商:短视频商城APP开发如何实现智能化推荐?
  • element-ui、element-plus表单resetFields()无效的坑
  • el-date-picker时间范围 赋值报错问题
  • [创业之路-378]:企业法务 - 企业经营中有哪些触发刑法的风险?如何预防?
  • 雪花算法(JAVA单例不用修改版)
  • ref绑定函数
  • 人工智能赋能医疗影像诊断:开启精准医疗新时代
  • 【Web】TGCTF 2025 题解
  • 植物大战僵尸杂交版v3.6最新版本(附下载链接)
  • Java的反射机制(曼波超易懂图文版)
  • 【inlining failed in call to always_inline ‘_mm_aesenclast_si128’】
  • Smart AI:在AI浪潮中崛起的智能NFT生态革命者
  • 【Python进阶】正则表达式实战指南:从基础到高阶应用
  • 专访|前伊核谈判顾问:伊朗不信任美国,任何核协议都会有中俄参与
  • 张又侠董军分别与印尼国防部长会见会谈
  • 直播中抢镜“甲亢哥”的翁东华卸任了!此前任文和友小龙虾公司董事
  • A股三大股指涨跌互现:黄金股再度走强,两市成交10900亿元
  • 延安市委副书记马月逢已任榆林市委副书记、市政府党组书记
  • 全国类脑智能产业创新发展推进会在上海召开