问题描述
如何配置RDS for PostgreSQL 日志相关参数,需要注意什么?
问题分析
在PostgreSQL中,最重要的日志相关的参数有两个,分别为
- log_statement[1]
- log_min_duration_statement
其中 log_statement 决定了您要记录什么类型的SQL语句,log_min_duration_statement 控制了记录时间的阈值。
解决方案
1.log_statement
log_statement 控制需要记录的SQL语句类型,如DDL,mod, 以及all, 具体解释如下:
-
ddl 记录所有数据定义语言 (DDL) 语句,例如 CREATE、ALTER 和 DROP。
-
mod 记录所有 DDL 和数据修改语言 (DML) 语句,例如 INSERT、UPDATE 和 DELETE。
-
all 记录所有查询,这个参数会忽略log_min_duration_statement的设定。
test=# show log_statement;
log_statement
---------------
ddl
(1 row)
注 :如果您使用all,在业务繁忙的场景下,日志量可能是巨大的,建议您谨慎评估业务上是否需要使用all,同时监控磁盘占用空间
2.log_min_duration_statement
log_min_duration_statement 可以以ms为单位去设置语句执行时间的记录阈值,如果该值设置为500,则以为这执行时间超过0.5s的SQL语句会被记录到PostgreSQL 日志中,如果设置为0,会默认记录所有的SQL语句。同log_min_duration_statement 参数与log_statement 不会相互干扰,也不会互相依赖。
test=# show log_min_duration_statement;
log_min_duration_statement
----------------------------
1s
(1 row)
注: 如果您将此参数设置为0,可能消耗大量的存储空间,建议您监控磁盘存储空间。避免存储空间被占满导致业务受损
参考文档
[1] https://www.postgresql.org/docs/11/runtime-config-logging.html