我有一个 Amazon Relational Database Service(Amazon RDS)for PostgreSQL 数据库实例。我想解决“错误:<module/extension> 必须通过 shared_preload_libraries 加载”错误。
简短描述
当您使用 Amazon RDS for PostgreSQL 时,可以将共享库预加载到服务器中。这样做您便可加载其他功能或获得性能优势。但是,当您使用模块/扩展时,可能会收到以下错误:
“错误:<module/extension> 必须通过 shared_preload_libraries 加载”
例如,当您查询 pg_stat_statements 时,可能会收到以下错误:
postgres=> SELECT * FROM pg_stat_statements;
ERROR: relation "pg_stat_statements" does not exist
postgres=> CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION
postgres=> SELECT * FROM pg_stat_statements;
ERROR: pg_stat_statements must be loaded via shared_preload_libraries
要解决此错误并查询 pg_stat_statements,请在与您的数据库实例关联的自定义参数组中将 shared_preload_libraries 的值设置为 pg_stat_statements。
修改自定义参数组中参数 shared_preload_libraries 的值,以便在 RDS for PostgreSQL 上使用以下模块/扩展:
- auto_explain
- orafce
- pgaudit
- pglogical
- pg_hint_plan
- pg_prewarm
- pg_similarity
- pg_stat_statements
- pg_transport
- plprofiler
**注意:**您可以修改自定义参数组中的参数值。您无法更改默认数据库参数组中的参数值。如果您对自定义参数组中的参数进行更改,则您的更改将应用于与该参数组关联的所有数据库实例。
解决方法
创建自定义参数组
**注意:**如果您已有自定义参数组,请跳到下一步。
- 登录 Amazon RDS 控制台。
- 在导航窗格中,选择参数组。
- 选择创建参数组。
- 在参数组系列列表中,选择一个数据库参数组系列。
- 在组名框中,输入新数据库参数组的名称。
- 在描述框中,输入新数据库参数组的描述。
- 选择创建。
修改自定义参数组中的参数
- 登录 Amazon RDS 控制台。
- 在导航窗格中,选择参数组。
- 在列表中,选择要修改的参数组。
- 对于参数组操作,选择编辑。
- 更改参数 shared_preload_libraries 的值。
- 选择保存更改。
**注意:**shared_preload_libraries 参数是一个静态参数。当您更改静态参数并保存数据库参数组时,参数更改将在您手动重启数据库实例后生效。
将参数组与数据库实例关联
**注意:**如果您的自定义参数组已经与数据库实例相关联,请跳到下一步。
修改您的数据库实例,以将自定义参数组与您的数据库实例关联。
重启数据库实例
**重要事项:**在更改与数据库实例关联的数据库参数组后,您必须手动重启数据库实例。在数据库实例使用新的数据库参数组之前,您必须执行此操作。
使用 Amazon RDS 控制台重启您的数据库实例。或者,您可以显式调用 RebootDBInstance API 操作(如果数据库实例处于多可用区部署中,则不进行失效转移)。
相关信息
关于 pg_stat_statements 的 PostgreSQL 文档(在 PostgreSQL 网站上)
使用参数组