分布式备机支持读
可获得性
本特性自503.0.0版本开始引入。
特性简介
提供分布式GTM-Free/GTM-Lite模式备机读能力,降低主机负载。
GTM-Free备机读原理简介:分布式的场景下,通过CN中的收集线程不断向主DN与备DN收集csn和commit time,用于校验备机的csn和时延是否满足要求,进而选择一个备DN可以把部分读请求下发到备节点。
GTM-Lite备机读原理简介:分布式的场景下,打开auto_csn_barrier,进行barrier打点,通过CN中的收集线程不断向备DN收集barrier点的csn,计算出一致性的csn,进而选择一个满足一致性点的备DN,把部分读请求下发到备节点。
高可用机制:
- 一主多备场景下,当某个备机因网络、进程故障导致无法连接,CN后台收集线程会选取一个合适的DN备作为备机读节点,并且将备机读业务迁移至此备节点上。
- 一主一备一logger部署形态下,备机因网络、进程故障导致无法连接,无法提供备机读服务备机读业务报错,需要备DN故障恢复后恢复备机读业务。
客户价值
分布式集群中副本无法提供服务, 造成了极大浪费。通过提供副本可读的能力,来提升业务的吞吐量和资源利用率。
特性描述
- 支持分布式GTM FREE场景下的备机读:在与CN建立连接后,打开session级的guc参数enable_standby_read或JDBC参数enableStandbyRead,即可把后续的读请求发送给备机。
- 提供分布式GTM LITE场景下的备机读能力,DRS互联互通场景,可通过客户端直连备DN进行读操作。
- 支持分布式GTM LITE场景下的备机读:在与CN建立连接后,打开session级的guc参数enable_standby_read或JDBC参数enableStandbyRead,即可把后续的读请求发送给备机。
特性增强
无。
特性约束
- 邮储扩容场景,GTM LITE模式下,DRS需要配置参数listen_address_ext, 直连DN进行读操作,不支持同时开启极致RTO。
- 仅支持hot standby模式。
- 读写分离仅支持session级别,如果在备机读session执行写操作,会报错。不支持备机异常后,业务切换到主机上。
- 在串行回放或者并行回放的模式下,主机频繁vacuum会导致备机读报错或影响日志回放速度,需要调节备机上的参数选择哪种优先。具体调节参数为max_standby_archive_delay和max_standby_streaming_delay,分别表示备机回放本地日志和streamed日志时,取消查询的最大延时。
- DDL操作会修改元数据,导致主备元数据不一致。此时备机读操作时会提示“relation \"<string>\" does not exist”、“column \"<string>\" does not exist”或其他错误信息,需等待备机元数据回放到与主机元数据一致时备机读才可用。
- 主备切换、备机异常重启、备机加回后或加副本后,需要回放到上次读的位置,才能支持备机读。
- enable_standby_read参数不支持在事务块和存储过程中开启。
- 当开启极致RTO、进行删除文件的DDL操作时,备机会延迟删除相关文件,从而导致备机数据目录下的文件数目多于主机,此时若查询主备机数据库大小,则会显示备机数据库大于主机数据库。
- 分布式备机读不支持自治事务功能。
- 分布式GTM FREE支持备机读的规格与约束:
1. 读到的数据与主机存在一定延时,主备差异超过指定数值(由standby_read_delay指定)时,会报错。
2. 提供弱一致读,仅保证session内部的快照递增序,session之间不保证。
3. 不支持stream计划,开启enable_stream_operator参数后,备机读会采用pgxc计划替代stream计划。
4. 不支持备机间的负载均衡。
5. 主机性能和RTO优先,备机读业务其次。在没有可用备机时均会报错,备机读的查询不会发送到主机上。
6. 备机读业务会影响备机RTO,若所有备机的RTO都超过指定阈值(通过standby_read_rto指定),备机读业务报错,业务侧通过查看错误码进行熔断。
7. 允许GTM FREE模式下gsql直接连接备机。
- 分布式GTM LITE支持备机读的规格与约束:
- 前置条件:需要开启barrier打点功能,通过参数auto_csn_barrier控制。
- 回放冲突类约束
(1)当查询和回放有锁相关的冲突时(主要为表的DDL操作),与串并行回放备机读相同,取消查询由参数max_standby_streaming_delay(参见《管理员指南》中“配置运行参数 > GUC参数说明 > 双机复制 > 备服务器”章节)控制,报错信息是“canceling statement due to conflict with recovery”。
(2)查询时间超出了参数standby_max_query_time(参见《管理员指南》中“配置运行参数 > GUC参数说明 > 双机复制 > 备服务器”章节),报错信息是“User query has exceeded the duration threshold.”。
(3)触发了备机读文件的强制回收,由参数max_standby_base_page_size、max_standby_lsn_info_size和standby_force_recycle_ratio(参见《管理员指南》中“配置运行参数 > GUC参数说明 > 双机复制 > 备服务器”章节)控制。
(4)备机回放段页式物理空间收缩操作相关日志。
(5)主机执行REINDEX DATABASE时,备机上的查询和relmap类型日志回放有冲突,报错信息是“User query might have needed to see row versions that must be removed”。
(6)主机执行DROP DATABASE、DROP TABLESPACE操作时,备机在回放相应的日志时可能会跟查询冲突,报错信息是“canceling statement due to conflict with recovery”。
- 快照类约束
(1)在极致RTO备机读场景下,查询快照信息是由CN发来,可能有滞后,一些数据信息已经更新,在以下几种场景中可能会报错:
a. REINDEX DATABASE等操作,导致relmap变更,报错“snapshot lsn is smaller than lastReplayedConflictLsn due to relmap redo”。
b. 节点启动,报错“snapshot lsn is smaller than lastReplayedConflictLsn due to starting action”。
c. 备机读文件强制回收,报错“snapshot lsn is smaller than lastReplayedConflictLsn due to force recycle”。
(2)在极致RTO备机读场景下,集群启停或故障、极致RTO模式下由于某种原因(磁盘空间不足、修改GUC参数、某些节点回放没有跟上等)触发了强制回收,均可能导致备机读报错结束查询(ERROR:snapshot csn is not in csn-lsn list, DETAL:snapshot csn is 123456789)。
(3)在串行/并行回放备机读场景下,主机频繁VACUUM会导致备机读查询的数据被提前清理掉等问题,可能出现查询和回放冲突,报错并结束查询(ERROR: gtm csn small: gtm csn 123456789, lastReplayedConflictCSN 123456999)。
(4)在对表进行DDL操作时,CN上的系统表已经被修改,但是备DN可能还未回放这些DDL日志,当使用老快照查询该表时,CN和备DN的元数据可能会不一致。CN在检测到该场景后,会结束访问该表的查询并报错,需要业务进行重试(ERROR: current snapshot is invalid for this relation/partition)。
- 资源管控
(1)磁盘空间:当前极致RTO备机读文件的空间占用已有阈值保护,参考max_standby_base_page_size、max_standby_lsn_info_size、standby_force_recycle_ratio(参见《管理员指南》中“配置运行参数 > GUC参数说明 > 双机复制 > 备服务器”章节)。
(2)内存和IO:需求支持备机读独立BufferPool和独立刷脏,参考enable_standby_bufferpool(参见《管理员指南》中“配置运行参数 > GUC参数说明 > 双机复制 > 备服务器”章节)。
(3)CPU:当前无资源管控能力,在当节点CPU资源充足的场景下(不超过70%),备机读和回放没有影响。
(4)对于小规格(8U以下)场景,极致RTO回放会占用较多资源,不建议打开极致RTO备机读。
- 性能规格
(1)打开选AZ(standby_read_use_az_info)或者负载均衡功能(standby_read_use_load_balance),由于需要遍历所有可用备DN节点,再去从中做选择,所以会导致查询性能下降。
(2)当主机频繁执行DDL操作时,除了会导致备机上的查询与回放冲突被取消外,还会导致备机上的查询变慢。
(3)在96U768G物理机环境下,3C3D混合部署,独立数据盘,配置出口参数,初始数据100G,主备100并发读,主机100并发update、100并发insert,备机读性能达到主机读性能的80%。
依赖关系
无。
浙公网安备 33010602011771号