师傅,为什么我找不到pg数据库日志?
「点击蓝字,关注我吧 」
背景描述
解答
国产数据库默认启用 `logging_collector` 功能,这一做法充分体现了对运维需求的重视。日志作为数据库运维的核心工具,通过默认开启日志收集,保障了系统的可监控性与问题诊断能力,显著提升了产品的易用性与可靠性。对于专业用户而言,这种设计简化了数据库管理,避免了日志未开启导致的问题排查困难,展现了国产数据库日趋成熟的产品设计理念。 0 3 最佳实践
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;
alter system set log_rotation_age='1d'; 执行这个命令会设置日志轮换的时间间隔为 1 天,这样每天都会生成一个新的日志文件。这样可以帮助管理日志文件的大小,并便于归档和审计。
alter system set log_rotation_size=0; 执行这个命令会禁用基于文件大小的轮换机制,只保留基于时间间隔的轮换方式(由 log_rotation_age 控制)。这样,日志文件不会因为文件大小而轮换,仅在指定的时间间隔后进行轮换。
总结
在
上述步骤将配置 PostgreSQL 以每天生成新的日志文件,启用 CSV 格式,按周几命名,并在日志轮换时截断文件。通过额外的脚本清理机制,确保系统只保留7天的日志并进行循环覆盖。这种配置方案可以有效管理日志文件,防止磁盘空间的过度消耗。
当然也可以导入到数据库中方便查看!
END
往期推荐:
探索Klustron数据库:高性能分布式新选择?
初探PolarDB for PostgreSQL开源数据库
半年度总结:技术路上的光芒
Oracle RAC添加节点会遇到哪些问题?
PostgreSQL常见连接报错处理
在看点这里
点击
"阅读原文"
作者: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` 参数控制。为了确保数据库操作的可追溯性,便于问题诊断及系统审计,建议在生产环境中启用此参数。开启日志收集功能后,数据库的日志信息将被保留至文件中,提供关键的运行信息与错误提示,也存在一定的缺点。最明显的问题是,随着时间的推移,日志文件会不断增大,可能导致磁盘空间的过度消耗,尤其是在高负载或长时间运行的系统中。所以要结合其它参数进行调优!
01 logging_collector默认值
我观察了其他两家国产数据库,分别是polardb开源版和halodb,我们看下他们两家日志是否默认开启。
polardb:
HaloDB:
国产数据库默认启用 `logging_collector` 功能,这一做法充分体现了对运维需求的重视。日志作为数据库运维的核心工具,通过默认开启日志收集,保障了系统的可监控性与问题诊断能力,显著提升了产品的易用性与可靠性。对于专业用户而言,这种设计简化了数据库管理,避免了日志未开启导致的问题排查困难,展现了国产数据库日趋成熟的产品设计理念。 0 3 最佳实践
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 控制)。这样,日志文件不会因为文件大小而轮换,仅在指定的时间间隔后进行轮换。
总结
END
往期推荐:
探索Klustron数据库:高性能分布式新选择?
初探PolarDB for PostgreSQL开源数据库
半年度总结:技术路上的光芒
Oracle RAC添加节点会遇到哪些问题?
PostgreSQL常见连接报错处理
在看点这里