mysql流量回放_OceanBase迁移验证测试工具(DBReplay)

背景介绍

传统数据库如何平滑迁移至OceanBase,迁移到OceanBase后如何平滑升级,如何保障稳定性,这是架构师们不得不考虑的问题。今天我们将重点介绍一个专门为这些场景而生的利器 —— DBReplay。

DBReplay是从生产库截取的真实流量,然后再在测试库回放用于测试数据库系统的功能和性能的工具。它不仅回放读流量,也回放写流量,保证在整个回放过程中的数据和真实线上的数据是一致的,所有查询基于的快照点和真实线上也是一致的,并且保证SQL执行过程中的数据集与生产库完全一致,从而在测试库覆盖生产库的每一个功能场景和性能场景。

整体架构介绍

DBReplay的整体架构图如上图所示:通过备份恢复功能,使用在线库的数据恢复出一个测试库(注意:是开始截取流量前,所有事务已经提交),恢复到具体某一个点,称为回放点

截取在线库回放点以后所有的流量生成流量文件,流量文件的结束点称为截止点

通过一个离线处理的程序分析所有的流量文件,生成真正用于回放的回放文件。这个过程主要解决事务间的依赖关系

主控机读取流量回放文件控制多个客户端回放截取流量到测试库,回放期间,我们可以进行各项测试工作,例如业务功能验证,数据库升级验证,外部系统功能验证

采集流量回放期间测试库的各项指标,与在线库进行比对,分析功能差异,性能差异,数据差异

通过备份恢复功能,使用在线库的数据(注意:是截取流量结束后,所有事务已经提交)恢复出一个比对库,恢复到截止点,与测试库的数据进行全量比对,判断数据是否完全一致

应用场景介绍

1. 传统数据库平滑迁移OceanBase

传统数据库迁移OceanBase的过程中,最大的难点就是如何验证OceanBase的兼容性。业务系统非常复杂,例如订单型业务、状态型业务、契约型业务、分析型业务,这些业务的流量特点和使用数据库的方式各不相同,大量专门设计的测试验证方案不但成本昂贵,而且很难完全覆盖真实场景。DBReplay正是为这一场景而生,我们以MySQL迁移OB为例,其架构图如下:

由于目标库是MySQL数据库,为了避免对业务系统的侵入,我们采取了tcpdump的方式去抓取流量,这是一个通用的方案,避免各种环境下的权限问题。抓取的流量分别在MySQL测试环境和OB测试环境进行回放,并做功能比对、性能比对和数据比对,并生成报表。

结合OceanBase的MySQL兼容性和Oracle兼容性,最终做到传统数据库到OceanBase的平滑迁移。基于该方案,我们支持了蚂蚁内部的MySQL/Oracle上的业务向OceanBase的平滑迁移。

2.OceanBase平滑升级

业务系统运行在OceanBase以后,OceanBase需要给这些业务系统在响应时间,吞吐量,高可用,可扩展性等方面提供服务级别的保证。对OceanBase的任何变更(例如OceanBase升级),都需要进行全方面的测试和验证,然后才能发布到生产环境。大量的测试验证方案很难完全覆盖真实场景,DBReplay解决了以上挑战。我们可以在流量回放阶段进行OceanBase升级,并验证升级过程中的稳定性及升级后的执行计划变化,对于不正确的执行计划进行提前绑定。

3.功能验证

DBReplay还提供了加速回放功能,可以用来模拟大促等业务流量暴增的场景;可以搭建回归环境,通过DBReplay回放业务流量,从而进行功能验证,例如我们在蚂蚁内部搭建了一个高可用体系回归环境,进行7*24的故障注入,验证高可用体系的覆盖率和正确性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值