首页 > 数据库 >MySQL到ClickHouse数据同步方案

MySQL到ClickHouse数据同步方案

时间:2023-07-19 17:36:33浏览次数:33  
标签:NineData 同步 MySQL DDL 数据 ClickHouse

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 也因为不能很好的支持结构同步,使用和维护起来并不方便。

 

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

 

标签:NineData,同步,MySQL,DDL,数据,ClickHouse
From: https://www.cnblogs.com/zhoujinyi/p/17566239.html

相关文章

  • spring boot 如何配置多个数据源,mysql和oracle
    在SpringBoot中配置多个数据源,例如MySQL和Oracle,可以通过以下步骤实现:添加依赖在pom.xml文件中添加MySQL和Oracle的依赖:<!--MySQL--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!......
  • CentOS7安装Mysql8并进行主从复制配置
    场景CentOS7中安装Mysql8并配置远程连接和修改密码等:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131807269在上面实现安装Mysql8的基础上,克隆出两台机器,修改ip后进行mysql的主从复制搭建。Mysql主从复制在主库上把数据更改记录到二进制日志中(BinaryLog)中,这......
  • SQL对决MySQL全面对比:差异、相似性、用途和优点!
    SQL和MySQL被用于编程和管理关系型数据库。了解SQL和MySQL之间的主要区别,以及在使用这些数据库管理工具的工作中所需的技能。SQL和MySQL是与数据库相关的语言。SQL是一种用于与关系型数据库中的数据交互的编程语言,而MySQL是一种实现SQL标准的开源数据库产品。相比其他关系型数据......
  • MySQL只多表查询
    多表查询内连接隐式内连接查询每一个员工的姓名,及关联的部门的名称(隐式内连接实现)表结构:emp,dept连接条件:emp.dept_id=dept.idselectemp,name,dept,namefromemp,deptwhereemp.dept_id=dept.id;selecte,name,d.namefromempe,deptdwheree.......
  • Mysql设置字段从1开始自增
    Mysql设置字段从1开始自增MySQL是一个开源的关系型数据库管理系统,被广泛应用于各种Web应用程序。在MySQL中,我们经常需要设置自增字段,以便在插入新记录时自动生成唯一的标识符。默认情况下,自增字段从1开始自动递增,但有时我们可能需要将自增字段的起始值设置为其他值。本文将介绍如......
  • Mysql查询字段时间加减
    MySQL查询字段时间加减在MySQL中,我们经常需要对时间进行加减操作,例如需要查询一个日期的前一天或后一天的数据。本文将介绍如何在MySQL中使用函数对时间字段进行加减操作,并提供一些常见的使用场景和示例代码。DATE_ADD和DATE_SUB函数在MySQL中,我们可以使用DATE_ADD和DATE_SUB函......
  • Mysql 查询不锁表
    Mysql查询不锁表在使用Mysql数据库进行大量数据读取时,常常会遇到查询导致表锁定的问题。查询锁定表可能会导致其他线程无法对该表进行修改操作,从而影响系统的并发性能。为了解决这个问题,Mysql提供了一些方法来实现查询不锁表的操作。1.事务隔离级别事务隔离级别是控制并发访问......
  • Mysql sum 返回了字符串
    Mysqlsum返回了字符串在Mysql数据库中,SUM函数用于计算数值型列的总和。然而,有时候我们会遇到SUM函数返回字符串的情况,这可能会导致数据处理和分析的问题。在本篇文章中,我们将讨论为什么SUM函数会返回字符串以及如何解决这个问题。为什么SUM函数返回字符串?当SUM函数......
  • Mysql 5.0.22
    如何安装Mysql5.0.22简介Mysql是一款功能强大的开源关系型数据库管理系统,被广泛应用于Web开发中。本文将向刚入行的开发者介绍如何安装Mysql5.0.22版本。安装步骤步骤操作步骤一下载Mysql5.0.22安装包步骤二安装Mysql5.0.22步骤三配置Mysql5.0.22步......
  • MySqlInjector 加不到springboot
    MySqlInjector加不到SpringBootSpringBoot是一个快速开发框架,它简化了Java应用程序的配置和部署过程。然而,有时我们可能会遇到一些问题,例如无法将MySqlInjector加到SpringBoot项目中。本文将介绍如何解决这个问题,并提供代码示例。问题描述当我们尝试将MySqlInjecto......