卸载扩展
如何从安全地集群中移除扩展插件?
Module:
移除扩展
要卸载某个扩展,通常需要执行 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
中定义的扩展包名映射。