暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

师傅,为什么我找不到pg的日志的?

原创 sjw1933 2024-08-26
203

作者:Digital Observer(施嘉伟)
Oracle ACE Pro: Database
PostgreSQL ACE Partner
11年数据库行业经验,现主要从事数据库服务工作
拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证
ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、国内某高校企业实践指导教师
公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;PGFans:施嘉伟。

背景描述

最近小徒弟在学习pg数据库,因为之前学习的是商业数据库像oracle和sqlserver。突然问了我一个问题,师傅,我怎么找不到pg的数据库日志的?

解答

确实,PostgreSQL 默认情况下未启用日志收集功能,这可能对数据库的调试与监控工作带来不便。该功能的启用与否由 logging_collector 参数控制。为了确保数据库操作的可追溯性,便于问题诊断及系统审计,建议在生产环境中启用此参数。开启日志收集功能后,数据库的日志信息将被保留至文件中,提供关键的运行信息与错误提示,也存在一定的缺点。最明显的问题是,随着时间的推移,日志文件会不断增大,可能导致磁盘空间的过度消耗,尤其是在高负载或长时间运行的系统中。所以要结合其它参数进行调优!

logging_collector默认值

确实,对于一位 Oracle DBA 来说,默认不启用 logging_collector 就像是没有启用数据库的 alert 日志一样,令人难以理解。在 Oracle 中,alert 日志是排查数据库问题的关键工具,任何严重错误、告警和事件都会记录在内。而在 PostgreSQL 中,如果没有启用 logging_collector,类似的日志信息将不会保存在文件中,排查问题时会严重受限。
日志是数据库运维的重要一环,没有它,监控系统健康状态、诊断性能问题、解决错误都变得更加困难。因此,启用日志收集对于保持 PostgreSQL 的可维护性至关重要。

问题延伸:国产pg系数据库是否开日志?

我观察了其他两家国产数据库,分别是polardb开源版和halodb,我们看下他们两家日志是否默认开启。
polardb:
1724683235043.jpg
HaloDB:
3b45858655b8894ee963111b1565cc001.jpg

国产数据库默认启用 logging_collector 功能,这一做法充分体现了对运维需求的重视。日志作为数据库运维的核心工具,通过默认开启日志收集,保障了系统的可监控性与问题诊断能力,显著提升了产品的易用性与可靠性。对于专业用户而言,这种设计简化了数据库管理,避免了日志未开启导致的问题排查困难,展现了国产数据库日趋成熟的产品设计理念。

最佳实践

alter system set logging_collector=on;
alter system set log_destination=‘csvlog’;
alter system set log_filename=‘postgresql-%a.log’;

%a 表示周几的缩写(例如,Mon、Tue、Wed 等),每个日志文件的命名会根据生成的具体日期反映当前的星期几。
这意味着每一天的日志文件名会根据当天是星期几自动命名,且会覆盖前一周同一星期几的日志文件。

alter system set log_truncate_on_rotation=on;
log_truncate_on_rotation:控制日志文件在轮换时是否被截断。如果设置为 on,则在日志轮换时,如果新日志文件的文件名已经存在,该文件将被截断为 0 字节(即覆盖旧日志)。如果设置为 off,则新的日志信息会追加到现有文件中。
on:启用截断功能,即每次轮换时,日志文件会被重写而不是追加。

alter system set log_rotation_age=‘1d’;
执行这个命令会设置日志轮换的时间间隔为 1 天,这样每天都会生成一个新的日志文件。这样可以帮助管理日志文件的大小,并便于归档和审计。

alter system set log_rotation_size=0;
执行这个命令会禁用基于文件大小的轮换机制,只保留基于时间间隔的轮换方式(由 log_rotation_age 控制)。这样,日志文件不会因为文件大小而轮换,仅在指定的时间间隔后进行轮换。

总结

在上述步骤将配置 PostgreSQL 以每天生成新的日志文件,启用 CSV 格式,按周几命名,并在日志轮换时截断文件。通过额外的脚本清理机制,确保系统只保留7天的日志并进行循环覆盖。这种配置方案可以有效管理日志文件,防止磁盘空间的过度消耗。
当然可以导入到数据库中方便查看!
ACEpro_light_1920 × 1080.jpg

最后修改时间:2024-08-29 11:40:17
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

IT邦德
暂无图片 暂无图片
6月前
评论
暂无图片 0
写的真好
6月前
暂无图片 点赞
评论