对于将数据作为重要生产资料的公司来说,超大规模的数据迁移同步系统( 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) |
根据 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)
任务数据(状态/位点等)上报频率、种类需要优化,对元数据库压力较高
监控指标依赖的 promethus 需要进行调优
云资源花费 200 元左右。
本次容量测试是 [CloudCanal] 针对单集群 1000 个以上任务的场景验证,从中找到一些可能存在的问题并逐步改进,为大型客户大规模使用做好基本的验证与后续优化。