MySQL数据库流量回放

流量回放能够在迁移之前对目标数据库进行全面的兼容性和性能测试,从而将潜在风险降至最低。假设是客户将数据库由MySQL迁移到PolarDB-MySQL,本文将详细阐述MySQL数据库流量回放功能的使用流程。

第一步:准备数据

您可以使用CMH提供的工具mysqlsniffer。这个工具可以帮助您从MySQL数据库中捕获SQL执行记录,以便后续在目标数据库上进行流量回放。下面是详细的步骤和参数说明:

1、安装mysqlsniffer

创建一个目录来存放mysqlsniffer工具(工具可以联系CMH获取)

bash
Copy code
mkdir -p /home/frodo/collector

2、配置并运行mysqlsniffer

mysqlsniffer支持两种方式获取SQL流量:抓包(net_capture)和从general log读取(general_log)。以下是常用的参数说明:

  • --capture-method:获取SQL的方式。

    • net_capture:通过网络抓包获取SQL。

    • general_log:从MySQLgeneral log文件中读取SQL。

  • --replay-to:回放场景。

    • file:输出JSON格式的SQL到文件。

    • stdout:输出到控制台。

  • --port:源库端口。

  • --username:源库用户名。

  • --password:源库密码。

  • --network-device:抓包网卡,例如eth0

  • --concurrency:并发数。

  • --time:运行时长,单位为秒。

  • --log-level:打印日志等级,可选值为infodebugerror

假设您的MySQL数据库运行在eth0网卡上,端口为3306,用户名为root,密码为password123,并且您希望将SQL记录保存到文件中,可以使用以下命令:

bash
Copy code
/home/frodo/collector/mysqlsniffer \
  --capture-method net_capture \
  --replay-to file \
  --port 3306 \
  --username root \
  --password password123 \
  --network-device eth0 \
  --concurrency 10 \
  --time 3600 \
  --log-level info

3、上传SQL文件

将生成的SQL文件上传到阿里云OSS上的某个Bucket中。确保您已经创建了一个OSS Bucket,并且有权限访问它。

如果您认为mysqlsniffer不满足您的要求,也可以使用开源工具Tshark来进行采集。

第二步:进入CMH控制台

访问CMH控制台并登录您的阿里云账号。

第三步:创建新的回放计划

  1. CMH控制台上找到“迁移能力->流量回放”菜单,并点击进入,链接:新建回放计划

  2. 点击页面上的“新建回放计划”按钮开始配置您的回放任务。

image

1、填写基本信息:

  • 任务名称:给您的回放任务起个名字。

  • 回放类型:选择“流量回放”,因为这是用于性能测试的场景。

  • 源数据源:根据实际情况选择您的源数据库类型,这边选择MySQL。

  • 目的数据源:选择“PolarDB MySQL版”。然后按照提示填写或选择相应的实例信息,包括地域、实例ID等。获取方式:通常情况下,对于阿里云服务,推荐使用“实例获取”的方式直接关联您的数据库实例。数据库名称/用户名/密码:输入对应的信息以完成连接设置。

  • SQL文件类型:如果您使用mysqlsniffer采集,则选择标准格式,如果使用Tshark采集,则选择Tshark格式。

  • 回放实例:如果您是第一次使用,选择“创建新实例”,如果已创建过实例,可以选择已有实例。

  • 回放文件Bucket地址:已上传您之前准备好的SQL文件的OSS Bucket。

image

2、设置回放参数:

  • 模拟客户端数:设定并发用户数量,这将直接影响到产生的负载大小。

  • 回放速度因子:调整回放的速度倍率,默认为1表示原速播放。

第四步:执行回放任务

完成上述配置后,保存设置。

在流量回放计划详情页面点击创建任务,选择回放实例和回放文件:

选择回放实例

此处可以选择多个回放实例,选择多个实例,则该任务在所有实例会同时执行回放文件,如果实例数为N,则对数据库的压力也增加N

选择回放文件

选择回放计划关联的OSS Bucket中上传好的回放文件,该文件会在每次创建回放任务时刷新到回放实例中。

然后再确认其他配置参数后,提交任务。

在任务列表页面启动回放任务。系统会按照您的配置,在PolarDB MySQL上执行SQL语句,并监控其性能表现。

image