EDB博客

通过记录PostgreSQL活动更快地识别和解决问题

四月

通过记录PostgreSQL活动更快地识别和解决问题

th南加州Linux Expo SCaLE该活动于3月在加利福尼亚州帕萨迪纳市阳光明媚的地方举行,其中包括PostgreSQL社区成员进行的一系列日间讲座。扩展PostgreSQL中的文本记录最佳实践的墙没有双关语

我的会议涵盖了一些令人震惊的统计数据,我在分析有关记录PostgreSQL活动时的用户习惯时注意到,例如,近一半的用户记录的日志不超过时间戳,因此错过了PostgreSQL必须通过其日志记录提供的许多信息之宝特征

在本文中,我们将介绍我在sCaLE上的演讲的更多重点内容

为什么记录很重要

该日志使DBA系统管理员和开发人员能够识别并解决问题,而日志显示数据库中的活动时,可以通过一些推断来识别应用程序或基础结构组件的问题,例如无关的事务提交回滚或配置错误的密码。方便使用的数据库日志,尤其是在生产型SaaS环境中,使管理员能够识别根本原因的补救措施并更快地解决问题,从而提高正常运行时间和用户满意度。数据库日志还有助于预期将来所需的维护任务,例如环绕防止真空

作为指导原则,PostgreSQL用户应尝试尽可能长时间地记录日志,只要所服务的应用程序不会受到负面影响即可。有人可能会担心,更多日志记录可能导致更多文本需要解析和过滤,但配置正确如下所述,可以记录很多日志而不会受到太大影响

数据库记录时从何处开始

当涉及到PostgreSQL conf文件时,最有用的一个日志参数是日志行前缀。此参数为日志中的每一行添加了固定的信息字符串,从而使信息的排序和过滤更加容易,进而有助于DBA sysadmins和开发人员可以更快地发现问题。尽管有很多选项可以放入此前缀字符串,但Richard的一些最爱是

  • 应用程序名称允许快速参考和过滤
  • u用户名允许按用户名过滤
  • d数据库名称允许按数据库名称过滤
  • r远程主机IP名称w端口可帮助识别主机中的可疑活动
  • p进程ID帮助识别特定的有问题的会话
  • 会话进程日志行可帮助确定会话已完成
  • v x事务ID帮助识别事务运行了哪些查询

使用这些参数,可以搜索特定的关键字,例如ERROR FATAL WARNING PANIC持续时间等,以查明相关的PID或IP地址并确定问题的根源

更多日志以解决PostgreSQL问题

尽管调整日志行前缀是最好的起点,但可以利用其他参数来提高DBA解决问题的机会不得不对每个参数进行调整可能会令人生畏,因此Richard建议将以下内容作为最低限度的工作

  • 日志最小持续时间语句有助于识别慢速查询
  • 日志语句适合审计
  • 日志断开连接有利于审核
  • 日志轮换年龄日志轮换大小适合组织
  • 记录自动抽真空的最小持续时间可深入了解自动抽真空的行为
  • 日志检查点知道检查点之间发生了什么查询
  • 记录临时文件有助于确定工作内存短缺

这些参数使用户可以更深入地了解数据库的活动,尤其是在标识用户登录数据库后崩溃之前运行的最后一条语句时,为什么自动清理不能删除无效的元组(查询可能占用内存并导致操作溢出到磁盘)等等

显而易见,这里的PostgreSQL日志记录功能可以提供很多功能,不应忽视。有关EDB参加的活动以及在何处参加此类演讲的更多信息,点击这里

理查德·日元企业数据库的图片

Richard是EnterpriseDB的高级支持工程师,并支持整个EnterpriseDB产品套件。在加入EnterpriseDB之前,Richard曾是数据库工程师和Web开发人员,主要负责可扩展性和可伸缩性方面的操作。