未加载 Amazon Postgres RDS pg_stat_statements

Det*_*dle 5 postgresql amazon rds amazon-web-services

我配置了我的 RDS Postgres 9.6.1 实例,以便通过“shared_preload_libraries”参数加载 pg_stat_activity

shared_preload_libraries=pg_stat_statements,pg_hint_plan
Run Code Online (Sandbox Code Playgroud)

我重新启动了我的实例,然后检查是否可以加载 pg_stat_statements。但我收到错误:

[55000] ERROR: pg_stat_statements must be loaded via shared_preload_libraries
Run Code Online (Sandbox Code Playgroud)

命令

SHOW shared_preload_libraries;
Run Code Online (Sandbox Code Playgroud)

不显示 pg_stat_statements 库。

因此上述错误仍然存​​在。

其他人有同样的问题吗?

谢谢,德特莱夫

Tim*_*e A 5

今天遇到了同样的问题。

结果我只需要重新启动数据库(通过 CLI 或 Web 界面)。

正如AWS 文档中提到的:

当您更改静态参数并保存数据库参数组时,参数更改将在您手动重启数据库实例后生效


Vao*_*sun 4

更新

我自己尝试过。添加到参数->shared_preload_libraries 值:pg_stat_statements,pg_hint_plan。单击“保存更改”,同意“立即应用”。确实没有效果。当我检查数据库参数组时- 它显示已修改的组,但pg_stat_statements无法使用。所以我认为 JS 不好并尝试aws cli

aws rds describe-db-instances --db-instance-identifier p5
Run Code Online (Sandbox Code Playgroud)

它表明该组确实没有改变!:

"OptionGroupMemberships": [
    {
      "Status": "in-sync",
      "OptionGroupName": "default:postgres-9-5"
    }
  ],
Run Code Online (Sandbox Code Playgroud)

所以我做了:

aws rds modify-db-instance --db-parameter-group-name with-contrib --apply-immediately --db-instance-identifier p5
aws rds reboot-db-instance --db-instance-identifier p5
aws rds describe-db-instances --db-instance-identifier p5
Run Code Online (Sandbox Code Playgroud)

它被改变了。所以我尝试:

mon=> create extension pg_stat_statements ;
CREATE EXTENSION
mon=> select count(*) from pg_stat_statements;
 count
-------
    26
(1 row)
Run Code Online (Sandbox Code Playgroud)

瞧。不确定是否是 Chrome(版本 57.0.2987.133(64 位))功能或 JS 故障,或者我没有获得直观的点击步骤,但我也未能应用更改。请尝试aws cli看看是否成功。

我认为PREVIOUS String 需要引号。

字符串:通常,将值括在单引号中,将值内的任何单引号加倍。但是,如果值是简单的数字或标识符,则通常可以省略引号。

所以也许这样设置shared_preload_libraries会有所帮助:

shared_preload_libraries = 'pg_stat_statements,pg_hint_plan'
Run Code Online (Sandbox Code Playgroud)

https://www.postgresql.org/docs/current/static/runtime-config-client.html

共享预加载库(字符串)

该变量指定在服务器启动时预加载的一个或多个共享库。该参数只能在服务器启动时设置。如果找不到指定的库,服务器将无法启动。