你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
配置 Azure Database for PostgreSQL 灵活服务器中的服务器参数
适用于: Azure Database for PostgreSQL 灵活服务器
你可以列出、显示和更新 Azure Database for PostgreSQL 灵活服务器实例的配置参数。
参数自定义
可以使用各种方法和级别根据特定需求来自定义参数。
全局级别
若要查看服务器参数的当前配置值或在实例或服务器级别全局更改它们,可以使用 Azure 门户中的“服务器参数”页。 还可以使用 CLI、REST API、Azure 资源管理器模板或第三方 IaC 工具与服务器参数全局交互。
注意
Azure Database for PostgreSQL 是托管数据库服务,因此用户没有主机或操作系统访问权限,无法查看或修改配置文件(例如 postgresql.conf)。 这些文件的内容会根据所做的参数更改自动更新。
在同一篇文章中,可以找到与服务器参数全局交互的各个部分,以便:
精细级别
可以在更精细的级别调整参数。 这些调整将覆盖全局设置的值。 它们的范围和持续时间取决于你创建它们的级别:
数据库级别:使用 ALTER DATABASE
命令进行特定于数据库的配置。
角色或用户级别:使用 ALTER USER
命令进行以用户为中心的设置。
函数、过程级别:定义函数或过程时,可以指定或更改在调用函数时使用的配置参数。
表级别:例如,可在此级别修改与自动清理相关的参数。
会话级别:在单个数据库会话的生命周期内,可以调整特定参数。 PostgreSQL 通过以下 SQL 命令促进这种调整:
- 使用
SET
命令进行特定于会话的调整。 这些更改将作为当前会话期间的默认设置。 要访问这些更改,可能需要特定的 SET
权限,并且上述可修改参数和只读参数的限制不适用。 相应的 SQL 函数为 set_config(setting_name, new_value, is_local)
。
- 使用
SHOW
命令检查现有参数设置。 其 SQL 函数等效项为 current_setting(setting_name text)
。
列出所有服务器参数
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单的“设置”部分下,选择“服务器参数”。 该页显示参数列表、其配置值、可选单位、它们是否为只读/动态/静态及其说明。
选择或将鼠标悬停在“i”(信息)图标上,以查看每个参数可以设置的允许值。 取决于参数的数据类型(可以是字符串、枚举、整数、布尔值、数值、集),允许的值会有所不同。 它分别可以是正则表达式、值列表、整数范围、on/off、小数范围、值列表。
实例支持的服务器参数列表由数百个项组成,以每页 20 个项的页面形式呈现。 在页面底部,有一个控件通知你你所处的位置。 还有一个分页控件,可用于浏览整个页面集。
如果需要,请使用“搜索以筛选项...”文本框将列表缩小到名称或说明中包含搜索词的那些参数。
“参数类型”列可以显示每个参数的以下任何值:
参数类型 |
说明 |
静态 |
要求服务器重启以使更改生效。 |
动态 |
无需重启服务器实例即可更改。 但是,更改仅适用于修改后建立的新连接。 |
只读 |
用户无法配置它们,因为它们在维护服务的可靠性、安全性或其他操作方面起着关键作用。 |
可以通过 az postgres flexible-server parameter list 命令列出服务器中的所有服务器参数。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server>
每个参数具有以下特性:
Attribute name |
说明 |
可能的值 |
allowedValues |
描述参数允许的值。 |
根据 dataType 的值,可以是正则表达式(字符串)、值列表(枚举)、整数范围(整数)、on/off(布尔值)、小数范围(数值)、值列表(集)。 |
dataType |
用于参数的数据的类型。 |
可以是以下任意一种:boolean 、enumeration 、integer 、numeric 、set 、string 。 |
defaultValue |
部署新服务器时分配给参数的值。 |
因数据类型和参数允许的值而异。 |
说明 |
参数控件的简要说明。 |
文本说明,每个参数不同。 |
documentationLink |
指向参数文档的页面的 URL 地址。 |
某种形式的 URL。 |
id |
唯一引用灵活服务器的此特定实例中的服务器参数的资源标识符。 |
遵循模式 /subscriptions/<subscription_identifier>/resourceGroups/<resource_group_name>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<server_name>/configurations/<parameter_name> 的字符串。 |
isConfigPendingRestart |
指示 value 特性中当前设置的值是否需要服务器重启才能生效。 |
true :对于值已更改的参数,并且由于它们不是动态的(即它们是静态的),需要服务器重启才能使更改生效。 false :对于其当前在 value 特性中设置的值有效且未在等待服务器重启以生效的参数。 |
isDynamicConfig |
指示分配给参数的值中的更改是否不需要或需要服务器重启,以使更改生效。 |
true :对于其值发生更改时,更改会立即生效的参数。 false :对于其值发生更改时,需要服务器重启才能使更改生效的参数。 |
isReadOnly |
指示为参数分配的默认值是否可以或不可以由用户替代。 |
true :对于指定为只读且用户无法更改的参数。 false :对于指定为读写,且用户可以将其设置为与默认值不同的值的参数。 |
name |
参数的名称。 |
服务器参数的任何有效名称。 |
resourceGroup |
部署服务器的资源组的名称。 |
Azure 中资源组的任何有效名称。 |
source |
当前为参数设置的值的来源。 |
system-default 或者 user-override ,具体取决于 value 是设置为系统默认值还是由用户替代。 |
单位 |
描述表达参数的单位的可选文本。 |
当设置为某项时,它可以是以下任意一个:8KB 、bytes 、days 、KB 、megabytes 、microseconds 、milliseconds 、minutes 、percentage 、seconds 。 |
value |
当前分配给参数的值。 |
因数据类型和参数允许的值而异。 |
列出具有修改后的默认值的服务器参数
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单中的“设置”部分下,选择“服务器参数”,然后选择“修改后”选项卡。该页显示当前设置的值偏离默认值的参数的列表。
可以通过 az postgres flexible-server parameter list 命令列出其值较默认值有修改的所有服务器参数。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?value!=defaultValue && isReadOnly==\`false\` && name!='temp_tablespaces' && name!='vacuum_cost_page_miss'] | [].name"
注意
以前的 CLI 命令不考虑修改后的服务器参数,它们被指定为只读(temp_tablespaces
和 vacuum_cost_page_miss
),遵循与 Azure 门户中的“服务器参数”页的完全相同的条件。
列出读写静态服务器参数
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单中的“设置”部分下,选择“服务器参数”,然后选择“静态”选项卡。该页显示读写参数的列表,对于这些参数,如果更改了其值,则需要重启服务器以使新值生效。
可以通过 az postgres flexible-server parameter list 命令列出所有值更改后需要重启以使更改生效的服务器参数。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isDynamicConfig==\`false\` && isReadOnly==\`false\`] | [].name"
列出读写动态服务器参数
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单中的“设置”部分下,选择“服务器参数”,然后选择“动态”选项卡。该页显示读写参数的列表,对于这些参数,如果更改了其值,则需要重启服务器以使新值生效。
可以通过 az postgres flexible-server parameter list 命令列出所有值更改后不需要重启以使更改生效的服务器参数。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isDynamicConfig==\`true\` && isReadOnly==\`false\`] | [].name"
列出只读服务器参数
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单中的“设置”部分下,选择“服务器参数”,然后选择“只读”选项卡。该页显示只读参数的列表。
可以通过 az postgres flexible-server parameter list 命令列出指定为只读的所有服务器参数,这些参数的值不能由用户更改。
az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isReadOnly==\`true\`] | [].name"
设置一个或多个服务器参数的值
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单的“设置”部分下,选择“服务器参数”。
找到要更改其当前值的读写参数,将它们设置为新的所需值,请注意会有一条信息性消息指示尚未保存多少个服务器参数更改,然后选择“保存”。
如果更改的任何参数的列“参数类型”等于“静态”,则服务器需要重启才能使更改生效。 在这种情况下,会弹出一个对话框,你可以根据需要进行选择:
- 保存并重启:如果要保留对值已修改的所有参数所做的所有更改,并在之后立即重启服务器以使对静态参数所做的任何更改生效。
- 仅保存:如果要保留对设置的值已更改的所有参数所做的所有更改,但希望将服务器重启推迟到以后的时间。 在未完成服务器重启操作之前,对任何静态服务器参数所做的更改都不会生效。
- 取消:尚不实现任何更改。
可以通过 az postgres flexible-server parameter set 命令设置服务器参数的值。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --source user-override --name <parameter> --value <value>
如果有任何更改后的参数需要重启以使更改生效,可以使用以下脚本有条件地重启服务器:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
将服务器参数还原为其默认值
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单的“设置”部分下,选择“服务器参数”。
找到要将其当前值还原为其默认值的读写参数,选择屏幕最右侧的省略号,然后选择“重置为默认值”。
重要
对于指定为只读的参数,选择省略号时不会弹出“重置为默认值“菜单选项。
如果尝试重置为默认值的参数的列“参数类型”等于“静态”,则服务器需要重新启动以使更改生效。 在这种情况下,会弹出一个对话框,你可以根据需要进行选择:
- 保存并重启:如果要保留对值已修改的所有参数所做的所有更改,并在之后立即重启服务器以使对静态参数所做的任何更改生效。
- 仅保存:如果要保留对设置的值已更改的所有参数所做的所有更改,但希望将服务器重启推迟到以后的时间。 在未完成服务器重启操作之前,对任何静态服务器参数所做的更改都不会生效。
- 取消:尚不实现任何更改。
可以通过 az postgres flexible-server parameter set 命令将服务器参数的值还原为其默认值。
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --source user-override --name <parameter> --value $(az postgres flexible-server parameter show --resource-group <resource_group> --server-name <server> --name <parameter> --output tsv)
如果更改后的参数需要重启以使更改生效,可以使用以下脚本有条件地重启服务器:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
将所有服务器参数还原为其默认值
使用 Azure 门户:
选择 Azure Database for PostgreSQL 灵活服务器实例。
在资源菜单的“设置”部分下,选择“服务器参数”。
选择“全部重置为默认值”。
如果对于当前值与其默认值不匹配的任何参数,列“参数类型”等于“静态”,则服务器需要重启以使更改生效。 在这种情况下,会弹出一个对话框,你可以根据需要进行选择:
- 保存并重启:如果要保留对值已修改的所有参数所做的所有更改,并在之后立即重启服务器以使对静态参数所做的任何更改生效。
- 仅保存:如果要保留对设置的值已更改的所有参数所做的所有更改,但希望将服务器重启推迟到以后的时间。 在未完成服务器重启操作之前,对任何静态服务器参数所做的更改都不会生效。
- 取消:尚不实现任何更改。
可以通过 az postgres flexible-server parameter set 命令将所有读写服务器参数的值还原为其默认值。
parameters_to_reset=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?value!=defaultValue && isReadOnly==\`false\`].name" -o tsv)
for parameter_to_reset in $parameters_to_reset; do
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --name $parameter_to_reset --value $(az postgres flexible-server parameter show --resource-group <resource_group> --server-name <server> --name $parameter_to_reset --output tsv)
done
如果有任何更改后的参数需要重启以使更改生效,可以使用以下脚本有条件地重启服务器:
parameters_requiring_restart=$(az postgres flexible-server parameter list --resource-group <resource_group> --server-name <server> --query "[?isConfigPendingRestart==\`true\`] | length(@)")
if [ "$parameters_requiring_restart" -gt 0 ]; then
az postgres flexible-server restart --resource-group <resource_group> --name <server>
fi
使用时区参数
如果你打算在 PostgreSQL 中使用日期和时间数据,请确保为你的位置设置正确的时区。 所有需要显示时区的日期和时间均以 UTC 形式存储在 PostgreSQL 内部。 它们会转换为 TimeZone 服务器参数指定的时区中的当地时间,然后再显示给客户端。 可以在“服务器参数”页上编辑此参数。
PostgreSQL 允许以三种不同的形式指定时区:
完整的时区名称,例如 America/New_York。 pg_timezone_names 视图中列出了已识别的时区名称。
在 psql 中查询此视图并获取时区名称列表的示例:
select name FROM pg_timezone_names LIMIT 20;
应看到如下所示的结果集:
name
-----------------------
GMT0
Iceland
Factory
NZ-CHAT
America/Panama
America/Fort_Nelson
America/Pangnirtung
America/Belem
America/Coral_Harbour
America/Guayaquil
America/Marigot
America/Barbados
America/Porto_Velho
America/Bogota
America/Menominee
America/Martinique
America/Asuncion
America/Toronto
America/Tortola
America/Managua
(20 rows)
时区的缩写,例如 PST。 此类规范仅定义相对于 UTC 的特定偏移量,而完全时区名称则意味着一组夏令时转换日期规则。 pg_timezone_abbrevs 视图中列出了已识别的缩写 在 psql 中查询此视图并获取时区缩写列表的示例:
select abbrev from pg_timezone_abbrevs limit 20;
应看到如下所示的结果集:
abbrev|
------+
ACDT |
ACSST |
ACST |
ACT |
ACWST |
ADT |
AEDT |
AESST |
AEST |
AFT |
AKDT |
AKST |
ALMST |
ALMT |
AMST |
AMT |
ANAST |
ANAT |
ARST |
ART |
除了时区名称和缩写,PostgreSQL 还接受 STDoffset 或 STDoffsetDST 形式的 POSIX 样式的时区规范,其中 STD 是区域缩写,offset 是 UTC 以西以小时为单位的偏移数值,DST 是一个可选的夏令时区域缩写,假定它代表比给定偏移量提前一个小时。
与 Azure Database for PostgreSQL 产品团队分享你的建议和 bug。
相关内容