新钛云服已累计为您分享799篇技术干货
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
概要报告
结果报告相关参数解读
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的数量
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:报错信息概要
如有相关问题,请在文章后面给小编留言,小编安排作者第一时间和您联系,为您答疑解惑。
推荐阅读
推荐视频