在 Azure Database for PostgreSQL 灵活服务器中管理 PostgreSQL 扩展
适用于:
Azure Database for PostgreSQL 灵活服务器
Azure Database for PostgreSQL 灵活服务器让你可以使用扩展来扩展数据库功能的能力。 扩展在单个包中捆绑多个相关 SQL 对象,可以使用命令在数据库中加载或删除该包。 将包加载到数据库中后,扩展会如同内置功能一样运行。
在 Azure Database for PostgreSQL 灵活服务器中安装扩展之前,必须允许列出这些扩展以供使用。
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
从资源菜单的“设置”部分下,选择“服务器参数”。
从 azure.extensions
参数中可用的扩展中选择要加入允许列表的扩展,然后选择“保存”。
可以通过 CLI 参数集命令允许扩展。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>
使用 ARM 模板:
以下示例在名称为 postgres-test-server
以下内容的服务器上向允许列表 dblink
、dict_xsyn
、pg_buffercache
添加扩展:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"flexibleServers_name": {
"defaultValue": "postgres-test-server",
"type": "String"
},
"azure_extensions_set_value": {
"defaultValue": " dblink,dict_xsyn,pg_buffercache",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
"apiVersion": "2021-06-01",
"name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
"properties": {
"value": "[parameters('azure_extensions_set_value')]",
"source": "user-override"
}
}
]
}
shared_preload_libraries
是一个服务器配置参数,用于确定 Azure Database for PostgreSQL 灵活服务器启动时必须加载哪些库。 必须通过此参数加载使用共享内存的所有库。 如果需要将扩展添加到共享预加载库,请执行以下步骤:
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
从资源菜单的“设置”部分下,选择“服务器参数”。
在 shared_preload_libraries
的值中包含要添加的库,然后选择“保存”。
由于 shared_preload_libraries
是静态服务器参数,因此需要重启服务器,使更改生效。
可以使用 CLI 参数集命令设置 shared_preload_libraries
。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --name shared_preload_libraries --value <extension_name>,<extension_name>
可以使用 CLI 参数集命令重启服务器。
az postgres flexible-server restart --resource-group <resource_group> --name <server>
将某个扩展加入允许列表后,如果该扩展需要它,则还可以将其加入 shared_load_libraries
,在要使用它的每个数据库中创建或安装它。
若要创建扩展,用户必须是 azure_pg_admin
角色的成员。
运行 CREATE EXTENSION 命令以创建或安装特定扩展。 此命令将打包的对象加载到数据库中。
备注
Azure Database for PostgreSQL 灵活服务器中提供的第三方扩展是开源许可代码。 我们不提供任何具有高级或专有许可模型的第三方扩展或扩展版本。
Azure Database for PostgreSQL 灵活服务器实例支持关键 PostgreSQL 扩展的子集,如按名称列出的支持扩展或按 PostgreSQL 的版本列出的支持扩展中所列。 还可以通过运行 SHOW azure.extensions;
获取此信息。 Azure Database for PostgreSQL 灵活服务器不支持未包含在这些列表中的扩展。 不能在 Azure Database for PostgreSQL 灵活服务器中创建或加载自己的扩展。
若要删除扩展,请先确保将其加入允许列表。
若要删除扩展,用户必须是 azure_pg_admin
角色的成员。
运行 DROP EXTENSION 命令以删除或卸载特定扩展。 此命令将从数据库中删除在扩展中打包的对象。
若要将已安装的扩展更新到 Azure 支持的最新发布版本,请使用以下 SQL 命令:
ALTER EXTENSION <extension_name> UPDATE;
此命令允许用户手动升级到 Azure 批准的最新版本,简化了数据库扩展的管理,增强了兼容性和安全性。
虽然更新扩展很简单,但也存在一定的限制:
若要列出当前安装在数据库上的扩展,请使用以下 SQL 命令:
SELECT * FROM pg_extension;
Azure Database for PostgreSQL 中的“azure_pg_admin”用户不允许将扩展“%s”加入允许列表
运行引用未加入允许列表的扩展的 CREATE EXTENSION
或 DROP EXTENSION
命令时,或者运行命令所在的 Azure Database 灵活服务器尚不支持的扩展时,会出现此错误。
只有“azure_pg_admin”成员才允许使用 CREATE EXTENSION
当运行 CREATE EXTENSION
命令的用户不是 azure_pg_admin
角色的成员时,将发生此错误。
只有“azure_pg_admin”成员才允许使用 DROP EXTENSION
当运行 DROP EXTENSION
命令的用户不是 azure_pg_admin
角色的成员时,将发生此错误。