操作步骤
- 内核相关参数配置
recovery_parse_workers、recovery_redo_workers以及recovery_max_workers,请参考环境规格与回放类型选择进行选择。
wal_level=hot_standby
日志回放级别需大于或等于hot_standby。
hot_standby=on
备机读模块开关需设置为on。
max_standby_streaming_delay=10s
回放查询冲突时,备机在取消查询前会等待的时间;此参数会影响RTO。
如果环境规格与回放类型选择了极致RTO配置,则需要对以下GUC参数进行配置:
standby_max_query_time=10s
回收逻辑计算回收点时,会取消超过standby_max_query_time的查询。建议与max_standby_streaming_delay配置保持一致。
max_standby_base_page_size=256GB
极致RTO备机读多版本历史空间的阈值,历史页面的base_page达到阈值的80%时,会触发强制回收并取消当前所有持有快照小于新回收点的查询。
由于极致RTO为解决删除文件类型的回放查询冲突,引入多版本读机制,需持续保存历史版本页面。该空间与Xlog生成速率及实际业务类型强相关,且无法量化,需要以实际业务类型进行验证,才能获得较为可靠的建议占用空间大小。具体场景建议如下:
- 需保证读操作不报错,但无法避免备机长查询,且业务可接受RTO在部分查询时临时增加,同时磁盘空间受限:建议指定备机使用串行/并行回放备机读。
- 需保证读操作不报错,无法避免备机长查询,且业务不可接受RTO增加,但磁盘空间充足:参考极致RTO回放查询冲突白名单,约束主集群DDL操作,并根据Xlog生成速率及standby_read目录空间膨胀比例,配置更大的max_standby_base_page_size与max_standby_lsn_info_size(经验值为base_page大小是lsn_info的5 ~ 7倍)。
- 可接受读报错后重试或避免长查询,但对RTO和磁盘空间有严格要求:需基于实际业务Xlog生成速率及standby_read目录空间膨胀比例,进行针对性配置。
max_standby_lsn_info_size=256GB
极致RTO备机读多版本历史空间的阈值,历史页面的base_page达到阈值的80%时,会触发强制回收并取消当前所有持有快照小于新回收点的查询。配置建议参考max_standby_base_page_size。
- 选择GTM_FREE/GTM_LITE模式
- GTM_FREE模式:
enable_standby_read=on
SIGHUP级别GUC参数,推荐通过连接串配置或在每个session初始化后执行SQL命令设置:set enable_standby_read=on。
standby_read_delay=100000000ms
SIGHUP级别GUC参数,定义主备最大时延,超过该值时禁止向备机下发请求。
standby_read_rto=60000ms
设置系统RTO阈值,超过该值时禁止备机读操作。
enable_gtm_free=on
开启GTM_FREE模式,POSTMASTER级别参数,需重启生效。
gtm_option=2
开启GTM_FREE模式,POSTMASTER级别参数,需重启生效。
- GTM_LITE模式:
enable_standby_read=on
SIGHUP级别GUC参数,推荐通过连接串配置或在每个session初始化后执行SQL命令设置:set enable_standby_read=on;
enable_gtm_free=off
关闭GTM_FREE模式,POSTMASTER级别参数,需重启生效。
gtm_option=1
开启GTM_LITE模式,POSTMASTER级别参数,需重启生效。
auto_csn_barrier=on
开启自动打点功能。
- GTM_LITE容灾读模式:
enable_gtm_free=off
关闭GTM_FREE模式,POSTMASTER级别参数,需重启生效。
gtm_option=1
开启GTM_LITE模式,POSTMASTER级别参数,需重启生效。
主集群配置:
auto_csn_barrier=on
开启自动打点功能。
- GTM_FREE模式:
- JDBC相关参数配置 单集群配置:
jdbc:gaussdb://node1:port,node2:port,node3:port/database?enableStandbyRead=true
enableStandbyRead:连接CN后启用备机读操作,需配合内核参数配置生效。
容灾读场景(灾备集群)配置:
jdbc:gaussdb://node1:port,node2:port,node3:port/database?isasterToleranceCluster=true&autoBalance=true
- disasterToleranceCluster:启用后,会自动判断目标集群是主集群还是灾备集群;配置的IP需指向目标集群CN的IP。
- autoBalance:表示开启负载均衡。
- true、balance或roundrobin:表示开启JDBC负载均衡功能,将应用程序的多个连接均衡分配至数据库集群中的各个可用CN。
- priorityn:表示开启JDBC优先级负载均衡功能,将应用程序的多个连接均衡到URL中前n个可用的CN数据库节点。
- shuffle:表示开启JDBC随机负载均衡功能,将应用程序的多个连接随机均衡到数据库集群中的各个可用CN。
- specified:表示开启JDBC负载均衡功能,并且只在用户URL中指定的节点上建立连接。
- shufflen:表示开启JDBC在指定节点上优先随机负载均衡功能,将应用程序的多个连接优先随机分配至URL中前n个可用的CN数据库节点。当URL上配置前n个节点全部不可用时,连接会随机分配至其他可用CN节点。
- false:表示不开启JDBC负载均衡功能和优先级负载均衡功能。
灾备集群启用分布式容灾读模式时,不可配置enableStandbyRead=on,否则请求将被拦截。