更新时间:2026-07-28 GMT+08:00
分享

特性概述

功能定义

开启备机读功能后,备机将支持只读事务并满足数据一致性要求,有效缓解主机负载压力。

用户场景

系统需处理高并发访问请求,同时要求高可靠性与可用性,通常部署多个副本。通过设置数据库备机为可读模式,可以将部分查询请求分散到备机上执行,降低主数据库负载,充分利用备机硬件资源,减少硬件投入成本。

快速启动

  • 配置备机读功能需启用参数:hot_standby=on。
  • 通过gsql方式连接数据库:
    gsql -d {DB_NAME} -p {DB_PORT} -h {DB_HOST} ...
    • DB_NAME:数据库名。
    • DB_PORT:数据库备机节点port。
    • DB_HOST:数据库备机节点host。

    会话与备机建立连接后,执行以下会话配置开启会话级备机读。

    SET enable_standby_read=on; 
  • 通过JDBC方式连接数据库:
    jdbc:gaussdb://node1,node2,node3,node4,node5,node6/database?targetServerType=slave

    targetServerType:指定要连接的服务器类型。该参数通过查询URL连接串中数据节点是否允许写操作,来识别主备数据节点,默认值为any。

    取值详解:
    • master:表示依次尝试连接URL中配置的IP,直到连接到主节点,若失败则抛出异常。
    • slave:表示依次尝试连接URL中配置的IP,直到连接到备节点,若失败则抛出异常。
    • preferSlave:表示尝试连接到URL中的备节点(如有可用节点),否则连接主节点。
    • any:尝试连接URL中的任意节点。
    • clusterMainNode:表示尝试连接到URL中的主节点或首备节点(容灾主节点),若失败则抛出异常。

规格约束

  • 备机读性能与硬件规格、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日志导致数据无法同步至备机,备机读不支持临时表的读操作。

相关文档