当前位置: 首页 > article >正文

MySQL迁移到ClickHouse

在正文开始之前,我们先聊一聊 ClickHouse,它是由俄罗斯搜索引擎巨头 Yandex(俄版谷歌)开发的开源列式数据库管理系统,在最初,ClickHouse 作为一个内部项目,用于解决 Yandex 的在线分析处理(OLAP)需求,得益于其先天的列式存储优势, ClickHouse 完美完成了它的使命。

由于 ClickHouse 的出色表现,Yandex 于 2016 年开放了 ClickHouse 的源代码,在极短的时间内,ClickHouse 获得了全球开发者的关注,并广泛应用在需要处理海量数据并进行高性能分析的场景。

对于 ClickHouse 的特性,相信也无谓过多介绍,各位看官都懂,对于有在线数据分析需求的企业来说,MySQL 在 OLAP 上的处理能力明显是不足的(人家本来也不是干这个的),因此搭配 ClickHouse 使用可以完美弥补 MySQL 这个短板,企业完全能够同时享受高效的事务处理和快速的数据分析,鱼和熊掌亦可兼得也。

图片

那么我们接着下一个问题,如何使用 ClickHouse 对 MySQL 的数据进行分析?

如何使用 ClickHouse 对 MySQL 的数据进行分析?

很简单,把 MySQL 的数据实时同步到 ClickHouse 就行。但是为了实现这一目标,你还需要解决诸多问题,例如在 ClickHouse 端进行表结构初始化、DDL 的自动转换、根据 ClickHouse 的数据类型进行类型转换等等。

官方虽然也有发布过一个配套工具用于 MySQL 到 ClickHouse 的同步,但由于还属于试验性质,生产环境非儿戏,还是要谨慎再谨慎的。

专业的事情还得找专业的工具,这里推荐使用 NineData,它的数据复制能力可以轻松地在同、异构数据源之间进行数据传输,并且具备如下优秀的特性:

1. 表结构智能初始化

NineData 提供结构复制功能,能够结合 MySQL 及 ClickHouse 的表特性、数据类型等特征,进行数据类型智能转化,表引擎自动选择,轻松完成大量表结构的自动初始化。

2. 增量数据实时复制

除了将 MySQL 中存量数据复制到 ClickHouse 外。NineData 还支持增量数据的实时复制,NineData 自动启动 Binlog 的实时监听、采集、解析及复制能力,将源端 MySQL 的增量更新数据实时复制到目标 ClickHouse 中。同时,除了 DML 复制外,NineData 还支持表结构变更(DDL)的自动复制。

3. 强劲的复制性能

通过 ClickHouse 对 MySQL 的数据进行实时分析的场景下,同步速度无疑是关键,基于 MySQL 最新数据的分析结果才有意义。在此过程中,NineData 针对 MySQL > ClickHouse 数据复制进行深度性能优化,基于日志分析、智能分片、动态攒批、数据合并、特有数据格式等技术,有效保障全量数据复制、增量数据复制的性能。当前 NineData 全量复制性能高达 200 GB/小时,增量数据复制性能高达 2 万记录/秒。

4. 完善的数据质量保障方案

NineData 提供了多种数据一致性校验方案,包括全量精准校验、快速验及增量校验,可以对迁移数据进行数据一致性强验证。同时,当出现数据不一致时,能够提供一键修复能力。基于 NineData 数据一致性校验能力,可以有效规避因数据质量导致的业务迁移故障。

图片

接下来献上保姆级教程,手把手教你一步步完成 MySQL 到 ClickHouse 的数据实时同步,过程非常非常简单。

步骤一:录入源和目标数据源

1. 登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源

图片

2. 根据页面提示进行配置,然后单击创建数据源完成创建。

图片

步骤二:配置同步链路

1. 登录 NineData 控制台,单击数据复制>数据复制,然后单击创建复制

图片

2. 根据页面提示配置复制任务,由于我们想要实现实时数据同步,需要在复制类型处额外勾选增量复制

图片

3. 配置完成后启动任务,针对您配置的所有同步对象,NineData 会先对所有的存量数据进行全量迁移,接下来就是实时迁移 MySQL 中新增的增量数据,所有新写入的数据都将一条不漏地同步到 ClickHouse,每当目标端的增量数据追平源端,任务面板中的延迟在零点几秒或几秒之间徘徊时,代表当前 ClickHouse 中的数据已是最新的。

步骤三(可选):校验目标端同步数据的完整性

除了同步功能以外,NineData 还提供了同步后源端和目标端同步数据的对比功能,以确保目标端数据的完整性。

1. 登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务

图片

2. 单击数据对比页签,即可展示对比结果(如果步骤二的任务配置中未勾选开启数据一致性对比,则此处还需要单击开启数据对比)。

图片

3. 您可以在一段时间后,单击页面中的重新对比,校验最新增量数据的同步结果。

图片

步骤四(可选):配置任务异常告警

由于数据量过于庞大,您可能需要系统实时监控任务状态,在任务有异常时即刻通知您。

1. 登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

图片

2. 单击右上角的配置告警

图片

3. 输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。

最后

当任务的延迟为 0,或接近 0 的时候,代表两端的数据是一致的,此时就可以通过 ClickHouse 进行数据分析了。

图片

是不是很简单?全程无需黑屏操作,几分钟配置完,任务就跑起来了。如果增量数据不多,赠送的增量 Micro 规格(每秒 200 条数据)完全够用,并且这条增量链路可以一直保留,负责实时同步您的增量写入,这些都是完全免费的,免费又好用的东西,何妨一试呢?


http://www.kler.cn/a/282913.html

相关文章:

  • 驱动开发系列13 - Linux tasklet用法介绍
  • FlinkPipelineComposer 详解
  • AutoDL远程连接技巧
  • CSP/信奥赛C++语法基础刷题训练(8):洛谷P5718:找最小值
  • Brave127编译指南 Windows篇:部署Node.js(五)
  • 如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息
  • Docker 基本命令
  • [windows][软件]Windows平台MongoDB的安装
  • 【机器学习】线性回归正则化的概念、三种正则化方法的优缺点、使用场景以及在python中的实例
  • 关于武汉芯景科技有限公司的MCU监控芯片XJ809S开发指南(兼容MAX809S)
  • <数据集>手部识别数据集<目标检测>
  • Qt WebSocket
  • 【论文阅读】YOLOv10: Real-Time End-to-End Object Detection
  • SQL 简易建库和增删改查
  • 【Redis】主从复制
  • 操作系统 --王道计算机考研--学习笔记
  • 海信电视与《黑神话 :悟空》合作,大屏端流畅游戏体验如何保障?
  • 构建自闭症解决之道:多维度策略的探索与实践
  • YOLOv8 训练15种动物目标检测模型
  • day03-面向对象-内部类泛型常用API
  • [底层原理] C/C++获取时间(将时间戳转换为年月日)?
  • EmguCV学习笔记 VB.Net 7.2 特征点检测
  • Java之内部类
  • 浅谈Kafka(三)
  • 深度学习基础--深度学习网络
  • 服务器内存飙升分析小记