MySQL是世界上最流行的开源数据库,也是OLTP界的顶流,但是对于OLAP分析型业务场景的能力太弱。ClickHouse是最近几年数仓OLAP分析查询领域的黑马,当红炸子鸡,有意思的是天然兼容MySQL语法。所以很多用户喜欢OLTP放MySQL,OLAP放ClickHouse,中间加一层数据同步,称之为HTAP黄金搭档。
我司的DBMotion是在线数据迁移SaaS服务,也可以docker run一键式本地化运行。对于MySQL迁移同步到ClickHouse,提供了结构迁移/全量初始化/增量同步/数据校验功能支持,并且为实时数据同步提供了精准一致性查询视图。里面一些功能点的设计,可以分享给大家,供参考。
▌全量初始化性能
ClickHouse全量初始化,往往是最耗时的,一般迁移工具都会采用多线程并发模式去拉取源端数据,然后并发load到目标端,多线程可以是行级并发或表级并发,DBMotion是采用的行级并发,因为如果有一些超大表,表级并发会受限于这些大表,我们处理的流程大致如下:
-
dbmotion核心模块会设定迁移任务的工作线程数,表数据切片行数split-rows,fetch批次大小等配置
-
每张表,根据总行数,split-rows估算出切片数量,根据PK/唯一键或时间/数据字段,计算每个分片的where边界,最终会获得一张切片list
-
将切片均匀分发给多线程去消费,每个线程负责这个切片的数据拉取和数据装载,直到所有切片都完成
一般我们切片大小设置为50000行,如果是超小表不足一个切片,这个线程会立刻完成,再处理其他切片,经过实际测试,每个线程的处理工作是比较均匀的