主服务器
synchronous_standby_names
参数说明:潜在同步复制的备机名称列表,每个名称用逗号分隔。
- 当前连接的同步备机是列表中的第一个名称。如果当前同步备机失去连接,则它会立即更换下一个优先级更高的备机,并将此备机的名称放入列表中。
- 备机名称可以通过设置环境变量PGAPPNAME指定。
参数类型:字符串
参数单位:无
- ANY num_sync (standby_name [, ...])
- [FIRST] num_sync (standby_name [, ...])
- standby_name [, ...]
- 其中num_sync是事务需要等待其回复的同步复制的备机的数量,standby_name是备机的名称,FIRST以及ANY指定从所列服务器中选取同步复制的备机的策略。
- ANY N (dn_instanceId1, dn_instanceId2,...)表示在括号内任选N个主机名称作为同步复制的备机名称列表。例如,ANY 1(dn_instanceId1, dn_instanceId2)表示在dn_instanceId1和dn_instanceId2中任选一个作为同步复制的备机名称。
- FIRST N (dn_instanceId1, dn_instanceId2,...)表示在括号内按出现顺序的先后作为优先级选择前N个主机名称作为同步复制的备机名称列表。例如,FIRST 1 (dn_instanceId1, dn_instanceId2)表示选择dn_instanceId1作为同步复制的备机名称。
- dn_instanceId1, dn_instanceId2,...和FIRST 1 (dn_instanceId1, dn_instanceId2,...)的含义相同。
若使用gs_guc工具设置该参数,需要如下设置:
gs_guc reload -Z datanode -N @NODE_NAME@ -D @DN_PATH@ -c "synchronous_standby_names='ANY 1(dn_instanceId1, dn_instanceId2)'"
或者:
gs_guc reload -Z datanode -N @NODE_NAME@ -D @DN_PATH@ -c "synchronous_standby_names='ANY 1(AZ1, AZ2)'"
默认值:*
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:错误的同步备列表会导致主备同步多数派协议失效。
该参数由CM维护,如果手动修改,则存在丢失数据的风险。
most_available_sync
参数说明:指定在备机同步失败时,是否阻塞主机的事务提交。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示在备机同步失败时,不阻塞主机的事务提交。
- off:表示在备机同步失败时,阻塞主机的事务提交。
默认值:off
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:开启后,主机不会等待备机提交验证。主机处于单主时也会提交成功,而不是多数派写入成功。
设置不当的风险与影响:客户需要针对自身使用场景谨慎开启。
enable_stream_replication
参数说明:控制主备是否进行数据和日志同步。
- 此参数属于性能测试参数,用于测试带有DN备机和不带DN备机的性能参数。关闭参数后,不能进行切换、故障等异常场景测试,否则会出现主备不一致的情况。
- 此参数属于受控参数,不建议正常业务场景下关闭此参数。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示打开主备同步。
- off:表示关闭主备同步。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后,集群将失去多副本能力,会降低可用性,造成备份失败,不建议用户关闭。
enable_mix_replication
参数说明:控制主备之间WAL日志及数据复制的方式。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示打开WAL日志、数据页混合复制模式。
- off:表示关闭WAL日志、数据页混合复制模式。
默认值:off
设置方式:该参数属于POSTMASTER类型参数,默认值为off,不允许外部修改。
设置建议:不建议修改。此参数目前不允许正常业务场景下改变其值,即默认关闭WAL日志、数据页混合复制模式。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
enable_wal_replication_compression
参数说明:在主DN和备DN间物理复制时设置启动Xlog日志压缩功能。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示打开日志压缩功能。
- off:表示关闭日志压缩功能。
默认值:off
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:该参数仅作用于主DN和备DN间传输的一对walsender与walreceiver线程中,在主DN上配置。小Xlog和时延敏感的场景下,不建议打开该参数。
设置不当的风险与影响:该参数开启后存在性能和资源的消耗,需合理配置wal_replication_compression_thread_settings、wal_replication_compression_settings参数。
- 性能影响:参见wal_replication_compression_settings参数详情。
- 不同资源场景下的配置:参见wal_replication_compression_thread_settings参数详情。
该参数有以下约束:
- 升级过程中不允许修改压缩算法;
- 不支持DCF;
- 暂不支持容灾集群;
- 在小规格下(例如4U/8U)不建议打开该功能。
wal_replication_compression_thread_settings
参数说明:主备集群的并行压缩线程数和单线程队列深度。前提是enable_wal_replication_compression要开启,此参数才能生效。
参数类型:字符串
参数单位:无
取值范围:以','分隔的两个整型组成的字符串,两个整型参数取值范围都为[1,16]。
默认值:'1,6'
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:该参数与walsender_max_send_size共同决定压缩线程内存占用,需合理配合使用,低性能规格机器建议设置较小值。
| 编号 | CPU个数 | 内存(GB) | 是否混合部署 | walsender_max_send_size(MB) | Xlog压缩最大线程数 | 压缩buffer最大队列深度 | wal_replication_compression_thread_settings | 备注 |
|---|---|---|---|---|---|---|---|---|
| 1 | 4 | - | - | 8 | 0 | 0 | - | 一般情况不推荐开Xlog压缩。客户场景存在网络流量限制时,可结合硬件规格对该参数进行设置,开启Xlog压缩来缓解流量压力。 |
| 2 | 8 | - | 是 | 8 | 0 | 0 | - | |
| 3 | 8 | 64 | 否 | 8 | 1 | 1 | 1,1 | |
| 4 | 16 | 128 | 是 | 8 | 2 | 2 | 2,2 | |
| 5 | 16 | 128 | 否 | 8 | 2 | 2 | 2,2 | |
| 6 | 32 | 256 | 是 | 8 | 4 | 2~4(性能测试后根据性能最优来确认推荐值) | 4,2~4,4 | |
| 7 | 32 | 256 | 否 | 8 | 4 | 2~4(性能测试后根据性能最优来确认推荐值) | 4,2~4,4 | |
| 8 | 64 | 512 | 是 | 8 | 8 | 2~4(性能测试后根据性能最优来确认推荐值) | 8,2~8,4 | |
| 9 | 64 | 512 | 否 | 8 | 8 | 2~4(性能测试后根据性能最优来确认推荐值) | 8,2~8,4 | |
| 10 | 96 | 768 | - | 8 | 12 | 2~4(性能测试后根据性能最优来确认推荐值) | 12,2~12,4 |
设置不当的风险与影响:如果该参数设置较大,则会占用较多动态内存,导致进程无法启动或者业务申请内存失败等问题。
wal_replication_compression_settings
参数说明:主备集群Xlog压缩采用的算法规则。
参数类型:字符串
参数单位:无
取值范围:参数值由压缩算法和压缩参数组成,格式为'string,int',如'zstd,5'。其他格式为错误格式,会导致设置失败。第一个参数(压缩算法)可选lz4或zstd,其他值为无效值。
- 若第一个参数为lz4,则第二个参数为加速因子,取值范围为[1,300]。
- 若第一个参数为zstd,则第二个参数为压缩等级,取值范围为[1,15]。
默认值:'lz4,3'
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:
- lz4算法加速因子越大,则压缩率越低,性能越好。
- zstd压缩等级越大,则压缩率越高,性能越差。
- 提高压缩率会减小网络带宽,但是TPS性能也会相应下降,建议设置为满足带宽限制的最小压缩率。
- 两种算法相较而言,zstd算法压缩率更高,性能下降更多;lz4算法性能下降较少,压缩率较低。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
data_replicate_buffer_size
参数说明:发送端与接收端传递数据页时,队列占用内存的大小。此参数会影响主备之间复制的缓冲区大小。
参数类型:整型
参数单位:kB
取值范围:4096 ~ 1072693248
默认值:131072(即128MB)
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:请按照建议的默认值设置,避免设置明显不合理(过大或过小)的data_replicate_buffer_size值。应满足条件:data_replicate_buffer_size + segment_buffers + shared_buffers + wal_buffers + temp_buffers + maintenance_work_mem + work_mem + query_mem + (备机)wal_receiver_buffer_size < max_process_memory < 物理机内存大小。
设置不当的风险与影响:设置的内存参数数值过大,超过物理内存上限,将会导致数据库由于无法申请到足够的内存而无法成功启动的情况。
walsender_max_send_size
参数说明:设置主机端日志或数据发送缓冲区的大小。
参数类型:整型
参数单位:kB
取值范围:8 ~ 2147483647
默认值:8192(即8MB)
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过大会占用过多内存,设置过小会导致主备同步性能下降。
wal_buffer_reserve_percent
参数说明:设置主机端wal日志缓存保留窗口的比例,该窗口保留缓存中已落盘的日志数据。该参数设置为非0的有效值时,需满足wal_buffers设置值不小于1GB,该参数设置值才能生效。
参数类型:浮点型
参数单位:无
取值范围:0.0 ~ 0.5
默认值:0.25
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
ha_module_debug
参数说明:用于查看数据复制时具体数据块的复制状态日志。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示日志中将打印数据复制时每个数据块的状态。
- off:表示日志中不打印数据复制时每个数据块的状态。
默认值:off
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:打印日志会占用不必要的磁盘、CPU、I/O带宽,不建议用户开启。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
sync_config_strategy
参数说明:主机和备机、备机和级联备之间配置文件的同步策略。
在低于503.0.0版本升级到503.0.0版本后配置了该参数,回滚后该参数将无法识别。请勿在升级503.0.0版本期间配置该参数。
参数类型:枚举类型
参数单位:无
取值范围:
- 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
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:关闭后会使主机停止向备机同步GUC参数,谨慎设置为非all_node。
设置不当的风险与影响:设置成none_node后,主备之间不会再进行GUC参数的同步,请谨慎使用。
hadr_recovery_time_target
参数说明:在流式容灾模式下,设置hadr_recovery_time_target能够让备数据库实例完成日志写入和回放。
参数类型:整型
参数单位:s(秒)
取值范围:0 ~ 3600
- 0是指不开启日志流控。
- 1 ~ 3600是指备机能够在hadr_recovery_time_target时间内完成日志的写入和回放。可以保证主数据库实例与备数据库实例切换时能够在hadr_recovery_time_target时间内完成日志写入和回放,保证备数据库实例能够快速升主。
默认值:0
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。取值不能带单位。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过小,频繁触发流控会影响主机性能。设置过大或关闭此参数,如果出现备机回放不及时,会导致备机RTO时间超出预期,降低高可用的RTO、RPO指标。
hadr_recovery_point_target
参数说明:在流式容灾模式下,设置hadr_recovery_point_target能够让备数据库实例完成日志刷盘的RPO时间。
参数类型:整型
参数单位:s(秒)
取值范围:0 ~ 3600
- 0是指不开启日志流控。
- 1 ~ 3600是指备机能够在hadr_recovery_point_target时间内完成日志的刷盘。可以保证主数据库实例与备数据库实例切换时,能够在hadr_recovery_point_target时间内完成日志回放,保障备数据库实例升主。
默认值:0
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。取值不能带单位。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过小,频繁触发流控会影响主机性能。设置过大或关闭此参数,如果出现备机回放不及时,会导致备机RTO时间超出预期,降低高可用的RTO、RPO指标。
hadr_super_user_record_path
参数说明:该参数为流式异地容灾参数,表示备集群中hadr_disaster用户的加密文件存放路径。
参数类型:字符串
参数单位:无
取值范围:字符串
默认值:""
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:由流式容灾密码传递工具自动设置,不需要用户手动添加。不建议修改。
设置不当的风险与影响:错误的修改会导致灾备集群状态异常,无法连接主集群导致无法同步数据等问题。
check_sync_standby
参数说明:备机检查的控制开关。备机检查开启的情况,主备场景下配置正确的synchronous_standby_names参数后,当同步备故障时,主机写业务直接报错写失败。
- 该参数不支持在job work和自治事务中同步,有可能导致检查不生效。
- 若指定用户或session中未设置备机检查,开启强同步提交模式下备机故障,执行一个表的写操作会导致另一个用户或session中的同一个表的查询hang,此时需要备机恢复或者手动终止hang住的客户端。
- 不支持非写操作中触发写日志的场景中(vacuum analyze,gs_clean等)开启备机检查开关。若备机不满足同步备配置,则该场景会导致业务hang,需要手动终止。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启备机检查。
- off:表示关闭备机检查。
默认值:off
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
enable_wal_sender_crc_check
参数说明:开启walsender线程CRC校验,在主机发送日志前进行CRC校验。该参数开启后可能会导致性能下降,影响在5%以内。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启校验的功能。
- off:表示关闭校验的功能。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:此参数保证日志有效性,用户根据场景需求确认是否开启。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
DCF模式下发送日志的线程为dcf_rep_appendlog,打开enable_wal_sender_crc_check支持在DCF模式下开启dcf_rep_appendlog线程发送日志前的CRC校验。
syncrep_wait_proceed_timeout
参数说明:在事务提交过程中,主机线程等待多数派确认时收到终止信号后进行超时检测的时间阈值。当多数派备机落盘位置持续未发生更新的时长超过该阈值,主机进程将主动退出。
参数类型:整型
参数单位:s(秒)
取值范围:0 ~ 1000。0表示收到终止信号后不进行超时检测。
默认值:0
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。若需启用该超时检测,设置值需不低于自动降副本流程的用时,建议不小于60。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。若设置值过小,可能会导致在自动降副本执行过程中主机进程提前退出。
async_build
参数说明:控制是否使用异步build流程重建故障DN。开启时采用异步流程重建,在剩余副本数不足多数派时,可优先恢复业务写入能力;关闭时采用同步逻辑重建,剩余副本数不足多数派时需等待数据与日志完全同步方可恢复业务。启用本功能后,若要求重建中的备DN参与多数派提交,需满足被重建的备DN在参数synchronous_standby_names配置的同步列表中,且除被重建DN外至少有一个同步列表中的DN存活。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启异步build参与多数派提交的功能。
- off:表示关闭异步build参与多数派提交的功能。
默认值:on
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:该参数保障故障场景业务的快速恢复能力,典型场景示例:4副本部署中当故障DN达2个时,因多数派无法满足将阻塞写入新增业务。启用异步build参与多数派提交的功能恢复故障DN后,在重建故障DN过程中即可恢复新增业务的写入。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
- 业务恢复的时间由各个正在build实例与主机间的Xlog差距和网络速率决定,如Xlog相差1GB,网络速率为100MB/s,则业务应在build开始传输Xlog后10s左右恢复。
- build状态下的新增事务可能暂时损失一定的数据可靠性,即在可用副本已无法满足多数派提交条件时,build接收日志达成多数派,但正在build的实例还未拥有完整的数据。若此时叠加故障导致剩余的所有副本同时无法工作且无法恢复,可能导致build过程中新写入的数据无法恢复。在正在build的实例恢复完成或触发CM的自动降副本能力后,可消除该风险。例如,在4副本场景中,仅剩余一主一备两副本Normal,其他两个副本处于build或待修复状态时,build接收日志可使主机事务达成多数派提交条件,但此时如果Normal状态的主备副本均发生无法恢复的损坏,可能造成故障期间的新增日志无法恢复。
- 该参数在集群内各节点可以独立设置,只有主机和备机同时设为on时才生效。建议集群内所有节点保持参数一致。