postgresql - RDS Postgres 更改 SQL log_statement 值

标签 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 中更改此设置

最佳答案

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

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

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

这意味着您不能在数据库连接中动态更改设置,例如在 pl/pgsql 函数中,但您可以使用 the AWS API 将其作为批处理作业的一部分进行更改或 official CLI client .

关于postgresql - RDS Postgres 更改 SQL log_statement 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997894/

相关文章:

postgresql - AWS RDS 上的高 CPU 使用率 - Postgres

sql - Postgres Like 语句无法正确阅读

c++ - 编译时优化 - 从发布二进制文件中删除调试打印

java - PGBouncer + JDBC 中的 connect_query 设置

java - Tomcat 日志策略

javascript - WebStorm - 如何在 npm 包中找到问题的根源? ( Node :36378) [DEP0005] DeprecationWarning

mysql - AWS RDS 存储已满

php - 使用 Amazon RDS 查询大型 MySQL 表

sql - PostgreSQL:替换数组元素中大于特定限制的值

java - 当一个值依赖于查询中的另一个值时构建复杂的 SQL 查询