MySQL到ClickHouse数据同步方案对比

news2024/11/24 12:40:19

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

下一代听歌识曲技术——从信号处理到深度学习

音乐丰富我们的生活;音乐传达人类的情感;音乐表达人类的艺术。人类文明的进程中离不开音乐这个载体,音乐也离不开人类的真情创作。在听到好听却没听过的歌曲时,如何快速准确得到该歌曲的歌名成为当务之急。LiveVideoStackCon 2022…

网页学习-小试牛刀

网页学习 一、 网页组成二、HTML认知2.1 结构2.2 常用标签2.3 列表标签2.4 表格标签2.5 表单标签2.6 语义化标签2.7 字符实体 三、CSS认知四、JS认知 一、 网页组成 分为三大部分:HTML、CSS和JavaScript。 HTML(Hyper Text Markup Language&#xff0c…

根据端口号查询进程路径

研究背景: 在工作的时候,有时候我们会在服务器上部署很多API接口程式,每个程式都有不同的端口号,便于提供服务。当时间久了,我们需要对接口操作的时候,我们有可能会忘掉接口程式所在的路径,而只…

一文掌握如何使用Java操作文件与IO流

文章目录 1. 认识文件2. 文件的类型3. 操作文件3.1 属性3.2 构造方法3.3 常用方法 4. IO流4.1 字节流4.1.1 InputStream4.1.2 OutputStream4.1.3 flush刷新4.1.4 关闭文件close4.1.5 字节缓冲流 4.2 字符流4.2.1 Reader4.2.2 Writer4.2.3 Scanner4.2.4 字符缓冲流 5. 复制文件5…

C语言入门篇——语句篇

目录 1、空语句 2、表达式语句 3、复合语句 4、控制语句 4.1、C控制语句:循环 4.1.1、while 4.1.2、while里的break和continue 4.2.1、for 4.2.2、for里的break和continue 4.3.1、do while 4.3.2、do while里的break和continue 5、C控制语句&#xff1a…

Flink 实时数仓 (一) --------- 数据采集层

目录 一、数仓分层介绍二、实时需求概览三、统计架构分析四、日志数据采集1. 模拟日志生成器的使用2. 日志采集模块-本地测试3. 日志采集模块-打包单机部署 五、业务数据库数据采集1. MySQL 的准备2. 环境搭建3. 代码实现 六、Nginx 安装七、Maxwell 安装八、Canal 安装 一、数…

STM32 平衡小车之电机驱动

TB6612FNG简介 单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。 TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。 VM电…

通信方式基础知识

文章目录 前言一、分类方式1、串行通信和并行通信2、同步通信和异步通信3、单工、半双工、全双工通信 前言 南京的梧桐树可以鲨掉我的程度 一、分类方式 1、串行通信和并行通信 串行通信:按位顺序,占用引脚资源较少,速度较慢 并行通信&…

移除链表元素(链表篇)

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 思路: ①直接使用原来的链表来进行删除操作。 ②设置一个虚拟头结点在进行删除操作 ①直接使用原来的链表…

【数据结构】- (带头结点)循环双向链表 - 详细实现思路及代码

目录 一、概述 二、循环双向链表 三、循环双向链表实现步骤  📌3.1 C语言定义循环双向链表结点  📌3.2 循环双向链表初始化  📌3.3 循环双向链表插入数据  📌3.4 循环双向链表删除数据  📌3.5 循环双向链表查找数…

【python中的多线程了解一下?】

基本说明 线程(Thread)是操作系统进行调度的最小单位,是进程中的一个独立执行单元。线程与进程相比,具有更轻量级、更高效率、更易调度、共享资源等优点。 在传统的单核CPU中,操作系统通过时间片轮转算法将CPU的时间…

各种通讯总线的学习记要

一、在B站板道题看到一个比较好完视频(爱上半导体) 我觉得将232和485之前先将串口通信,因为它们都是串口通讯的变种。 串口通讯: 串口通讯我们约定好帧格式和波特率,通讯正常起始位为低开始,8位数据位&a…

【ABAQUS文档阅读笔记】关于体单元、壳单元、梁单元 、truss单元的总体认识

我的主页: 技术邻:小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩:小铭的ABAQUS学习的个人空间csdn:qgm1702 博客园文章链接: 学习笔记,from abaqus document “getting start with ABAQUS…

【代码随想录】刷题Day4

1.交换链表 24. 两两交换链表中的节点 前后指针实现 1.没有元素或者只有一个元素无意义 2.给出一个前驱prev,以及用来交换的两个节点cur和next 3.我当时是这么想的,如果两个指针一起动,那么就要用cur和next同时判断结束,也许这个…

C#基础学习--异常

目录 什么是异常 try语句 异常类 catch子句 catch子句段 finally块 为异常寻找处理程序 更进一步搜索 一般法则 抛出异常 不带异常对象的抛出 什么是异常 异常是程序运行时错误,它违反了系统约束或应用程序约束,或出现了在正常操作时未预料的情…

Windows环境下JDK内置迭代器的简介

我是荔园微风,作为一名在IT界整整25年的老兵,今天讨论一下Windows环境下JDK内置迭代器。 相信大家已经注意到,为了让广大程序员能够更加方便地操作聚合对象,在Java、C#等编程语言中都提供了内置迭代器。 如果对这种迭代器还不了…

在JetsonNano上安装PREEMPT-RT实时核+IghEtherCAT主站的详细步骤

特别说明:由于本人空闲时间有限,此博客中所有内容均是从本人的个人笔记中摘抄出来,命令行大多以图片形式展示,不能提供复制粘贴功能敬请体谅。此外,第一部分关于在 Jetson Nano 上安装PREEMPT-RT 实时核的步骤比较详细…

企业工商四要素核验 API:有效应对商业欺诈和恶意交易的利器

引言 企业工商四要素核验是一种用于验证企业基本信息的方法,主要包括企业名称、社会统一信用代码、法人名称、法人身份证四个要素。这些要素是企业注册时必须提供的信息,通过对这些信息的验证,可以确定企业的真实性和合法性,通常…

【力扣-21】合并两个有序链表

🖊作者 : Djx_hmbb 📘专栏 : 数据结构 😆今日分享 : 英文文章里 : TL;DR 或者 tl;dr。 网上英文解释有两种,一种是Too long;Don’t read,另一种是Too long;Didn’t read。意思是:“文章太长了,读…

Stable Diffusion MacBookAir 手把手安装教程,以及checkpoint安装、Lora安装、civitai介绍。

目标: 本地部署Stable Diffusion 安装步骤: 安装git Git - Downloadshttps://git-scm.com/downloads安装python 3.10.6 Python Releases for macOS | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downl…