主服务器
synchronous_standby_names
参数说明: 潜在同步复制的备机名称列表,每个名称用逗号分隔。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
当前连接的同步备机是列表中的第一个名称。如果当前同步备机失去连接,则它会立即更换下一个优先级更高的备机,并将此备机的名称放入列表中。
备机名称可以通过设置环境变量PGAPPNAME指定。
取值范围: 字符串。当取值为
*
,表示匹配任意提供同步复制的备机名称。支持按如下格式配置:
- ANY num_sync (standby_name [, …]) [, ANY num_sync (standby_name [, …])]
- [FIRST] num_sync (standby_name [, …])
- standby_name [, …]
其中
num_sync
是事务需要等待其回复的同步复制的备机的数量,standby_name
是备机的名称,FIRST以及ANY指定从所列服务器中选取同步复制的备机的策略。
ANY N (node1,node2,...)
表示在括号内任选N个主机名称作为同步复制的备机名称列表。例如,ANY 1 (node1,node2)
表示在node1和node2中任选一个作为同步复制的备机名称。
ANY N1 (node1,node2,...), ANY N2 (node3,node4,...)
表示分组潜在同步复制的备机名称列表,在第一组括号内任选N1个主机名称作为第一组同步复制的备机名称列表,在第二组括号内任选N2个主机名称作为第二组同步复制的备机名称列表。此时两个分组之间为且关系,必须两个分组均达到各自需求的同步备机数,本地事务才可以被提交。
FIRST N (node1,node2,...)
表示在括号内按出现顺序的先后作为优先级选择前N个主机名称作为同步复制的备机名称列表。例如,FIRST 1 (node1,node2)
表示选择node1作为同步复制的备机名称。
node1,node2,...
和FIRST 1 (node1,node2,...)
具有的含义相同。若使用vb_guc工具设置该参数,需要如下设置:
vb_guc reload -Z datanode -D @DN_PATH@ -c "synchronous_standby_names='ANY NODE 1(dn_instanceId1, dn_instanceId2)'";
或者:
vb_guc reload -Z datanode -D @DN_PATH@ -c "synchronous_standby_names='ANY 1(AZ1, AZ2)'";
默认值: *
备机名称列表中不可出现重复的名称,配置中
num_sync
不可大于备机列表数量。多分组同步备机配置 如
ANY N1 (node1,node2,...)
,ANY N2 (node3,node4,...)
的时候,多个分组之间为且关系,当前仅支持多ANY分组。不允许使用 * 来作为模糊匹配,不允许出现配置重复的备机。most_available_sync
参数说明: 主机最大可用模式开关,当有同步备机故障且与主机断开连接时,主机事务是否不因同步备机故障而被阻塞。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
on:表示在有同步备机故障且与主机断开连接时,不阻塞主机。比如有两个同步备机,一个故障,另一个正常,这个时候主机事务只会等好的这个同步备,而不被故障的同步备所阻塞;再比如走quorum协议时,一主三同步备,配置
ANY 2(node1,node2,node3)
,当node1、node3故障,node2正常时,主机业务同样不被阻塞。off:表示在有同步备机故障时,阻塞主机。注意: 如果在同步备机故障,又关闭了主机的最大可用模式时,可能由于主机的后台业务线程(比如WDR等)产生的事务所造成的阻塞,进而导致checkpoint相关的操作也同时等待。如果需要避免该情况,请打开最大可用或者将同步备机删除。
默认值:off
keep_sync_window
参数说明: 延迟进入最大可用模式的时间。
- 当最大可用模式most_available_sync配置为on,在主备场景下,当存在同步备发生故障,导致不满足当前所配置的同步备数量(详细可参考synchonous_standby_name的含义)时,如果配置了keep_sync_window参数, 则在keep_sync_window设置的时间窗口内,继续保持最大保护模式,即阻塞主机的事务提交, 延缓进入最大可用模式的时间。
- 若在keep_sync_window超时窗口内,同步备机故障恢复,且满足当前所配置的同步备数量, 则不阻塞事务, 恢复到正常状态.
- 如果设置keep_sync_window,推荐最小配置为5s,以避免监控系统监控到网络不稳定的误报。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,范围0~INT_MAX,单位为秒。
- 0表示不设置keep_sync_window超时时间窗口, 即直接进入最大可用模式。
- 其余表示keep_sync_window超时时间窗口的大小。
默认值:0
配置该参数可能会对RPO造成影响, 若主机在所配置的超时时间窗口内发生故障,则从开始阻塞到主机故障这段时间窗口内的数据可能丢失。
enable_stream_replication
参数说明: 控制主备、主从是否进行数据和日志同步。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
- 此参数属于性能测试参数,用于测试带有备机和不带备机的性能参数。关闭参数后,不能进行切换、故障等异常场景测试,否则会出现主备从不一致的情况。
- 此参数属于受控参数,不建议正常业务场景下关闭此参数。
- 当前版本默认不支持主备从部署模式。
取值范围: 布尔型
- on表示打开主备、主从同步。
- off表示关闭主备、主从同步。
默认值:on
enable_mix_replication
参数说明: 控制主备、主从之间WAL日志及数据复制的方式。
该参数属于POSTMASTER类型参数,默认值为off,不允许外部修改。
- 此参数目前不允许正常业务场景下改变其值,即关闭WAL日志、数据页混合复制模式。
- 当前版本默认不支持主备从部署模式。
取值范围: 布尔型
- on表示打开WAL日志、数据页混合复制模式。
- off表示关闭WAL日志、数据页混合复制模式。
默认值:off
vacuum_defer_cleanup_age
参数说明: 指定VACUUM使用的事务数,VACUUM会延迟清除无效的行存表记录,延迟的事务个数通过vacuum_defer_cleanup_age进行设置。即VACUUM和VACUUM FULL操作不会立即清理刚刚被删除元组。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,0~1000000,值为0表示不延迟。
默认值:0
data_replicate_buffer_size
参数说明: 发送端与接收端传递数据页时,队列占用内存的大小。此参数会影响主备之间复制的缓冲大小。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,4096~1072693248,单位为KB。
默认值: 16MB(即16384KB)
walsender_max_send_size
参数说明: 设置主机端日志或数据发送缓冲区的大小。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,8~INT_MAX,单位为KB。
默认值: 8M(即8192KB)
enable_data_replicate
参数说明: 当数据库在数据导入行存表时,主机与备机的数据同步方式可以进行选择。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示导入数据行存表时主备数据采用数据页的方式进行同步。当replication_type参数为1时,不允许设置为on,如果此时用guc工具设置成on,会强制改为off。
- off表示导入数据行存表时主备数据采用日志(Xlog)方式进行同步。
默认值: on(安装工具默认设置为off)
ha_module_debug
参数说明: 用于查看数据复制时具体数据块的复制状态日志。
该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示日志中将打印数据复制时每个数据块的状态。
- off表示日志中不打印数据复制时每个数据块的状态。
默认值: off
enable_incremental_catchup
参数说明: 控制主备之间数据追赶(catchup)的方式,目前默认不支持主备从部署模式。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on表示备机catchup时用增量catchup方式,即从从备本地数据文件扫描获得主备差异数据文件列表,进行主备之间的catchup。
- off表示备机catchup时用全量catchup方式,即从主机本地所有数据文件扫描获得主备差异数据文件列表,进行主备之间的catchup。
默认值:on
wait_dummy_time
参数说明: 同时控制增量数据追赶(catchup)时,Vastbase主备从按顺序启动时等待从备启动的最长时间以及等待从备发回扫描列表的最长时间。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,范围1~INT_MAX,单位为秒
默认值:300
- 单位只能设置为秒。
- 当前版本默认不支持主备从部署模式。
catchup2normal_wait_time
参数说明: 打开最大可用模式most_available_sync,主备场景下,控制备机数据追赶(catchup)阻塞主机的最长时间。该时间为估算值,实际结果可能与参数值有偏差。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 整型,范围-1~10000,单位为毫秒。
- -1表示主机阻塞直到备机数据追赶完成。
- 0表示备机数据追赶时始终不阻塞主机。
- 其余值表示备机数据追赶时阻塞主机的最长时间。例如,取值5000,表示当备机数据追赶完成时间还剩5s时,阻塞主机等待其完成。
默认值:-1
sync_config_strategy
参数说明: 主机和备机、备机和级联备之间配置文件的同步策略。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 枚举类型
- all_node: 主机配置为all_node时,表示允许主机向所有备机主动同步配置文件;备机配置为all_node时,表示允许当前备机向其主机发送同步请求,允许当前备机向其所有级联备主动同步配置文件;级联备配置为all_node时,表示允许当前级联备向上一级备机发送同步请求。
- only_sync_node: 主机配置为only_sync_node时,表示仅允许主机向所有同步备机主动同步配置文件;备机配置为only_sync_node时,表示允许当前备机向其主机发送同步请求,不允许当前备机向其所有级联备机主动同步配置文件;级联备配置为only_sync_node时,表示允许当前级联备向其备机发送同步请求。
- none_node: 主机配置为none_node时,表示不允许主机向任何备机主动同步配置文件;备机配置为none_node时,表示不允许当前备机向其主机发送同步请求,不允许当前备机向其所有级联备主动同步配置文件;级联备配置为none_node时,表示不允许当前级联备向其备机发送同步请求。
默认值: all_node
在一个包含了主机、备机和级联备的Vastbase集群中,主机相对于备机是发送端,备机相对于主机是接收端,备机相对于级联备是发送端,级联备相对于备机是接收端。
发送端主动向接收端同步配置文件、接收端请求发送端同步配置文件是两个独立的事件,均会使得配置文件同步。若不希望配置文件同步,则需要将集群中所有节点的sync_config_strategy参数配置为none_node;若仅希望主机与同步备机同步配置文件,则需要将主机的sync_config_strategy参数配置为only_sync_node,其余节点配置为none_node;若希望所有节点同步配置文件,则需要将所有节点的sync_config_strategy参数配置为all_node。目前暂不支持自定义指定任意节点间的同步策略。
配置参数同步的具体表现为,发送端发送配置文件,对接收端配置文件中的对应参数直接覆盖。若设置了配置文件需要同步的策略,则修改接收端配置参数后,发送端会立刻覆盖接收端的配置参数,使得接收端修改不生效。
即使设置了配置文件需要同步的策略,仍有部分配置参数不会被同步。它们是:
“application_name”、 “archive_command”、 “audit_directory”、 “available_zone”、 “comm_control_port”、 “comm_sctp_port”、 “listen_addresses”、 “log_directory”、 “port”、 “replconninfo
N
“、 “ssl”、 “ssl_ca_file”、 “ssl_cert_file”、 “ssl_ciphers”、 “ssl_crl_file”、 “ssl_key_file”、 “ssl_renegotiation_limit”、 “ssl_cert_notify_time”、 “synchronous_standby_names”、 “local_bind_address”、 “perf_directory”、 “query_log_directory”、 “asp_log_directory”、 “streaming_router_port”、 “enable_upsert_to_merge”、 “archive_dest”、 “recovery_min_apply_delay”、 “sync_config_strategy”。hadr_recovery_time_target
参数说明: 在流式容灾模式下设置hadr_recovery_time_target能够让备数据库实例完成日志写入和回放。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围:整型,0~3600 (秒)
- 0是指不开启日志流控。
- 1~3600是指备机能够在hadr_recovery_time_target时间内完成日志的写入和回放,可以保证主数据库实例与备数据库实例切换时能够在hadr_recovery_time_target秒完成日志写入和回放,保证备数据库实例能够快速升主。
hadr_recovery_time_target设置时间过小会影响主机的性能,设置过大会失去流控效果。
默认值: 0
hadr_recovery_point_target
参数说明:在流式容灾模式下设置hadr_recovery_point_target能够让备数据库实例完成日志刷盘的RPO时间。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围:整型,0~3600 (秒)
- 0是指不开启日志流控。
- 1~3600是指备机能够在hadr_recovery_point_target时间内完成日志的刷盘,可以保证主数据库实例与备数据库实例切换时日志差距能够在hadr_recovery_point_target秒内,保障备数据库实例升主日志量。
hadr_recovery_point_target设置时间过小会影响主机的性能,设置过大会失去流控效果。
默认值:0
hadr_super_user_record_path
参数说明: 该参数为流式异地容灾参数,表示备数据库实例中hadr_disaster用户的加密文件存放路径。
该参数属于SIGHUP类型参数,请参考重设参数表1中对应设置方法进行设置。
修改建议:由流式容灾密码传递工具自动设置,不需要用户手动添加。
取值范围:字符串
默认值:NULL
在一个包含了主机、备机和级联备的数据库实例中,主机相对于备机是发送端,备机相对于主机是接收端,备机相对于级联备是发送端,级联备相对于备机是接收端。
发送端主动向接收端同步配置文件、接收端请求发送端同步配置文件是两个独立的事件,均会使得配置文件同步。若不希望配置文件同步,则需要在接收端配置为none_node,发送端若为备机只能配置为none_node,发送端若为主机,配置为none_node时主机与所有备机都不同步,为only_sync_node时仅与同步备同步,不与异步备同步。
配置参数同步的具体表现为,发送端发送配置文件,对接收端配置文件中的对应参数直接覆盖。若设置了配置文件需要同步的策略,则修改接收端配置参数后,发送端会立刻覆盖接收端的配置参数,使得接收端修改不生效。
即使设置了配置文件需要同步的策略,仍有部分配置参数不会被同步。它们是:
“application_name”、 “archive_command”、 “audit_directory”、 “available_zone”、 “comm_control_port”、 “comm_sctp_port”、 “listen_addresses”、 “log_directory”、 “port”、 “replconninfo
N
“、 “ssl”、 “ssl_ca_file”、 “ssl_cert_file”、 “ssl_ciphers”、 “ssl_crl_file”、 “ssl_key_file”、 “ssl_renegotiation_limit”、 “ssl_cert_notify_time”、 “synchronous_standby_names”、 “local_bind_address”、 “perf_directory”、 “query_log_directory”、 “asp_log_directory”、 “streaming_router_port”、 “enable_upsert_to_merge”、 “archive_dest”、 “recovery_min_apply_delay”、 “sync_config_strategy”。enable_save_confirmed_lsn
参数说明: 启用该参数后,主机会将每次事务操作时与当前同步备达成多数派一致性的位置持久化到磁盘上。当主机发生故障后,原主作为备机发起build时,检测源端(新主)是否存在相同的confirmed LSN。如果不存在,build失败,避免原主的数据被build覆盖。
该参数属于POSTMASTER类型参数,请参考重设参数表1中对应设置方法进行设置。
取值范围: 布尔型
- on: 表示启用该功能。在一主多备且配置有同步备机的场景下,在主机每次执行数据变化的事务操作时(DML/DDL),且主机等待与同步备机达成多数派一致性位置时,将与当前同步备达成多数派一致性的位置持久化到磁盘上。持久化的文件对应同步备的复制槽的状态文件。该参数打开后同时影响不指定模式的自动build和增量build,当主机发生故障后,原主作为备机发起build时,检测源端(新主)是否存在相同的confirmed LSN。如果不存在,build失败,避免原主的数据被build覆盖。
- off: 表示不启用该功能,主机事务提交时的行为与原来保持一致。自动build和增量build的行为与原来保持一致。此时在一主多备且配置有异步备机的场景下,如果主机突然发生故障宕机,而主机此刻达成的多数派一致性位置(比如LSN100)又没有同步到异步备机时,如果强行将异步备机作为新主机启动,且在新主上执行一些事务操作,那么新主上的数据会覆盖LSN100,此时再将原主作为备机发起build,主机上会丢失自己最近一次达成多数派一致性位置LSN100的业务数据。
默认值: off
- 如果最大可用模式most_available_sync配置为on,且所有同步备机都故障时,该功能不生效。因为没有同步备可以触发该LSN的持久化。
- 该功能只会影响增量build或不指定build模式的自动build, 如果用户强制指定全量build模式,该功能不生效。
- 如果在执行build前,主机的pg_replslot下的文件被人为删除或破坏,本功能不生效。
- 该功能开启后,如果主机在等待同步备机达成多数派一致性的过程中被主动停止,不会提示“该事务已在本地提交,可能未同步到远端”,避免上层业务以为数据已经达成一致。
- 该功能开启后,因为等待同步的时间会由于持久化数据而变长,带有同步备的主备集群的性能会受到影响。测试数据显示,与不开启该功能相比,性能约下降20%。