synchronous_standby_names
synchronous_standby_names
是一个 配置参数,用于指定支持同步复制的备机服务器列表。
synchronous_standby_names
在 PostgreSQL 9.1 中添加。
默认值
synchronous_standby_names
的默认值为:''
(空字符串)
用法
默认情况下,PostgreSQL 的流式复制是异步的,这意味着如果主服务器崩溃,一些提交到主服务器的事务可能尚未复制到备机。
如果通过在 synchronous_standby_names
中指定一个或多个备机的名称来启用同步复制,则主服务器上的事务将不会被标记为已提交,直到它们在至少一个备机上得到确认。这为数据提供了额外的保护,但可能会导致提交速度变慢。
请注意,与大多数 GUC 不同,synchronous_standby_names
可以使用类似 SQL 的语法进行配置,以细粒度地指定同步复制行为。以下部分描述了不同类型的语法。
基本语法
原始的基本语法只是一个用逗号分隔的备机名称列表
standy_name
[, ...]
将从该列表中选择一个备机作为同步备机。选择优先级由列表中名称的顺序决定。此语法从 PostgreSQL 9.1 开始可用。
示例配置
synchronous_standby_names
='node2
,node3
'
[FIRST] num_sync(...) 语法
从 PostgreSQL 9.6 开始,可以使用此语法指定需要从其中确认提交的主服务器上的提交之前,需要多少个同步备机确认。
[FIRST
]num_sync
(standy_name
[, ...])
其中 num_sync
是一个整数,指定从提供的列表中选择的同步备机的数量。
关键字 FIRST
(从 PostgreSQL 10 开始可用)是可选的,并且区分大小写。
示例配置
synchronous_standby_names
='FIRST
2
(node2
,node3
,node4
)'
这意味着需要两个指定的三个备机可用。备机根据其指定的顺序进行选择,即列表中名称出现较早的备机具有更高的优先级,并将被视为同步备机。其他备机将被视为潜在的同步备机。
请注意,num_sync
值为 1
等效于原始的基本语法,即
synchronous_standby_names
='1
(node2
,node3
)'
等效于上一节中的示例。
ANY num_sync(...) 语法
从 PostgreSQL 10 开始,可以使用 ANY
关键字指定基于仲裁的同步复制
ANY
num_sync
(standy_name
[, ...])
这要求在事务提交之前,至少有指定的数量的命名备机确认复制。
关键字 ANY
区分大小写。
示例配置
synchronous_standby_names
='ANY
2
(node2
,node3
,node4
)'
备机命名
在 synchronous_standby_names
中指定的备机名称对应于在各个备机用于连接主服务器的 conninfo
字符串中设置的 application_name
参数。如果未显式设置,则将使用备机的 cluster_name
(PostgreSQL 12 及更高版本),否则将使用字符串 walreceiver
。备机连接使用的实际 application_name
可以从备机 pg_stat_replication
条目中相同名称的列中确定。
请注意,在 synchronous_standby_names
中指定的备机名称将被视为不区分大小写。
可以提供通配符字符 *
来匹配 pg_stat_replication
中存在的任何备机的 application_name
。
覆盖 synchronous_standby_names
要覆盖同步复制,各个事务可以将 synchronous_commit
设置为 local
或 off
。
按 PostgreSQL 版本分列的详细信息
synchronous_standby_names (PostgreSQL 17)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 16)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 15)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 14)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 13)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 12)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 11)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 10)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 9.6)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 同步备机的数量以及潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 9.5)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 | |
待重启 | false |
synchronous_standby_names (PostgreSQL 9.4)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 |
synchronous_standby_names (PostgreSQL 9.3)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 |
synchronous_standby_names (PostgreSQL 9.2)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 |
synchronous_standby_names (PostgreSQL 9.1)
设置 | |
单位 | |
类别 | 复制 / 主服务器 |
简短描述 | 潜在同步备机的名称列表。 |
额外描述 | |
上下文 | sighup |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | |
启动值 | |
重置值 | |
源文件 | |
源代码行 |
更改历史记录
- PostgreSQL 10
- 添加了支持基于仲裁的同步复制的
FIRST
和ANY
语法(提交 3901fd70)
- 添加了支持基于仲裁的同步复制的
- PostgreSQL 9.6
- 添加了
num_sync(...)
语法(提交 989be081)
- 添加了
- PostgreSQL 9.1
- 添加(提交 a8a8a3e0)
参考文献
- PostgreSQL 文档: synchronous_standby_names