RDS Postgres更改SQL log_statement值

时间:2017-09-01 10:08:19

标签: postgresql logging rds

我们在RDS上使用Postgres 9.5并且有一个用例在运行批量插入时关闭SQL日志记录。批量插入SQL语句很大,并没有很多记录它的好处,因为我们知道它将比我们设置的log_min_duration花费更多的时间。

this post中所述,我尝试通过psql客户端进行set_config。不幸的是,我被拒绝了。通过psql登录的用户是rds_superuser的成员。

SELECT current_setting('log_statement');
┌─────────────────┐
│ current_setting │
├─────────────────┤
│ mod             │
└─────────────────┘
(1 row)

SELECT set_config('log_statement', 'mod', false);

ERROR:  42501: permission denied to set parameter "log_statement"
LOCATION:  set_config_option, guc.c:5804

关于我们为何获得许可被拒绝的任何想法,其次有人知道是否可以在运行时在RDS上的postgres中更改此设置

1 个答案:

答案 0 :(得分:4)

RDS对vanilla Postgres使用不同的权限模型,因此rds_superuser角色实际上并没有“真正的”超级用户拥有的所有权限。实际上,RDS是一种“托管”数据库托管解决方案,完全访问权限会为您提供破坏或破坏管理的能力。相反,此角色被授予a list of specific permissions

对于大多数配置,您必须使用Amazon通过AWS控制台或API管理的“Parameter Groups”。

logging in Postgres RDS上有一个特定页面,其中提供了使用参数组设置log_statement选项的一些示例。

这意味着您无法在数据库连接中动态更改设置,例如在pl/pgsql函数中,您可以使用the AWS APIofficial CLI client将其更改为批处理作业的一部分。