数据库迁移是一个复杂且风险较高的过程,其成功与否直接关系到业务的稳定性和连续性。迁移目标端数据库的兼容性和性能一直是用户关注的焦点,任何兼容性问题或性能瓶颈都可能导致迁移失败,甚至造成业务中断和数据丢失。为了有效地评估迁移风险,并确保迁移的平稳过渡,流量回放技术应运而生,它提供了一种工具化的解决方案,能够在迁移之前对目标数据库进行全面的兼容性和性能测试,从而将潜在风险降至最低。本文将详细阐述流量回放功能的使用流程,并深入探讨其在数据库迁移项目中的关键作用。流量回放并非简单的数据库压力测试,而是通过对生产环境中真实业务流量的完整回放,模拟真实的业务场景,对目标数据库进行全面的性能和兼容性验证。这与传统的基于预设脚本的压力测试有着本质区别,后者难以全面覆盖真实业务场景的复杂性和多样性,容易导致测试结果的偏差。而流量回放技术则能够精准地还原生产环境的运行状态,从而更有效地评估目标数据库的承载能力和兼容性。
1 新建回放计划
3.1 创建计划
前提条件:
创建回放计划之前,需要先按照上文指引完成Agent的安装。
请提前抓取源端数据源的生产流量,不同的数据源采集方式不同,请选择合适的流量抓取方案,抓格式见文档,replay_sql_example.json抓取完成后,转为回放要求的json格式。
请提前将回放使用的json文件上传至Agent。
进入云迁移中心,在 割接-流量回放中,点击新建回放计划即可开始创建回放计划。

第一步:填写基本信息
如下图所示,回放类型涵盖流量回放、结果对比两种。流量回放是在目标端执行回放文件SQL,检查执行成功与否;结果对比分别在源端、目标端执行相同的回放文件SQL,执行后对比结果是否相同,并展示结果不同的数据详情。

目前支持的源端/目标端数据库类型包括与目标端数据库类型包含如下:


源端/目标端数据库信息获取方式涵盖实例获取、地址获取两种方式(根据数据库类型不同,部分不支持实例获取)。实例获取形式:需填写实例对应地域、ID,并附上数据库名称、用户名、密码。地址获取形式:需填写对应IP、端口,并附上数据库名称、用户名、密码。

SQL文件路径:您需要将回放SQL文件上传到Agent的ECS的某个目录下,并将文件绝对路径填在输入框。
SQL文件类型:按对应回放文件类型进行选择。
agent选择与数据库连通性测试:只能选择处于正常状态的agent,且数据库连通性测试通过后,在完成计划创建后,创建的任务才能被正常执行。
第二步:填写回放计划基本参数,如下图。
模拟客户端数:控制并发数,数值越大,并发数越高。
回放速度因子:速度控制,数值越大,速度越高,如1表示原速,2表示2倍速度,10表示10倍速度。


3.2 计划详情
完成计划创建后,可以在流量回放的列表中看到所登录账号下的所有的流量回放计划。点击计划标题或者操作中的详情按钮可以进入计划详情。

基本信息:展示计划ID、源数据类型、目标数据类型、最后一次任务状态、创建时间、SQL文件路径等信息。
任务概况:展示当前回放计划下的所有回放任务的整体情况,包括回访执行次数、最近一次回放成功率、成功请求数、总请求数、agent列表等信息。
任务列表:展示当前回访计划下的回放任务列表。

2 创建回放任务
完成回放计划的创建后,在回放计划详情中可以创建回放任务(如下图)。

点击“创建任务”后开始创建回放任务,回放任务被创建后不会立即执行,创建后需要手动点击“执行”,所以测试过程中可以放心创建。一些关键参数的释义如下:
选择agent:只能选择正常状态下的agent
模拟客户端参数:回放并发执行线程数。
回放速度因子:速度控制,1表示原速,2表示2倍速度,10表示10倍速度。
是否循环回放:是否循环回放,如果开启循环回放,会忽略“回放速度因子”参数,以最大压力回放,开启循环回放后,根据设置的“回放运行时长”到期自动结束。循环回放过程中对应的写语句,如INSERT,UPDATE等可能会反复报错,建议回放类型只执行DQL。
回放运行时长:运行时间,单位秒,控制任务运行多长时间,到期会自动结束。
schema映射和过滤:例如:schema1:schema2,schema2,只重放schema1、schema2,且schema1映射到schema2。
SQL超时时间:SQL执行的超时时间。
是否commit:是否commit,默认frodo会手动开启事务进行回放,执行完一条SQL后会rollback,如果需要commit,可以设置为是。
是否跳过报错SQL:是否跳过已经报错过的相同SQL指纹的SQL,默认关闭。

创建好任务后,在任务列表的行操作中点击“执行”可开始执行该任务。

2.1 查看任务进度
创建任务后,在任务的状态列中点击“查看进度”即可查看任务进度。


2.2 查看回放报告
在任务执行完成后,点击任务行操作的详情按钮可以查看回放报告。

请求概况:查看请求总数、平均执行时间、平均RT等信息。
执行详情:以列表形式,展示每个Sql模板的执行情况,包括Sample Sql、schema、执行状态、请求数、请求错误数、源端RT、目标端RT。在行操作中可以查看错误信息。
导出报告:点击右上角按钮可以导出Excel格式的报告。
