本文档介绍了系统配置参数中 复制类别的相关参数。
注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数。
这些设置控制流复制特性的行为。服务器将可以是主控服务器或备用服务器。主控机能发送数据,而备用机总是被复制数据的接收者。这些参数主要用于发送服务器和备用服务器,尽管某些只在主服务器上有意义。
此部分参数需在 Master 及任何将要发送复制数据的 Standby 上设置。
指定服务器可以支持的复制槽最大数量。
replica
或更高。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 10 | 1 ~ 262143 | segments;system;restart |
设置可以被复制槽保留的最大 WAL 尺寸(MB)。
-1
,即禁用此功能。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | -1 | -1 ~ INT_MAX/1024 | segments;system;reload |
指定来自备用服务器或流式基础备份客户端的并发连接的最大数量(即同时运行 WAL 发送进程的最大数)。
replica
或更高级别以允许来自备用服务器的连接。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 10 | 0 ~ 262143 | segments;system;restart |
记录事务的提交时间。
| 数据类型 | 默认值 | 设置分类 | | --- | --- | --- | --- | | boolean | off | segments;system;restart |
当此参数被设置为 on
,则会以 0 填充新的 WAL 文件。
off
,当文件被创建时只有最后的字节会被写入,因此它会拥有一个预期的尺寸。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;session;reload;superuser |
指定在备用服务器需要为流复制获取日志段文件的情况下,pg_wal
目录下所能保留的过去日志文件段的最小数目。
wal_keep_segments
个段,发送服务器可以移除一个备用机仍然需要的 WAL 段,在这种情况下复制连接将被中断。最终结果是下行连接也将最终失败(不过,如果在使用 WAL 归档,备用服务器可以通过从归档获取段来恢复)。pg_wal
中保留的文件段的最小数目;系统可能需要为 WAL 归档或从一个检查点恢复保留更多段。0
(缺省),系统不会为备用目的保留任何多余的段,因此备用服务器可用的旧 WAL 段的数量是一个上个检查点位置和 WAL 归档状态的函数。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 64 | 0 ~ INT_MAX | segments;system;reload |
循环利用 WAL 文件。
on
,WAL 文件会以重命名的方式被循环利用,以避免创建新的文件。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | on | segments;session;reload;superuser |
中断那些停止活动超过这个时间量(以毫秒为单位)的复制连接。
0
将禁用超时机制。300000毫秒
,即 5分钟。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 300000 | 0 ~ INT_MAX | segments;session;reload;superuser |
此部分设置在 Standby 服务器上会被略过。
注意!
除了这些参数之外,在 Master 服务器上必须设置合适的 wal_level,并且也启用可选的 WAL 归档。
这个参数指定一个支持同步复制的备用服务器的列表。
application_name
,列表中使用逗号分隔他们。primary_conninfo
设置中,如果设置了,默认是 cluster_name
的设置,否则为 walreceiver
。'*'
匹配任意备用名称。这个参数使用下面的语法之一来指定一个备用服务器列表:
[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]
num_sync
是事务需要等待其回复的同步备用服务器的数量,standby_name
是一个备用服务器的名称。FIRST
以及 ANY
指定从所列服务器中选取同步备用的方法。FIRST
加上 num_sync
指定一种基于优先的同步复制,并且会让事务提交等待,直到它们的 WAL 记录被复制到基于优先级选择的 num_sync
台同步备用机上为止。例如,设置 FIRST 3 (s1, s2, s3, s4)
将导致每次提交都等待来自三台较高优先级的备用机的答复,这三台备用机将从备用服务器 s1、s2、s3 以及 s4 中选出。FIRST
是可选的。ANY
加上 num_sync
指定一种基于规定数量的同步复制,并且会让事务提交等待,直到它们的 WAL 记录被复制到所列出备用服务器中的至少 num_sync
台上为止。例如,设置 ANY 3 (s1, s2, s3, s4)
将导致每次提交会在收到 s1、s2、s3 以及 s4 中任意三台备用服务器的回答后立刻继续下去。FIRST
和 ANY
是大小写不敏感的。如果这些关键词被用作备用服务器的名字,其 standby_name
必须被放在双引号内。FIRST
和 num_sync
等于 1 的第一种语法相同。例如,FIRST 1 (s1, s2)
和 s1, s2 具有相同的含义:s1 或者 s2 会被选中作为同步备用服务器。standby_name
都应该具有合法 SQL 标识符的形式,除非它是 *
。如果必要你可以使用双引号。但是注意在比较 standby_name
和备用机应用程序名称时是大小写不敏感的(不管有没有双引号)。
如果这里没有指定同步备用机名称,那么同步复制不能被启用并且事务提交将不会等待复制。这是默认的配置。即便当同步复制被启用时,个体事务也可以被配置为不等待复制,做法是将 synchronous_commit 参数设置为 local
或 off
。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;reload |
指定 VACUUM
和 HOT
更新在清除死亡行版本之前,应该推迟多久(以事务数量计)。
hot_standby_feedback
作为使用这个参数的一种替代方案。old_snapshot_threshold
所指定年龄的死亡行被清除。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ 1000000 | segments;system;reload |
此部分设置在 Master 服务器上会被略过。
数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;restart |
指定一个热备用机是否将会向主服务器或上游备用机发送有关于备用机上当前正被执行的查询的反馈。
wal_receiver_status_interval
周期发送一次。old_snapshot_threshold
的行为,备用服务器上一个超过了主服务器年龄阈值的快照可能会变得不可用,导致备用服务器上事务的取消。这是因为 old_snapshot_threshold
会对死亡行能够存在的时间给出一个绝对限制,从而避免因一个备用服务器的配置而被破坏。数据类型 | 默认值 | 设置分类 |
---|---|---|
boolean | off | segments;system;reload |
当热备用机处于活动状态时,此参数决定取消那些与即将应用的 WAL 项冲突的备用机查询之前,备用服务器应该等待的时间(以毫秒为单位),详见 处理查询冲突。
-1
允许备用机一直等到冲突查询结束。max_standby_archive_delay
与取消之前一个查询能够运行的最长时间不同;它表示应用任何一个 WAL 段数据能够被允许的最长总时间。因此,如果一个查询早于 WAL 段导致了显著的延迟,后续冲突查询将只有更少的时间。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 30000 | -1 ~ INT_MAX | segments;system;reload |
当热备用机处于活动状态时,这个参数决定取消那些与即将应用的 WAL 项冲突的备用机查询之前,备用服务器应该等待的时间(以毫秒为单位),详见 处理查询冲突。
max_standby_streaming_delay
可以应用。-1
允许备用机一直等到冲突查询结束。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 30000 | -1 ~ INT_MAX | segments;system;reload |
指定备用服务器用来连接发送服务器的连接字符串。
primary_conninfo
字符串中提供,或者在备用服务器(使用 replication
作为数据库名)的一个单独 ~/.pgpass
文件中提供。primary_conninfo
字符串中指定一个数据库名。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart;superuser |
有选择地指定通过流复制连接到发送服务器时,使用一个现有的复制槽来控制上游节点上的资源移除。
primary_conninfo
则这个设置无效。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;restart |
指定一个触发器文件,该文件的存在会结束备用机中的恢复状态。
pg_ctl promote
或调用 pg_promote
来提升备用机。数据类型 | 默认值 | 设置分类 |
---|---|---|
string | segments;system;reload |
默认情况下,备用服务器会尽快恢复来自于发送服务器的 WAL 记录。
hot_standby_feedback
被延迟,这可能导致主服务器的膨胀,两者一起使用时要小心。0
,即不增加延迟。注意!
当synchronous_commit
被设置为remote_apply
时,同步复制会受到这个设置的影响,每一个COMMIT
都需要等待被应用。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 0 | 0 ~ INT_MAX | segments;system;reload |
指定在备用机上的 WAL 接收者进程,向主服务器或上游备用机发送有关复制进度的信息的最小频度(以秒为单位)。
0
将完全禁用状态更新。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 10 | 0 ~ INT_MAX/1000 | segments;system;reload |
中止处于非活动状态超过此参数值时间(以毫秒为单位)的复制链接。
0
值表示禁用。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 60000 | 0 ~ INT_MAX | segments;system;reload |
指定当从任何来源(流复制、本地 pg_wal
或者 WAL 归档)都得不到 WAL 数据时,后备服务器应该等待多久(以毫秒为单位)才去重新尝试获取 WAL 数据。
数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 5000 | 1 ~ INT_MAX | segments;system;reload |
此部分参数控制逻辑复制订阅者的行为。它们在发布者上的值与此无关。
注意!
配置参数wal_receiver_timeout
、wal_receiver_status_interval
以及wal_retrieve_retry_interval
也影响逻辑复制工作者。
指定逻辑复制工作者的最大数目。这同时包括应用工作者和表同步工作者。
max_worker_processes
定义的池中取出的。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 4 | 0 ~ 262143 | segments;system;restart |
每个订阅的同步工作者的最大数目。
max_logical_replication_workers
定义的池中取出的。数据类型 | 默认值 | 取值范围 | 设置分类 |
---|---|---|---|
int | 2 | 0 ~ 262143 | segments;system;reload |