在正文开始之前,我们先聊一聊 ClickHouse,它是由俄罗斯搜索引擎巨头 Yandex(俄版谷歌)开发的开源列式数据库管理系统,在最初,ClickHouse 作为一个内部项目,用于解决 Yandex 的在线分析处理(OLAP)需求,得益于其先天的列式存储优势, ClickHouse 完美完成了它的使命。
由于 ClickHouse 的出色表现,Yandex 于 2016 年开放了 ClickHouse 的源代码,在极短的时间内,ClickHouse 获得了全球开发者的关注,并广泛应用在需要处理海量数据并进行高性能分析的场景。
对于 ClickHouse 的特性,相信也无谓过多介绍,各位看官都懂,对于有在线数据分析需求的企业来说,MySQL 在 OLAP 上的处理能力明显是不足的(人家本来也不是干这个的),因此搭配 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 条数据)完全够用,并且这条增量链路可以一直保留,负责实时同步您的增量写入,这些都是完全免费的,免费又好用的东西,何妨一试呢?