共计 1627 个字符,预计需要花费 5 分钟才能阅读完成。
ClickHouse 在执行剖析查问时的速度劣势很好的补救了 MySQL 的有余,然而对于很多开发者和 DBA 来说,如何将 MySQL 稳固、高效、简略的同步到 ClickHouse 却很艰难。本文比照了 NineData、MaterializeMySQL(ClickHouse 自带)、Bifrost 三款产品,看看他们在同步时的差别。
比照后果概述
整体上,NineData(官网:www.ninedata.cloud)的数据复制性能在性能、性能体现最突出。其次是 Bifrost 和 ClickHouse 自带的 MaterializeMySQL。NineData 在增量 DDL 的解决、字段映射的准确性、无主键表、以及功能丰富度上最强(数据校验、过滤、限流等),具体的对比方下图:
构造映射比照
在做了具体比照之后,对于根底类型,只有 NineData 思考的更加残缺,例如 MySQL 的 datetime 须要映射到 ClickHouse 的 DateTime64,否则则可能呈现数据失落。如果应用 Biforst 或 MaterializeMySQL 等其余产品均映射到 datetime 可能会造成肯定水平的数据精度失落。
此外,在比照了 MySQL 全副数据类型之后,发现 NineData 反对更残缺,例如对 JSON 类型、几何数据、地理信息仅 NineData 反对。此外,对于根底类型,也只有 NineData 思考更加粗疏,应用 Biforst 或 MaterializeMySQL 等其余产品则可能导致精度失落,从而造成数据失落。
具体的对比方下图:
无主键表反对
NineData 对记录做了非凡的标记解决,所以很好的反对了无主键表的数据同步。而 MaterializeMySQL、Biforst 均不反对。
具体的对比方下图:
增量 DDL
对于数据增量同步,反对好各种类型的 DDL 是保障同步链路继续稳固的要害,NineData 在无主键表 DDL 反对、字段删除、字段名批改等非凡操作均做了适配解决,能够很好的保障复制链路的问题。同时,NineData 还提供了可视化的谬误修复和跳过性能,能够最大限度的保障链路继续稳固。
具体的对比方下图:
限流、比照、过滤等
除了后面介绍的个别性能之外,为了晋升数据品质、保障稳固,NineData 还反对了包含数据比照、运行中的限流、数据过滤等性能。具体的阐明如下:
同步性能比照
这里应用 sysbench 工具生成了 5000 万行记录进行全量性能比照,再生成约 1800 万次 DML(约 5GB Binlog)进行增量性能比照。
比照中,全量同步 NineData 性能为 36.2W RPS(每秒同步记录数)为最高;增量同步则是 ClickHouse 自带的同步工具 MaterializeMySQL 最高,须要留神,MaterializeMySQL 在错误处理上比较简单,如果报错则须要全副从新同步。
具体的比照如下:
- 全量同步
通过 sysbench 生成 10 张表,每张表 500W 记录(5000W 行),数据文件大小约为 12G:
- 增量同步
通过 sysbench 生成 5G 大小的 BinLog 日志(约 1800W 次 DML),再进行增量同步:
总结
NineData(https://www.ninedata.cloud/)在性能上当先其余同步工具,特地是字段类型的全面适配和增量复制期间 DDL 的反对度,并且在动静限流、数据比照、监控等能力上也反对的最欠缺。
所以,如果想把 MySQL 的数据实时同步到 ClickHouse, 举荐应用 NineData,不仅应用简略(SaaS),并在满足性能和性能的前提下,实现了字段类型的无损转换和数据的实时复制,很好的解决 MySQL 同步数据到 ClickHouse 的问题。
补充阐明
以后各个云厂商尽管都提供 ClickHouse 托管服务,然而另一方面云厂商又都在倒退本人的数仓产品,在同步性能反对上通常仅对自家的数仓产品反对比拟好,而对 ClickHouse 同步反对都很单薄。此外,开源工具 Canal 也因为不能很好的反对构造同步,应用和保护起来并不不便。