卸载扩展

如何从安全地集群中移除扩展插件?

移除扩展

要卸载某个扩展,通常需要执行 DROP EXTENSION 语句,例如:

DROP EXTENSION "<extname>";

请注意,如果有其他扩展,或者使用此扩展的数据库对象依赖,您需要首先卸载/删除这些依赖,然后再卸载此扩展;

或者,也可以使用以下语句一次性强制卸载扩展及其依赖:

DROP EXTENSION "<extname>" CASCADE;

注意:CASCADE 选项会删除依赖于此扩展的所有对象,包括数据库对象、函数、视图等,慎用!

并非所有扩展都是通过 CREATE EXTENSION 语句安装的,这些扩展不需要显式执行 DROP EXTENSION 语句,请参考 无需启用的扩展列表


移除默认加载

如果您使用的扩展需要 动态加载(修改了 shared_preload_libraries 参数),您需要首先 修改 shared_preload_libraries 参数。

将扩展名字符串从 shared_preload_libraries 中移除,并重启数据库集群生效后,您方可安全地卸载扩展包。

需要动态加载的扩展,请参考 需要加载的扩展 列表。


卸载扩展包

当你将扩展(逻辑对象)从集群中的 所有数据库 中移除后,您可以安全地卸载此扩展的软件包,Ansible 命令可以方便的帮您做到这一点:

ansible <cls> -m package -a "name=<extname> state=absent"

当然您也可以使用 pig ,或者 apt 或者 yum 的命令直接卸载。

如果您不知道扩展的名称,您可以参考 扩展列表 中的详情,或者参考 roles/node_id/vars 中定义的扩展包名映射。





最后修改 2025-03-21: replace vonng to pgsty (35fb95c)