单集群 1300 个实时同步任务验证
背景
对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统( 1k、5k、10k 条同步任务)是刚需。
本文以此为出发点,介绍近期 CloudCanal 所做的一个容量测试:在单个 CloudCanal 集群上创建 1300 实时任务,验证系统是否健康。
这个健康度主要包括 同步任务是否运行正常、页面功能操作是否顺畅、容灾能力是否可靠 三个方面。
当然这个测试也带给我们一些新的思路和改进点,让产品更加健壮。
资源与环境
本次测试资源以云资源为主,详单如下:
| 资源用途 | 资源规格 |
|---|---|
| console | 2 个 2core8GB 虚拟机 (阿里云 ecs.u1-c1m4.large) |
| 元数据库 | 1 个 8core16GB MySQL 8.0 (阿里云 RDS mysql.n2m.xlarge.2c) |
| sidecar | 8 个 12core96GB 虚拟机 (阿里云 ecs.u1-c1m8.3xlarge) |
| 业务库 | 2 个 4core8GB MySQL 8.0 (阿里云 RDS mysql.n2m.large.2c) |
| 负载均衡 | 1 个 4 层负载均衡 (sidecar->console 7007 端口,阿里云 NLB) 1 个 7 层负载均衡 (CloudCanal 页面操作,console 8111 端口,阿里云 ALB) |
测试步骤
安装 console
- 根据 tgz 安装文档初始化环境并安装
- 激活 CloudCanal,因社区版任务数限制,我们临时申请了一个 2000 个同步任务的 license

安装节点
- 机器管理 > 机器列表 > 添加机器,选择自动安装

- 等待节点安装完成

业务数据库准备
- 两个 RDS 分别创建源端 src_test_a 和 src_test_b 库,以及 target_db_0~target_db_999 1000个目标库。
- 一个任务源端和目标分别是 src_test_a/src_test_b -> target_db_(i)

- 源端各创建 1 张表,并各生成 1000 条数据

基于 OpenAPI 创建任务
-
设置任务参数模版 LE_256MB_TASK ,以便生成任务时自动调整

-
获取 AccessKey 和 SecretKey 以便调用 API 创建任务

-
向元数据库插入 128MB 规格数据

-
编写调用 OpenAPI 代码,1 次 100 个任务创建, 代码参考
