暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

新钛云服 2024-06-19
326

 新钛云服已累计为您分享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:报错信息概要



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




                    推荐阅读   




                    推荐视频    




                文章转载自新钛云服,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论