GaussDB技术解读系列:5分钟带您了解DRS录制回放

一、什么是DRS录制回放?

DRS录制回放是将源数据库发生的真实业务流量,在目标数据库模拟执行,从而观察和检验目标数据库的功能和性能表现。录制回放主要分为录制、回放两个阶段,录制过程是从源数据库上将所需时间段内的全部SQL原语句(包括增、删、改、查)通过审计日志下载、录制代理等进行采集;回放是将采集到的全部SQL语句在目标数据库上进行执行(目标数据库需有源数据库的初始数据)。

二、DRS录制回放与DRS、UGO的关系

数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效,用于数据库实时迁移和数据库实时同步的云服务,着重于数据库毫秒级数据同步,支持同构异构数据库之间的数据传输/搬迁,降低数据库之间数据流通的复杂性,减少数据传输成本。

数据库和应用迁移 UGO(Database and Application Migration UGO,简称UGO)是专注于异构数据库结构迁移的云服务,可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB的SQL语法,最大化降低用户数据库的迁移成本。

录制回放是DRS提供的业务仿真特性,结合DRS+UGO,以及DRS提供的数据一致性对比能力,形成了华为云数据库迁移整体解决方案,以保障客户割接过程的平滑性以及割接后数据库的稳定可靠运行。

三、技术原理

1.初始数据生成

在录制回放开始前,需要为目标数据库创建初始数据,初始数据的来源是源数据库某一时刻的快照数据。一致性模式场景下需要构建两个目标数据库,以某商业数据库(以下简称X数据库)到GaussDB为例,一个是X数据库回放数据库,一个是GaussDB回放数据库,两个回放数据库的初始数据必须完全一致。X数据库回放数据库的初始数据可以通过X数据库的备份恢复机制生成,GaussDB回放库的初始数据可以通过DRS数据同步能力,把X数据库回放数据库的初始数据全量同步过来。两个回放数据库的初始数据生成之后,建议做一次数据对比,确保数据一致。

2.流量录制

公有云场景主要支持自建或其他云上的MySQL生态数据库到华为云RDS for MySQL、GaussDB(for MySQL)的录制回放,流量录制以源数据库提供的全量SQL、审计日志等技术为主。

具体流程如下:

1) 在源数据库上开启审计日志或者全量SQL,等待业务执行一段时间。

2) 将业务执行期间生成的审计日志或者全量SQL上传到华为云OBS。

3) 在DRS上创建录制回放任务,选择上传到OBS的审计日志或全量SQL文件,DRS录制回放任务会读取审计日志或全量SQL文件,根据任务配置的源数据库类型解析出数据文件中的SQL信息,包含SQL语句、SQL类型、SQL执行时间、Schema名称、Session ID、客户端IP等,根据SQL语句的执行时间进行分片存储在元数据库中,在目标数据库上进行回放。

HCS场景主要支持常用自建数据库到GaussDB等几条链路的录制回放能力,流量录制均基于网络旁路抓包与协议解析技术,通过部署抓包Agent,在服务器上对数据库端口进行TCP/IP网络数据包抓取,分析推测出业务执行的SQL信息,该技术对源数据库影响极小且SQL抓取率极高。具体流程如下:

1) 在源数据库上部署流量采集Agent包。

2) Agent采集服务器上对应数据库端口的TCP/IP网络包,通过UDP协议发给流量采集器,生成流量数据文件。

3) 流量解析模块读取流量数据文件,分析推测出业务执行的SQL信息,包含连接ID、客户端类型、SQL类型、SQL语句、绑定变量值、执行开始时间、执行结束时间、执行是否成功、存储过程参数等信息,根据SQL语句的执行时间进行分片存储在元数据库中,在目标数据库上进行回放。

3.流量回放

将流量录制的SQL语句在目标上根据配置的回放模式进行回放,实现业务SQL的兼容性验证、执行性能评估、结果一致性验证等。具体原理如下:

1) 异构场景下,会对流量录制的SQL语句进行语法转换,转换成目标数据库支持的语法,避免因为SQL语法的差异导致在目标数据库回放时出现语法错误。

2) 语法转换成功后,通过流量控制器将待回放的SQL语句根据不同的回放模式进行调度控制,以便验证不同场景的回放结果。流量控制器支持三种回放模式:

仿真模式 :完全模拟源数据库的流量和并发进行回放,以便验证相同压力下目标数据库的运行情况。

摸高模式 :把源数据库流量等比例成倍增加压力,以便验证目标数据库可以承受的最大压力情况。

一致性模式:以单并发的方式在两个目标数据库回放,确保回放的顺序完全一致,以达到回放后的数据也是一致的目的。回放完成后可通过数据对比工具对比两个目标库的数据,在排除了幂等SQL的前提下,验证所有SQL是否在两个目标库上语义完全一致。

3) SQL回放器往目标数据库中并发回放SQL,场景不同,回放方式也不同。仿真和摸高模式,采用多并发回放,两个目标数据库是独立的,互不干扰。一致性模式,采用单并发回放,两个目标数据库回放是同步,即对于一条SQL,先回放同构目标数据库,成功之后再回放异构目标数据库,如果同构目标数据库回放失败,则该SQL就不再异构目标数据库上回放了。

4) 回放完成的SQL会经过回放分析器进行分析,将回放异常的结果以及根据配置的慢SQL标准分析得出的慢SQL结果存入回放记录表中。

四、应用场景

1. 数据库兼容性和性能验证

互联网客户将云数据库搬迁到华为云数据库RDS for MySQL或GaussDB(for MySQL),以及金融客户使用华为云GaussDB数据库替代传统数据库,可以采用录制回放验证华为云数据库的稳定性和性能。

2. 数据库重大问题复现定位

针对异构数据库搬迁,如某商业数据库搬迁到GaussDB,如内核做了该商业数据库类型的兼容性或者使用UGO进行对象迁移,可以采用录制回放验证存储过程、触发器等对象的执行成功率和结果的正确性。

3. 数据库大版本间升级验证

RDS for MySQL、GaussDB(for MySQL)及GaussDB从各自的低版本升级到高版本,可以采用录制回放验证版本升级后是否存在功能变化或性能劣化。

DRS录制回放,通过业务仿真提前感知业务稳定性和性能,保障客户割接后数据库的稳定可靠运行。

今天的分享就到这里了,欢迎小伙伴们讨论交流~

相关推荐
松涛和鸣8 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa26 分钟前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦1 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·2 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德2 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql