RDS Postgres 更改 SQL log_statement 值

RDS Postgres change SQL log_statement value

我们在 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 中更改此设置

RDS 使用与普通 Postgres 不同的权限模型,因此 rds_superuser 角色实际上并不拥有 "real" 超级用户拥有的所有权限。实际上,RDS 是一个 "managed" 数据库托管解决方案,完全访问权限将使您能够破坏或损害该管理。相反,此角色被授予 a list of specific permissions.

对于大多数配置,您必须使用 Amazon 所谓的“Parameter Groups”,它通过 AWS 控制台或 API.

进行管理

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

这意味着您无法在数据库连接中动态更改设置,例如在 pl/pgsql 函数中,但您可以使用 the AWS API or official CLI client.

将其更改为批处理作业的一部分