openGauss新特性 | 录制回放功能增强特性说明

1、 流式回放功能

录制、解析、回放三个进程同时启动,实现边录制边解析边回放。

1 :该流式处理功能不影响原有的录制、解析、回放三个进程顺序执行的结果,原有操作方式仍可使用

2 :为了防止录制端进程异常终止导致解析端和回放端进程残留的问题,工具提供了参数 parse.max.time replay.max.time 配置解析端和回放端的最大工作时长,达到该阈值则进程自动终止, 默认值为 0 ,进程等待直到收到 endFile 文件。

3 :在配置了 parse.max.time 0 时,且时间达到该阈值后一直未检测到 endFile 标识,假如共收到 n pcap 包,则进程退出时仅解析前 n-1 个文件,最后一个文件不解析,回放端参数 replay.max.time 同理

4 考虑到 json 模式下发送到解析端的 tcpdump 文件量过大会导致磁盘占用率高,影响回放性能,提供了参数 tcpdump.file.drop 控制在解析过程中是否每解析完一个 tcpdump 文件就立刻删除,默认 false

2、 回放结果对比

将回放端的 select 语句查询结果与源端查询结果进行对比,并将对比结果写到 data_diff.log 日志文件里,该功能可通过参数控制是否开启。操作步骤如下:

step1. 解析端配置参数:

// 是否解析 select 语句查询结果,该功能用于对比录制端和回放端的查询结果

parse.select.result=true

//select 语句查询结果保存文件路径

select.result.path=/***/***/***

//select 语句查询结果保存文件名称

result.file.name=select-result

//select 语句查询结果保存文件大小

result.file.size=10

step2. 回放端配置参数:

// 是否将回放端和录制端的 select 查询结果对比

compare.select.result=true

//select 语句查询结果保存文件路径

Select.result.path=/***/***/***

//select 语句查询结果保存文件名称

Result.file.name=select-result

step3. 开启进程进行解析回放

1:开启对比功能则会将源端所有select语句查询结果保存到磁盘,因此开启该功能应预留足够的磁盘空间
 
    
    
    

2:由于该功能是将源端select语句的响应包直接解析,回放端是通过调jdbc将查询结果进行了转化,二进制类型bloblongblobmediumblobtinyblobraw通过jdbc的转化,与直接解析响应包得到的数据格式不相同,因此这几种类型的数据对比结果与源端不一致,这是对比功能的局限性,实际数据库里存的值是一致的,对业务无影响
   
   
   

3、 时间间隔一致

回放端相邻 sql 的回放时间间隔与源端保持一致,该功能可通过参数控制是否开启

前置条件:开启参数 source.time.interval.replay=true ,然后进行回放。

1 :源端和回放端执行 sql 耗时存在一定差异,为了避免相邻 sql 之间的数据依赖关系影响回放结果,在回放间隔基本一致的条件下,还需确保所有 sql 按顺序串行执行,因此两个相邻 sql 回放时间间隔跟源端可能存在差异,但差异是毫秒级别的,可以忽略,但在业务量较少的场景下,时间间隔可以达到一致

本文分享自微信公众号 - openGauss(openGauss)。
如有侵权,请联系 [email protected] 删除。
本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

你可能感兴趣的:(openGauss新特性 | 录制回放功能增强特性说明)