数据库迁移是一个复杂且风险较高的过程,其成功与否直接关系到业务的稳定性和连续性。迁移目标端数据库的兼容性和性能一直是用户关注的焦点,任何兼容性问题或性能瓶颈都可能导致迁移失败,甚至造成业务中断和数据丢失。为了有效地评估迁移风险,并确保迁移的平稳过渡,流量回放技术应运而生,它提供了一种工具化的解决方案,能够在迁移之前对目标数据库进行全面的兼容性和性能测试,从而将潜在风险降至最低。本文将详细阐述流量回放功能的使用流程,并深入探讨其在数据库迁移项目中的关键作用。流量回放并非简单的数据库压力测试,而是通过对生产环境中真实业务流量的完整回放,模拟真实的业务场景,对目标数据库进行全面的性能和兼容性验证。这与传统的基于预设脚本的压力测试有着本质区别,后者难以全面覆盖真实业务场景的复杂性和多样性,容易导致测试结果的偏差。而流量回放技术则能够精准地还原生产环境的运行状态,从而更有效地评估目标数据库的承载能力和兼容性。
1、业务流程简介
流量回放功能的使用流程大致分为以下几个步骤:
第一步:数据采集。 在生产环境中,需要选择合适的工具对数据库的读写请求进行捕获和记录。此过程需要谨慎操作,避免对生产环境造成过大的影响。通常,可以使用数据库代理、网络抓包工具或数据库自身的审计功能来实现数据采集。采集到的数据需要包含完整的SQL语句、参数以及执行时间等关键信息,这些信息将作为流量回放的输入。数据的采集方式和格式需要与后续的流量回放工具兼容。对于敏感数据,需要进行脱敏处理,确保数据安全。
第二步:数据预处理。 采集到的原始数据通常需要经过预处理,以去除冗余信息,优化数据格式,并进行必要的脱敏处理。预处理过程可能包括数据清洗、数据转换、数据抽样等操作,以提高回放效率并减少对目标数据库的负载。根据目标数据库的特性,可能需要对SQL语句进行调整,以保证其在目标数据库环境下的正确执行。
第三步:流量回放。 预处理后的数据将被输入到流量回放工具中进行回放。流量回放工具会模拟真实的业务流量,对目标数据库进行并发访问,以评估其性能和兼容性。在此过程中,需要监控目标数据库的CPU利用率、内存使用率、I/O性能等关键指标,并记录回放过程中的错误信息和异常情况。流量回放工具通常允许用户自定义回放速度、并发数等参数,以模拟不同的业务场景。
第四步:结果分析。 流量回放完成后,需要对收集到的数据进行分析,评估目标数据库的性能和兼容性。分析内容包括但不限于:数据库响应时间、吞吐量、错误率、资源利用率等。 通过对这些指标的分析,可以识别出潜在的性能瓶颈和兼容性问题,为数据库迁移方案的优化提供依据。 此外,还需要对回放过程中出现的错误信息进行详细分析,找出其根本原因,并采取相应的措施进行解决。
第五步:报告生成。 最后,需要生成一份详细的流量回放报告,总结测试结果,并提出相应的改进建议。该报告应包含测试环境配置、测试数据概要、性能指标、错误信息等内容,为数据库迁移决策提供重要的参考依据。
通过上述步骤,流量回放功能能够有效地评估数据库迁移目标端的兼容性和性能,降低迁移风险,确保数据库迁移的顺利完成。 这项技术为数据库迁移项目提供了可靠的保障,有助于企业减少迁移成本,提高业务连续性,最终实现数据库迁移的平稳过渡。 合理地使用流量回放工具,将有效提升数据库迁移项目的成功率。
2、License申请与查看
在云迁移中心页面,依次点击割接->流量回放进入产品界面,首次进入会看到使用引导,第一步为License申请,点击申请License按钮,会自动生成一个License。申请License是为了防止Agent被滥用,起到保护Agent的作用,License本身包括后续的Agent能力(购买ECS除外),流量回放的使用都不会产生费用。
申请完成后,可以在页面看到License的过期时间(有效期为三个自然月),点击可以看到当前License
3、Agent管理
License申请完成后,需要进行流量回放Agent的部署,需要您提供一台或多台ECS来供CMH进行Agent的部署,具体ECS数量请根据实际情况进行评估。
ECS规格建议:至少8核16G
操作系统建议:CentOS,Alibaba Cloud linux
网络要求:创建的ECS需要和数据源网络打通
其他要求:部署前请自行在ECS安装java
部署说明:
如果使用的是阿里云上ECS,且ECS安装有云助手(阿里云创建的ECS默认就有云助手),建议使用自动部署方式进行Agent安装;
如果非阿里云ECS,但和阿里云VPC打通,或者虽然是阿里云ECS但机器未安装或由于某些原因安装不成功云助手,建议使用手动部署-私网连接方式部署Agent。
如果非阿里云ECS,且网络未打通,但有公网IP的,建议使用手动部署-公网连接方式部署Agent。
下面是三种部署模式的具体说明:
3.1 自动部署
目前,支持自动部署的地域有杭州、上海,如有其他地域的部署需求,请通过售后在线联系我们。
注:
自动部署只支持阿里云创建的ECS。
安装前请先开通私网连接服务。
准备好ECS后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程
安装方式选择“自动部署”,依次填写Agent名称、选择地域、选择ECS,完成后,点击提交,CMH会自动完成流量回放Agent的部署流程。
部署过程中,可以看到Agent的部署过程。
部署完成后,可以在Agent列表看到部署的Agent。
3.2 手动部署
3.2.1 公网手动部署
公网手动部署,需要ECS开通公网,CMH可以连接到ECS。
注:
ECS可以是任意平台或者IDC的机器,只需要CMH可以公网访问。
准备好ECS后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程
安装方式选择“手动部署”,依次填写Agent名称、选择公网、填写IP和端口,完成后,点击下一步
在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成Agent在ECS的部署。
部署完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。
建立连接过程可以在线查看
部署完成后,可以在Agent列表看到部署的Agent。
3.2.2 私网手动部署
私网手动部署,支持的地域有杭州、上海,如有其他地域的部署需求,请通过售后在线联系我们。
注:
ECS可以是阿里云或非阿里云机器,只需要VPC打通。
安装前请先开通私网连接服务。
准备好ECS后,点击Agent管理进入Agent的安装页面
点击Agent安装开始安装Agent流程
安装方式选择“手动部署”,依次填写Agent名称、选择私网、选择地域,选择VPC,填写IP和端口,完成后,点击下一步
在下一步中,会给出该ECS的安装指令,点击拷贝将该指令拷贝后,到ECS粘贴后执行,即可以完成Agent在ECS的部署。
安装完成后,继续点击下一步,然后点击连接按钮,开始与Agent建立连接。
建立连接过程可以在线查看
部署完成后,可以在Agent列表看到部署的Agent。
3.3 Agent操作
3.3.1 停止
自动部署的Agent,状态为在线时,可以通过点击停止按钮,来关停该Agent
停止后,ECS上Agent会被停止,列表状态为停止,停止状态的Agent不可以执行回放任务。
3.3.2 启动
停止状态的Agent,可以通过点击启动按钮,来启动该Agent
启动后,Agent状态变为在线。
3.3.3 删除
不再使用的Agent,可以在Agent列表进行删除,删除前,需要将该Agent与回放计划进行解绑。
3.4.4 重连
手动部署的Agent,在Agent的断连后,Agent状态会被置为离线,在Agent确认启动后,可以点击重连使CMH与Agent重新建立连接
重连成功后,Agent状态重新置为在线。
4、新建回放计划
4.1 创建计划
前提条件:
创建回放计划之前,需要先按照上文指引完成Agent的安装。
请提前抓取源端数据源的生产流量,不同的数据源采集方式不同,请选择合适的流量抓取方案,抓格式见文档,replay_sql_example.json抓取完成后,转为回放要求的json格式。
请提前将回放使用的json文件上传至Agent。
完成agent的安装后可进入回放计划的创建,整体业务流程是先创建回放计划,然后在回放计划中创建回放任务,一个回放计划中可以包含多个回放任务。
进入云迁移中心,在 割接-流量回放中,点击新建回放计划即可开始创建回放计划。
第一步:填写基本信息。
目前支持的源端数据库类型包括与目标端数据库类型如下(其中源端数据库类型暂不支持PostgreSQL):
sql文件路径:需要将回放SQL文件上传到Agent的ECS的某个目录下,并将文件绝对路径填在输入框。
agent选择与数据库连通性测试:只能选择处于正常状态的agent,且数据库连通性测试通过后,在完成计划创建后,创建的任务才能被正常执行。
第二步:填写回放计划基本参数,如下图。
模拟客户端数:控制并发数,数值越大,并发数越高。
回放速度因子:速度控制,数值越大,速度越高,如1表示原速,2表示2倍速度,10表示10倍速度。
4.2 计划详情
完成计划创建后,可以在流量回放的列表中看到所登录账号下的所有的流量回放计划。点击计划标题或者操作中的详情按钮可以进入计划详情。
基本信息:展示计划ID、源数据类型、目标数据类型、最后一次任务状态、创建时间、SQL文件路径等信息。
任务概况:展示当前回放计划下的所有回放任务的整体情况,包括回访执行次数、最近一次回放成功率、成功请求数、总请求数、agent列表等信息。
任务列表:展示当前回访计划下的回放任务列表。
4.3 创建回放任务
完成回放计划的创建后,在回放计划详情中可以创建回放任务(如下图)。
点击“创建任务”后开始创建回放任务,回放任务被创建后不会立即执行,创建后需要手动点击“执行”,所以测试过程中可以放心创建。一些关键参数的释义如下:
选择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,默认关闭。
创建好任务后,在任务列表的行操作中点击“执行”可开始执行该任务。
4.4 查看任务进度
创建任务后,在任务的状态列中点击“查看进度”即可查看任务进度。
4.5 查看回放报告
在任务执行完成后,点击任务行操作的详情按钮可以查看回放报告。
请求概况:查看请求总数、平均执行时间、平均RT等信息。
执行详情:以列表形式,展示每个Sql模板的执行情况,包括Sample Sql、schema、执行状态、请求数、请求错误数、源端RT、目标端RT。在行操作中可以查看错误信息。
导出报告:点击右上角按钮可以导出Excel格式的报告。