海量 15 需求 逻辑复制性能优化
1 简介 1.1 目的 逻辑复制是一种在多个数据库实例之间复制数据的功能,通常用于从一个数据库实例中,将针对指定表的insert、delete、update等写操作,复制到其他另一个数据库实例。在数据库术语中,统一称逻辑复制的发送方为发布端,称接收方为订阅端。Oracle、Postgresql、Vastbase等数据库产品,均提供逻辑复制功能。 当前版本,逻辑复制性能较低。以tpcc场景为例,发布端40w tmpc时,产生wal日志速度约100+m/s,订阅端的复制速度约10+m/s。在滚动升级场景,主机和备机可能是不同的产品版本,主备复制数据时,不能使用物理复制,只能使用逻辑复制。在长存客户场景中,主机产生wal日志速度在50+m/s左右,备机使用逻辑复制,复制速度约10+m/s,备机将追赶不上主机进度,导致滚动升级失败。 主a 备b 备c +-----------------------+---------------------------+----------------------------- |1 ==>执行业务 |2 开始滚动升级,暂停流复制 lag=400M |3 暂停流复制(物理复制) |4 创建逻辑复制槽 lsn1=1G |5 恢复流复制 |6 物理复制追赶,到逻辑复制槽 |6 开始单节点升级 |7 [升级] 停止进程 |8 [升级] 替换二进制等 |9 [升级] 启动进程 |10 单节点升级成功 |11 持续执行业务 lsn2=2G |12 创建订阅,启动逻辑复制,lsn1=1G |13 逻辑复制开始追赶(初始差距:lsn2-lsn1) |14 持续执行业务 lsn3=2.5G |15 逻辑复制持续追赶 lsn=1.6G |16 (可重置lag) |17 差距持续缩小(从lsn2-lsn1降低到lag) |18 发送停机命令 |19 停止业务 |20 差距持续缩小,从lag缩小至0 |21 停止进程成功 因此,需大幅提高逻辑复制速度,在长存客户场景中,逻辑复制速度至少需达到70+m/s。目前,发布端、订阅端均存在性能瓶颈,均需要优化。 1.2 适用范围 G100 3.0.9 psu2及之后版本 1.3 术语定义、首字母缩写词和缩略语 发布端:逻辑复制场景,发送数据方。 订阅端:逻辑复制场景,接收数据方。 1.4 参考资料 Vastbase G100产品文档中逻辑复制使用介绍:https://docs.vastdata.com.cn/zh_CN/VastbaseG100/V3.0.8/1/f5c2ae8eb9744d429ad39c02438addf6 oracle goldengate并行复制:https://oracle.hydrogen.sagittarius.connect.product.adaptavist.com/en/database/goldengate/core/26/coredoc/replicat-parallel-replicat.html#GUID-F1CD8E03-8DA1-4A78-95D3-C0516F1DA09A 2 逻辑复制性能优化 2.1 功能简述 一、逻辑复制使用示例 使用逻辑复制,可概括为3个阶段: ...