DM 5.3.0 性能测试报告

本报告记录了对 5.3.0 版本的 DM 进行性能测试的目的、环境、场景和结果。

测试目的

该性能测试用于评估使用 DM 进行全量数据导入和增量数据复制的性能上限,并根据测试结果提供 DM 迁移任务的参考配置。

测试环境

测试机器信息

系统信息:

机器 IP操作系统内核版本文件系统类型
172.16.6.1CentOS Linux release 7.8.20033.10.0-957.el7.x86_64ext4
172.16.6.2CentOS Linux release 7.8.20033.10.0-957.el7.x86_64ext4
172.16.6.3CentOS Linux release 7.8.20033.10.0-957.el7.x86_64ext4

硬件信息:

类别指标
CPUIntel(R) Xeon(R) Silver 4214R CPU @ 2.40GHz, 48 Cores
内存192G, 12 * 16GB DIMM DDR4 2133 MHz
磁盘INTEL SSDPE2KX040T8 4TB
网卡万兆网卡

其他:

  • 服务器间网络延迟:rtt min/avg/max/mdev = 0.045/0.064/0.144/0.024 ms

集群拓扑

机器 IP部署的服务
172.16.6.1PD1, TiDB1, TiKV1, MySQL1, DM-master1
172.16.6.2PD2, TiDB2, TiKV2, DM-worker1
172.16.6.3PD3, TiDB3, TiKV3

各服务版本信息

  • MySQL 版本:5.7.36-log
  • TiDB 版本:v5.2.1
  • DM 版本:v5.3.0
  • Sysbench 版本:1.1.0

测试场景

可以参考性能测试中介绍的测试场景,测试单个 MySQL 实例到 TiDB 的数据迁移: MySQL1 (172.16.6.1) -> DM-worker(172.16.6.2) -> TiDB(load balance) (172.16.6.4)。

全量导入性能测试

可以参考全量导入性能测试用例中介绍的方法进行测试。

全量导入性能测试结果

mydumper 配置项中配置 threads 参数,可以通过 Dumpling 开启多线程并发导出,提高数据导出性能。

测试项数据量 (G)threadsrowsstatement-size导出时间 (s)导出速度 (MB/s)
dump data38.132320000100000045846
测试项数据量 (G)pool size每条插入语句包含的行数事务执行最大延迟 (s)导入时间 (s)导入速度 (MB/s)
load data38.132487876274013.9

在 load 处理单元使用不同 pool size 的性能测试对比

该测试中使用 sysbench 全量导入的数据量为 3.78 GB,测试数据如下所示:

load 处理单元 pool size事务执行最大延迟 (s)导入时间 (s)导入速度 (MB/s)TiDB 99 duration (s)
20.713979.50.61
41.2136310.41.03
83.3027913.52.11
165.5620018.93.04
326.9221817.36.56
648.5923116.38.62

导入数据时每条插入语句包含行数不同的情况下的性能测试对比

该测试中全量导入的数据量为 3.78 GB,load 处理单元 pool-size 大小为 32。插入语句包含行数通过 mydumper 配置项中的 statement-sizerows 或者 extra-args 参数来控制。

每条语句中包含的行数mydumper extra-args 参数事务执行最大延迟 (s)导入时间 (s)导入速度 (MB/s)TiDB 99 duration (s)
7506-s 1500000 -r 3200008.3422916.510.64
5006-s 1000000 -r 3200006.1221817.37.23
2506-s 500000 -r 3200004.2723216.23.24
1256-s 250000 -r 3200002.2523516.01.92
629-s 125000 -r 3200001.0324615.30.91
315-s 62500 -r 3200000.6324915.10.44

增量复制性能测试用例

使用增量复制性能测试用例中介绍的方法进行测试。

增量复制性能测试结果

该性能测试中复制任务 sync 处理单元 worker-count 设置为 32,batch 大小设置为 100。

组件qpstps95% 延迟
MySQL40.65k40.65k1.10ms
DM binlog replication unit29.1k (单位时间内接收到的不被忽略的 binlog event 数量)-92ms (事务执行时间)
TiDB32.0k (Begin/Commit 1.5k Insert 29.1k)3.72k95%: 6.2ms 99%: 9.3ms

在 sync 处理单元使用不同并发度的性能测试对比

sync 处理单元 worker-count 数DM qpsDM 事务执行最大延迟 (ms)TiDB qpsTiDB 99 duration (ms)
410.24010.5k4
817.6k6418.9k5
1629.5k8030.5k7
3229.1k9232.0k9
6427.4k8837.7k14
102422.9k8557.5k25

不同数据分布的增量复制性能测试对比

sysbench 语句类型DM qpsDM 事务执行最大延迟 (ms)TiDB qpsTiDB 99 duration (ms)
insert_only29.1k6432.0k8
write_only23.5k29624.2k18

推荐迁移任务参数配置

dump 处理单元

推荐每一条插入语句的大小在 200KB ~ 1MB 之间,相应每条语句包含的行数大约在 1000-5000(具体包含的语句行数与实际场景中每行数据大小有关)。

load 处理单元

推荐 pool-size 设置为 16 ~ 32。

sync 处理单元

推荐将 batch 设置为 100,worker-count 设置为 16 ~ 32。