MySQL 同步到 ClickHouse的方案可以看下面的说明,选择合适最近的同步方法。

1. 对比结果概述

整体上,NineData(官网:www.ninedata.cloud )的数据复制功能在功能、性能表现最突出。其次是 Bifrost 和 ClickHouse 自带的 MaterializeMySQL。NineData 在增量 DDL 的处理、字段映射的准确性、无主键表、以及功能丰富度上最强(数据校验、过滤、限流等),详细的对比如下图:

2. 结构映射对比

在做了详细对比之后,对于基础类型,只有 NineData 考虑的更加完整,例如 MySQL 的 datetime 需要映射到 ClickHouse的 DateTime64,否则则可能出现数据丢失。如果使用 Biforst 或 MaterializeMySQL 等其他产品均映射到 datetime 可能会造成一定程度的数据精度丢失。

此外,在对比了 MySQL 全部数据类型之后,发现 NineData 支持更完整,例如对 JSON 类型、几何数据、地理信息仅 NineData 支持。此外,对于基础类型,也只有NineData考虑更加细致,使用 Biforst 或 MaterializeMySQL 等其他产品则可能导致精度丢失,从而造成数据丢失。

详细的对比如下图(黄色标记为差异):

3.无主键表支持

NineData 对记录做了特殊的标记处理,所以很好的支持了无主键表的数据同步。而 MaterializeMySQL、Biforst 均不支持。

详细的对比如下图:

4. 增量DDL

对于数据增量同步,支持好各种类型的DDL是保障同步链路持续稳定的关键,NineData 在无主键表 DDL 支持、字段删除、字段名修改等特殊操作均做了适配处理,可以很好的保障复制链路的问题。同时,NineData 还提供了可视化的错误修复和跳过功能,可以最大限度的保障链路持续稳定。

详细的对比如下图:

5. 增量DDL

除了前面介绍的一般功能之外,为了提升数据质量、保障稳定,NineData 还支持了包括数据对比、运行中的限流、数据过滤等功能。具体的说明如下:

6. 增量DDL

这里使用 sysbench 工具生成了5000万行记录进行全量性能对比,再生成约1800万次 DML(约5GB Binlog)进行增量性能对比。

对比中,全量同步 NineData 性能为36.2W RPS(每秒同步记录数)为最高;增量同步则是 MaterializeMySQL 最高,需要注意,MaterializeMySQL 在错误处理上比较简单,如果报错则需要全部重新同步。

全量同步
通过 sysbench 生成10张表,每张表500W记录(5000W行),数据文件大小约为 12G:

增量同步
通过 sysbench 生成 5G 大小的 BinLog 日志(约1800W次DML),再进行增量同步:

7. 总结

