
# 特性概述
#### 功能定义
开启备机读功能后，备机将支持只读事务并满足数据一致性要求，有效缓解主机负载压力。
#### 用户场景
系统需处理高并发访问请求，同时要求高可靠性与可用性，通常部署多个副本。通过设置数据库备机为可读模式，可以将部分查询请求分散到备机上执行，降低主数据库负载，充分利用备机硬件资源，减少硬件投入成本。
#### 快速启动
- 配置备机读功能需启用参数：hot_standby=on；GTM_LITE模式需激活：auto_csn_barrier=on。
- 通过gsql方式连接数据库：
  ```
  gsql -d {DB_NAME} -p {DB_PORT} -h {DB_HOST} ...
  ```
  - DB_NAME：数据库名。
  
  
  
  - DB_PORT：数据库CN节点port。
  
  - DB_HOST：数据库CN节点host。
  
  
  在单集群模式及容灾部署主集群CN上，建立连接后执行以下会话配置开启会话级备机读。
  ```
  SET enable_standby_read=on;
  ```
  容灾部署、灾备集群环境中禁止执行该配置，会话建立后即默认开启容灾读功能。
  
- 通过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，否则请求将被拦截。
  
 
#### 规格约束
- 备机读性能与硬件规格、I/O负载及实际业务高度相关，不同的业务场景下备机读性能差异较大。
- 典型商用场景（大表300GB + 主机带100并发UPDATE + VACUUM，主备200并发读且I/O、CPU资源未出现瓶颈）：
  - 串行回放模式下备机读性能达主机90%。
    
  
  - 并行回放模式下备机读性能在触发VACUUM时维持45% \~ 90%区间。
  
  - 极致RTO模式下备机读性能较串行模式最多劣化10%（约主机80%）。
   
- 只读操作不阻塞DML日志回放，主备时延可控制在1秒内。
- 只读会阻塞DDL等修改系统表操作的日志回放，冲突发生时达到max_standby_streaming_delay阈值将终止查询。
- 打开极致RTO只读场景时，只读操作阻塞部分DDL回放但不影响DML；需额外分配内存/磁盘资源缓存历史数据，查询时长受存储空间限制。
- 主备切换、备机异常重启或备机加回/加副本后，需回放至上次的读位置，方可支持备机读。
- enable_standby_read参数不支持在事务块和存储过程中启用。
- 分布式备机读不支持自治事务功能。
- 当开启极致RTO后执行删除文件的DDL操作时，备机会延迟删除相关文件，从而导致备机数据目录下的文件数目多于主机。此时若查询主备机数据库大小，将会显示备机数据库大于主机数据库。
- 开启极致RTO备机读后，仅支持可重复读隔离级别，设置其他隔离级别不会报错但不生效。
- 备机读不支持临时表；由于临时表不记录Xlog日志导致数据无法同步至备机，备机读不支持临时表的读操作。
 
