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.
将其更改为批处理作业的一部分
我们在 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.