NineData(https://www.ninedata.cloud/)在功能上领先其他同步工具,特别是字段类型的全面适配和增量复制期间 DDL 的支持度,并且在动态限流、数据对比、监控等能力上也支持的最完善。

所以,如果想把 MySQL 的数据实时同步到 ClickHouse,推荐使用 NineData,不仅使用简单(SaaS),而且在满足功能和性能的前提下,还实现了字段类型的无损转换和数据的实时复制,很好的解决 MySQL 同步数据到 ClickHouse 的问题。

补充说明

当前各个云厂商虽然都提供 ClickHouse 托管服务,但是另一方云厂商又都在发展自己的数仓产品,在同步功能支持上通常仅对自家的数仓产品支持比较好,而对 ClickHouse 同步支持都很薄弱。此外,开源工具 Canal 也因为不能很好的支持结构同步,使用和维护起来并不方便。

最后,可以关注公众号  ,能够第一时间了解行业动态。

MySQL到ClickHouse数据同步方案的更多相关文章

  1. oracle数据同步方案

    数据同步方案:--用DBLINK 创建与所需同步表的链接------------------------------------------------------------------------ ...

  2. MySQL Replication(数据同步技术)

                          MySQL Replication(数据同步技术) A 到 B 完成主从复制,意思是数据同步技术 从读取主的二进制日志文件,按照日志中记录对从库进行同样的操 ...

  3. 高可用数据同步方案-SqlServer迁移Mysql实战

    简介 随着业务量的上升,以前的架构已经不满足业务的发展,数据作为业务中最重要的一环,需要有更好的架构作为支撑.目前我司有sql server转mysql的需求,所以结合当前业务,我挑选了阿里云开源的一 ...

  4. 前端web服务器数据同步方案

    概述: 网站采用了web和mysql数据库分离的架构,前端有web1.web2.web3需要对他们进行上传文件同步 方案: 在web2的windows服务器上安装GoodSync软件,利用其双向同步特 ...

  5. 转载:MySQL和Redis 数据同步解决方案整理

    from: http://blog.csdn.net/langzi7758521/article/details/52611910 最近在做一个Redis箱格信息数据同步到数据库Mysql的功能. 自 ...

  6. ES数据同步方案

    当业务量上升后,由于mysql对全文检索或模糊查询支持的能力不强,在系统中查询的地方,往往会出现慢sql等,拖累系统其他模块,造成性能低下. 随着ES使用普及率的升高,ES是mysql的一个有效补充. ...

  7. Mysql和Redis数据同步策略

    为什么对缓存只删除不更新 不更新缓存是防止并发更新导致的数据不一致. 所以为了降低数据不一致的概率,不应该更新缓存,而是直接将其删除, 然后等待下次发生cache miss时再把数据库中的数据同步到缓 ...

  8. MySQL到ClickHouse实时同步-CloudCanal实战

    简述 CloudCanal 近期实现了 MySQL(RDS) 到 ClickHouse 实时同步的能力,功能包含全量数据迁移.增量数据迁移.结构迁移能力,以及附带的监控.告警.HA等能力(平台自带). ...

  9. Oracle数据库数据同步方案

    一.比较原始的方案:触发器/Job/快照+dblink的方式,可实现同步和定时刷新: 二台不同的数据库服务器,从一台数据库服务器A的一个用户读取另一台数据库服务器B下某个用户的数据,可以通过dblin ...

  10. redis作为mysql的缓存服务器(读写分离,通过mysql触发器实现数据同步)

    一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...

随机推荐

  1. springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)

    来了就点个赞再走呗,即将毕业的兄弟有福了文章底部获取源码springboot项目 宿舍管理系统 (源码+数据库文件+1w字论文+ppt)技术框架:java+springboot+vue+mysql后端 ...

  2. DeFi4-稳定币

    稳定币--稳定 是一个相对的度量指标 波动性,收益率标准差 在一个时间段内最大跌幅 Fiat,例如: 欧元.英镑的波动率为6-12% (波动本身并不能反映价格的范围 稳定币 vs 锚定币 稳定币类型 ...

  3. docker启动mysql报错Can't read dir of '/etc/mysql/conf.d/'

    执行命令: docker run -p 3306:3306 --privileged=true -v /mysql/data:/var/lib/mysql -v /mysql/log:/var/log ...

  4. [Pytorch框架] 4.2.1 使用Visdom在 PyTorch 中进行可视化

    文章目录 4.2.1 使用Visdom在 PyTorch 中进行可视化 安装 坑 基本概念 Environments Panes VIEW 可视化接口 使用 绘制简单的图形 更新损失函数 import ...

  5. SPN在域环境的应用

    windows域为了集中资源,有效地对资源访问控制权限进行细粒度分配,提高网络资源统一分配的管理.域内的每种资源分配了不同的服务主体名称(SERVICE Pricipal Name,SPN) 相关概念 ...

  6. 「学习笔记」AC 自动机

    「学习笔记」AC 自动机 点击查看目录 目录 「学习笔记」AC 自动机 算法 问题 思路 代码 例题 Keywords Search 玄武密码 单词 病毒 最短母串 文本生成器 背单词 密码 禁忌 前 ...

  7. 搭建一个简易框架 3秒创建一个WebApi接口

    前端ajax请求数据,传递的参数都是一个json字符串,经过多次解析发现其实都是一个DataSet {"selectA1":[{"Name":"156 ...

  8. 工作中,我们经常用到哪些SQL语句呢?

    目录 一.DDL部分(create.drop.alter) 1.1 create 语句上 1.2 drop 语句 1.3 alter 语句 二.DML(数据操纵语言)和DQL(数据查询语言) 2.1 ...

  9. python库Munch的使用记录

    开头 日常操作字典发现发现并不是很便利,特别是需要用很多 get('xxx','-') 的使用,就觉得很烦,偶然看到Kuls大佬公众号发布的一篇技术文有对 python munch库的使用, 使得字典 ...

  10. 2022-09-27:给定一个棵树, 树上每个节点都有自己的值,记录在数组nums里, 比如nums[4] = 10,表示4号点的值是10, 给定树上的每一条边,记录在二维数组edges里, 比如ed

    2022-09-27:给定一个棵树, 树上每个节点都有自己的值,记录在数组nums里, 比如nums[4] = 10,表示4号点的值是10, 给定树上的每一条边,记录在二维数组edges里, 比如ed ...