
# 操作步骤
1. 内核相关参数配置 
   recovery_parse_workers、recovery_redo_workers以及recovery_max_workers，请参考[环境规格与回放类型选择](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0838.html)进行选择。
   ```
   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%时，会触发强制回收并取消当前所有持有快照小于新回收点的查询。
   ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   由于极致RTO为解决删除文件类型的回放查询冲突，引入多版本读机制，需持续保存历史版本页面。该空间与Xlog生成速率及实际业务类型强相关，且无法量化，需要以实际业务类型进行验证，才能获得较为可靠的建议占用空间大小。具体场景建议如下：
   1. 需保证读操作不报错，但无法避免备机长查询，且业务可接受RTO在部分查询时临时增加，同时磁盘空间受限：建议指定备机使用串行/并行回放备机读。
   
   2. 需保证读操作不报错，无法避免备机长查询，且业务不可接受RTO增加，但磁盘空间充足：参考极致RTO回放查询冲突白名单，约束主集群DDL操作，并根据Xlog生成速率及standby_read目录空间膨胀比例，配置更大的max_standby_base_page_size与max_standby_lsn_info_size（经验值为base_page大小是lsn_info的5 \~ 7倍）。
   
   3. 可接受读报错后重试或避免长查询，但对RTO和磁盘空间有严格要求：需基于实际业务Xlog生成速率及standby_read目录空间膨胀比例，进行针对性配置。
    
   ```
   max_standby_lsn_info_size=256GB
   ```
   极致RTO备机读多版本历史空间的阈值，历史页面的base_page达到阈值的80%时，会触发强制回收并取消当前所有持有快照小于新回收点的查询。配置建议参考max_standby_base_page_size。
   
   
2. 选择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
     ```
     开启自动打点功能。
     
   
   
   
   
3. 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负载均衡功能和优先级负载均衡功能。
      
   
   
   ![](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   灾备集群启用分布式容灾读模式时，不可配置enableStandbyRead=on，否则请求将被拦截。
   
   
 
