GaussDB-分布式备机支持读

GaussDB-分布式备机支持读

可获得性

本特性自503.0.0版本开始引入。

特性简介

提供分布式GTM-Free/GTM-Lite模式备机读能力,降低主机负载。

原理简介:分布式的场景下,通过CN中的收集线程不断向主DN与备DN收集csn和commit time,用于校验备机的csn和时延是否满足要求,进而选择一个备DN可以把部分读请求下发到备节点。

高可用机制:

  • 一主多备场景下,当某个备机因网络、进程故障导致无法连接,CN后台收集线程会选取一个合适的DN备作为备机读节点,并且将备机读业务迁移至此备节点上。
  • 一主一备一logger部署形态下,备机因网络、进程故障导致无法连接,无法提供备机读服务备机读业务报错,需要备DN故障恢复后恢复备机读业务。

客户价值

分布式集群中副本无法提供服务, 造成了极大浪费。通过提供副本可读的能力,来提升业务的吞吐量和资源利用率。

特性描述

  • 支持分布式GTM FREE场景下的备机读:在与CN建立连接后,打开session级的guc参数enable_standby_read或JDBC参数enableStandbyRead,即可把后续的读请求发送给备机。
  • 提供分布式GTM LITE场景下的备机读能力,可通过客户端直连备DN进行读操作。

特性增强

无。

特性约束

  • GTM LITE模式下,需要配置参数listen_address_ext, 不支持同时开启极致RTO。
  • 仅支持hot standby模式。
  • 读写分离仅支持session级别,如果在备机读session执行写操作,会报错。不支持备机异常后,业务切换到主机上。
  • 备机读到的数据与主机存在一定延时,主备差异超过指定数值(由standby_read_delay指定)时,会报错。
  • 提供弱一致读,仅保证session内部的快照递增序,session之间不保证。
  • 在串行回放或者并行回放的模式下,主机频繁vacuum会导致备机读报错或影响日志回放速度,需要调节备机上的参数选择哪种优先。具体调节参数为max_standby_archive_delay和max_standby_streaming_delay,分别表示备机回放本地日志和streamed日志时,取消查询的最大延时。
  • 在极致RTO的回放模式下,查询最大允许的时长由参数standby_max_query_time调节。
  • DDL操作会修改元数据,导致主备元数据不一致。此时备机读操作时会提示“relation \"<string>\" does not exist”、“column \"<string>\" does not exist”或其他错误信息,需等待备机元数据回放到与主机元数据一致时备机读才可用。
  • 主备切换、备机异常重启、备机加回后或加副本后,需要回放到上次读的位置,才能支持备机读。
  • 不支持stream计划,开启enable_stream_operator参数后,备机读会采用pgxc计划替代stream计划。
  • 不支持备机间的负载均衡。
  • 主机性能和RTO优先,备机读业务其次。在没有可用备机时均会报错,不会发送到主机上。
  • 备机读业务会影响备机RTO,若所有备机的RTO都超过指定阈值(通过standby_read_rto指定),备机读业务报错,业务侧通过查看错误码进行熔断。
  • enable_standby_read参数不支持在事务块中开启。
  • 允许GTM-Free模式下gsql直接连接备机。
  • 当开启极致RTO、进行删除文件的DDL操作时,备机会延迟删除相关文件,从而导致备机数据目录下的文件数目多于主机,此时若查询主备机数据库大小,则会显示备机数据库大于主机数据库。
  • 分布式备机读不支持自治事务功能。

依赖关系

无。

 
posted @ 2024-10-30 09:01  jerrywang1983  阅读(18)  评论(0)    收藏  举报