首批通过分布式安全可靠测评,为关键业务系统打造
评估 MySQL 数据库和 OceanBase 数据库的性能差异
更新时间:2026-04-01 16:30:35
本文为你介绍如何评估 MySQL 数据库和 OceanBase 数据库的性能差异。
运行 start.sh 时,各参数的详细介绍请参见 产品形态。如果是 Windows 环境,请替换 sh bin/start.sh 为 start.bat。
打开 General Log 配置,采集器源端 MySQL 数据库的流量数据,生成对应的 General Log 文件。
分析文件。
录制好的文件保存在
/home/mysql/gl中,将其压缩后上传至目标机器,运行下述命令进行文件分析。sh bin/start.sh \ # 任务的名称,可以随意取值。 --name test_mysql_replay \ # 固定值,表示进行 REPLAY。 --mode REPLAY \ # 固定值,表示 REPLAY 的采集阶段。 --replay-phase COLLECT \ # 处理的文件路径。 --source-file "/home/mysql/gl" \ # 该参数设置为 1,通常 General Log 只有一个。 --parallel-count 1 \ # 固定值,设置为 MYSQL。 --source-type MYSQL \ # 该参数设置为 1,通常 General Log 只有一个。 --parse-thread-count 1 \ # General Log 没有 Schema 信息,仅支持单 Schema 回放。执行回放时,请确保该参数中指定的 Schema 名称和目标端 OceanBase 数据库中的 Schema 名称完全一致。 --source-db-user "schema_name" # General 中时间戳的格式需要根据日志中的实际情况填写。 --log-time-regex "\\\d{4}-\\\d{2}-\\\d{2}T\\\d{2}:\\\d{2}:\\\d{2}\\\.\\\d{6}\\\+08:00"回放文件。
sh bin/start.sh \ # 任务的名称,可以随意取值。 --name send1 \ # OceanBase 数据库的租户类型。 --ob-mode MYSQL \ # 固定值,表示进行 REPLAY。 --mode REPLAY \ # 固定值,表示 REPLAY 的回放阶段。 --replay-phase SEND \ # 包括 READ、WRITE、READ_WRITE、PL 和 ALL,默认值为 READ。 --replay-mode ALL \ # 处理的文件路径。 --source-file "./dump/test" \ # 按照顺序进行回放。 --replay-process-name "sort" \ # 5 秒后开始回放,默认值为 0。 --delay-start-time 5 \ # 回放倍数,默认按照原始速度回放(1 倍)。 --replay-scale 5 \ # 抽样率,0~1 之间,默认为 1,即全抽样。 --replay-sample 1 \ # 最大线程数,默认值为 400,取值不能超过 2000。 --max-parallel 400 \ # 由于回放时存在冷启动问题,需要配置一个预热时间。 --warm-up 30 \ # 目标端的地址,目前仅支持回放到一个 IP 地址。 --target-db-host xxx.xxx.xxx.1 \ # 目标端的端口。 --target-db-port 2883 \ # 租户和集群名称,使用 # 分隔。前面是租户,后面是集群。 # 多 USER 回放目前仅支持同一租户下的多用户。 --target-db-tenant-cluster "<tenant_name>#<cluster_name>" \ # 登录的用户名和密码,使用冒号(:)分隔。多个用户名及密码之间使用英文逗号(,)分隔。请注意 DuserAndPassword 前面只有一个 -,并且第一个用户名必须是 ROOT、SYS 或具备较高权限的超级用户,用于获取 OceanBase 数据库的 SQL AUDIT 信息。如果第一个用户账号不能访问需要回放的 Schema,则需要在后面填写可以访问到对应 Schema 的用户名和密码。 -DuserAndPassword="root:******,username:******" \ # JDBC 连接自定义配置,根据实际情况配置特定的 JDBC 参数(例如,useUnicode:true,characterEncoding:utf8)。如果没有,则无需填写该参数。 -DjdbcConnectionConfigure=useUnicode:true,characterEncoding:utf8 \ # 设置后,等待 XX 分钟后发送无进展,将强行退出程序。 --monitor-processor-time 10 \ # 扫描 SQL_AUDIT 的周期,单位为秒。默认值为 60,请根据实际情况配置。 --sql-audit-interval 300 \ # OceanBase 数据库需要回放的 Schema。 --target-db-schemas "AAA,BBB" \ # 目标端的数据库类型。 --target-db-type OBMYSQL \ # OceanBase 数据库的版本号。如果您使用的是 OceanBase V4.x,请填写版本号为固定值 4.2.0。 --target-db-version 4.2.0回放执行本命令后,会输出实时的回放进度。
目标端 SCHEMA :::SCHEMA : [ schema_name ] : -----================ [ schema_name ] 流量直方图 [步长: 12 秒 ]===============------- 4412.0┤ █ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 4191.4┤ █ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ 3970.8┤ █ ─ ─ ─ ─ ─ ─ ─ █ █ ─ ─ ─ ─ █ ─ 3750.2┤ █ ─ ─ ─ ─ ─ ─ ─ █ █ ─ ─ ─ ─ █ ─ 3529.6┤ █ ─ ─ ─ ─ ─ ─ ─ █ █ ─ ─ ─ ─ █ ─ 3309.0┤ █ ─ ─ ─ ─ ─ ─ ─ █ █ █ ─ ─ █ █ ─ 3088.4┤ █ ─ ─ ─ ─ ─ ─ █ █ █ █ █ ─ █ █ █ 2867.8┤ █ ─ ─ █ ─ ─ █ █ █ █ █ █ █ █ █ █ 2647.2┤ █ ─ ─ █ ─ ─ █ █ █ █ █ █ █ █ █ █ 2426.6┤ █ ─ ─ █ █ ─ █ █ █ █ █ █ █ █ █ █ 2206.0┤ █ ─ ─ █ █ █ █ █ █ █ █ █ █ █ █ █ 1985.4┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1764.8┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1544.2┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1323.6┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 1103.0┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 882.4┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 661.8┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 441.2┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 220.6┤ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ 开始时间 : 2021-05-31 00:14:04 结束时间 : 2021-05-31 00:17:15 整体耗时(秒) : 190 请求数量 : 50774 ******************************************************************************************查看回放报告。
回放结束后,会在
report目录下生成包含 CSV 文件的文件夹。您可以通过文件夹下 CSV 格式的报告文件来查看源端和目标端流量回放对比情况,CSV 文件中 SQL 会根据 SQLID 进行聚合。文件夹的命名格式为“时间日期+字符串”,CSV 文件的命名格式为 "Schema 名称.csv"。如果有多个 Schema,则会生成多个对应的 CSV 文件。