Frodo数据库流量回放工具:数据库性能评估与迁移优化指南

dea8f1d6c6fce8a9abbd156aa8b84109.gif

 新钛云服已累计为您分享799篇技术干货

ecb948a752d3ea3be44c4ac16718b5ad.gif

Frodo简介

Frodo是一款专业的数据库流量回放工具,专为数据库迁移和切换过程中的性能评估而设计。该工具通过精准捕捉与模拟实际业务SQL流量,实现对数据库迁移前后性能差异的准确评估,为数据库性能提供科学、可靠的量化分析。

Frodo核心功能

SQL流量回放

基于采集到的SQL流量,模拟源库业务行为,支持多线程技术进行SQL的倍速回放,有效模拟数倍并发下的峰值流量。

数据库性能压测

利用真实SQL流量,模拟源库行为,评估目标库性能是否达标,解决数据库迁移、扩容等场景下的性能压测需求。

Frodo流量回放支持产品

源数据库

Oracle、DRDS、PolarDB-X、RDS、自建MySQL

目标数据库

PolarDB for Oracle、RDS for MySQL、自建MySQL、PolarDB-X、PolarDB for PG、PolarDB for MySQL

Frodo工具限制与要求

  • 工具依赖:Java 1.8、jpcap-0.7-19 (capture工具包)

  • 权限要求:根据回放SQL类型,赋予相应权限,如只读、增删改查或完整DML/DDL权限。

  • 网络抓包限制:不支持BLOB流式写入场景。

  • 部署要求:抓取时需与MySQL机器部署在同一台机器上,回放时可部署在不同机器。

  • 数据影响:默认回滚数据,但无法确保目标库数据完全无影响。

  • 报告输出:报告包含中文,Linux环境需添加中文字体包,避免Excel报告输出失败。

  • 生产环境使用限制:严禁使用生产库进行回放,如需流量预热,必须使用只读账号,避免生产数据污染。

Frodo流量采集功能

参数解析:支持多种参数,如捕获方法、回放场景、端口、用户名、密码、网络设备、并发数、运行时间、日志等级等。

capture-method 获取SQL的方式:net_capture 抓包;general_log 从general log读取
replay-to 回放场景:file:输出json格式的sql到文件;stdout:输出到控制台
port 源库端口
username 源库用户名
password 源库密码
network-device 抓包网卡,例如eth0
concurrency 并发数
time 运行时长,单位秒
log-level 打印日志等级 info|debug|error

实时抓包:支持将捕获的SQL流量实时输出到文件。

java  -jar mysqlsniffer.jar --capture-method=net_capture  --replay-to=file --port=3306 --username={用户名} --password={密码} --network-device=eth0  --concurrency=32

实时读审计:支持从general log读取并输出SQL流量。

java  -jar mysqlsniffer.jar --capture-method=general_log  --replay-to=file --port=3306 --username=root --password=  ****  --concurrency=32 --time=10000

测试环境操作步骤

采集数据:使用指定命令,采集源数据库信息,输出到JSON文件。  

采集数据库信息:192.168.73.23 
抓取命令:nohup java -jar /frodo-1.1.33/collector/mysqlsniffer-1.1.33/mysqlsniffer.jar --capture-method=net_capture --replay-to=file --port=3306 --username={账号} --password={密码} --network-device=eth0 --concurrency=256 --time=10000 --log-level=info &
抓取文件:/frodo-1.1.33/collector/mysqlsniffer-1.1.33/logs/out-192.168.73.23.json

流量回放:使用指定命令,将采集到的SQL流量回放到目标数据库,支持多种参数配置。

回放数据库信息:192.168.73.24
回放命令:java -Xmx4G -Xms1G -jar frodo.jar --file={回放SQL存放路径} --source-db=mysql --replay-to=mysql --filter=DQL --port=3306 --host=192.168.73.24 --username={账号} --password={密码} --concurrency=64 --time=10000 --task={业务系统-任务名} --log-level=info --rate-factor=1 --disable-insert-to-replace  --database={回放到库的库名} --license-path=/root/frodo-1.1.31/license.key

结果报告:回放结束后,生成详细报告,包括概要报告和SQL详情,提供全面的性能评估数据。

回放进程结束后,默认报告路径./run/#{task}/result.xlsx

f27238a16c591a7d3f5b1138e7b07c93.png

概要报告

结果报告相关参数解读

  • SQL成功率:成功请求数/总请求数

  • 模板SQL数量:去参数化后的SQL称为模板SQL

  • 模板SQL成功率:模板SQL成功数/模板SQL数量

  • 平均执行时间:SQL平均耗时

  • 平均RT>10s:平均耗时超过10s的模板SQL的数量

  • 平均RT1s~10s:平均耗时在1s~10s之间的模板SQL的数量

  • 平均RT100ms~1ms:平均耗时在100ms~1s之间的模板SQL的数量

  • 平均RT10ms~100ms:平均耗时在10ms~100ms之间的模板SQL的数量

  • 平均RT1ms~1m0s:平均耗时在1ms~10ms之间的模板SQL的数量

  • 平均RT<1ms:平均耗时小于1ms的模板SQL的数量

40cf5812a1cc8b30be52278be8a55538.png

SQL详情

sqlId:sql指纹
requests:请求总数
Throughput (requests/second):每秒吞吐
Request Errors:请求失败数
request error/second:每秒请求失败数
SrcDB Minimum RT(us):原库最小耗时
Minimum RT(us):目标库最小耗时,包含网络耗时和jdbc处理耗时
SrcDB Average RT(us):原库平均耗时
Average RT(us):目标库平均耗时,包含网络耗时和jdbc处理耗时
SrcDB Maximum RT(us):原库最大耗时
Maximum RT(us):目标库最大耗时,包含网络耗时和jdbc处理耗时
schema:目标库回放schema
Sample sql:sql示例
Error Msg:报错信息概要

如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。

    推荐阅读   

4852eafc540b20ae476b00d0905319fb.png

8abac40b57a44493ac6485d20bcb64b5.png

    推荐视频    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值