CloudCanal x TiDB 数据迁移同步
· 阅读需 6 分钟
简介
TiDB 是一款由 PingCAP 开源的 分布式关系型 数据库,主打 HTAP 能力,具 备 优秀的伸缩性。其开源社区强大,产品颇具流行度。
数据同步场景中,TiDB 官方提供如 TiCDC、TiDB Binlog 等工具,但为了满足用户将 TiDB 数据迁移同步到更加广泛数据库的需求,CloudCanal 近期推出了 TiDB 为源端的数据迁移同步 功能,本文将简要介绍该能力的落地。
功能介绍
目标数据库和能力
| 目标端数据源 | 结构迁移 | 数据初始化 | 增量同步 | 数据校验 | 数据订正 |
|---|---|---|---|---|---|
| MySQL | 支持 | 支持 | 支持 | 支持 | 支持 |
| TiDB | 支持 | 支持 | 支持 | 支持 | 支持 |
目标数据源不断增加中
TiDB 源端特色能力
不依赖 TiCDC
TiDB 为源端的增量数据同步实现有两种方式
- 作为 TiCDC 下游接收变更记录,实现数据同 步
- 与 TiKV/PD 直接通信,接收实时变更数据,实现数据同步
CloudCanal 考虑到部署的 轻量性、可控性,选择了第二种方案,跳过 TiCDC、TiDB Server 组件,直接与 PD 建立 gRPC 通信,实时接收源端数据变更记录,通过算法解析字节流内容,自动同步到对端数据库中。
支持断点续传
长周期数据同步,任务可能会因为参数调整、问题数据修复、性能优化等操作暂停或重启任务,断点续传能力不可或缺。
CloudCanal 为 TiDB 源端定时或定量保存对端消费后的位点,以实现断点续传能力。
全量迁移中,对亿级别数据量的大表中断重启,断点续传能力可尽可能少的影响迁移进度,增量同步中,断点续传能力确保任务重启后可继续,并不丢失数据。
变更事件保序
订阅 TiDB 增量变更事件,可能因为各种原因,个别变更数据到达时间不一致(乱序),导致数据丢失或变更错误。
CloudCanal 为此采用自研算法处理事件,并根据事务 最终提交时间 来保证事务的有序消费。
