如何将 MySQL 数据实时、高效同步到 StarRocks?
Apache StarRocks 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知。当前其已经成为除 ClickHouse、Doris以外,国内比较流行的数据仓库产品。
NineData 提供端到端的数据复制能力,以帮助企业快速实现将 MySQL 实时复制到 StarRocks,提升数据应用价值。
为什么选 StarRocks?
先细数一下 StarRocks 较为突出的几个能力:
- 极速查询:StarRocks 采用了全面向量化引擎,并配备全新设计的 CBO (Cost Based Optimizer) 优化器,查询速度(尤其是多表关联查询)远超同类产品。
- 实时数据分析:StarRocks 能很好地支持实时数据分析,并能实现对实时更新数据的高效查询。
- 易部署、易维护:StarRocks 集群不需要依赖任何其他组件,易部署、易维护和极简的架构设计,降低了系统的复杂度和维护成本,同时也提升了系统的可靠性和扩展性。
通过 StarRocks,企业可以构建如下系统:
- 报表分析系统:StarRocks 的查询性能优于同类产品,使得企业可以实时分析海量订单数据,快速掌握销售情况、用户行为等信息,为决策提供支持。
- 企业数据仓库:StarRocks 可以统一管理数据湖和数据仓库,将高并发和实时性要求很高的业务放在 StarRocks 中分析,也可以使用 External Catalog 和外部表进行数据湖上的分析。
- 即席查询分析:基于 StarRocks 的向量化查询、CBO 优化器技术可以对复杂查询生成一个最优的查询计划,适应任意复杂度的 SQL。
MySQL 由于其广泛的应用场景及应用规模,成为了 StarRocks 数据集成的核心数据源。但是 StarRocks 作为数据仓库,企业如果想要将 MySQL 的各种数据复制过来,则必须经过 ETL 加工处理后才能入仓进行数据分析,而这不是一个简单的过程。
如何将 MySQL 的数据实时同步到 StarRocks?
众所周知,在两个毫不相干的数据管理系统之间进行数据同步,特别是实时同步,有几个不得不解决的问题:
- 表的初始化:在同步数据之前,需要手动在 StarRocks 端创建和源端一致的表结构,然后才能从源端接收数据。当源端有大量表且表结构很复杂的情况下,工作量巨大且较容易出错。
- 数据结构的映射:两者数据结构不同,怎么确保数据从源端同步过来后的完整性?除非你对两者的数据模型的理解非常极致,且保证绝对不出错,才能达到理想的结果。
- 实时同步的速率:通过 StarRocks 进行数据实时分析的大前提是,当前 StarRocks 中的数据必须是最新的,即和源端的 MySQL 完全一致,分析结果才有意义。要保证这一点,可不是一个轻松的工作。
- 源端 DDL 语句的联动:如何保证源端的数据结构发生变化时,同步链路不中断?那就需要实时捕获源端 MySQL 的 DDL 变更,并及时在目标端的 StarRocks 中同步执行。
这些问题如果可以顺利解决,那实时同步工作将会相当丝滑。那么如何解决呢?方法自然是有的。对于上述 4 个问题,NineData 有绝对的发言权,我们先来看看它的特性:
- 结构复制:基于目标端数据源的特性,自动高效地完成表的创建、数据结构的映射等工作。
- 复制性能:基于动态攒批、并行复制、Stream Load 等技术,复制性能轻松达到 200 MB/S。
- DDL 捕获与执行:实时检测源端中的 DDL 操作,并同步在目标端中执行,保证其他业务变更能够稳定地进行。
下面来看看怎么操作。
步骤一:录入源和目标数据源
登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。
根据页面提示进行配置,然后单击创建数据源完成创建。
步骤二:配置同步链路
登录 NineData 控制台,单击数据复制>数据复制,然后单击创建复制。
根据页面提示配置复制任务,由于我们想要实现长期的实时数据同步,需要在复制类型处额外勾选增量复制。
配置完成后启动任务,针对您配置的所有同步对象,NineData 会先对所有的存量数据进行全量迁移,接下来就是实时同步 MySQL 中新增的增量数据,所有新写入的数据都将一条不漏地同步到 StarRocks,每当目标端的增量数据追平源端时,任务面板中会显示延迟 0 秒,代表当前 StarRocks 中的数据是最新的。
步骤三(可选):校验目标端同步数据的完整性
除了同步功能以外,NineData 还提供了同步后源端和目标端同步数据的对比功能,以确保目标端数据的完整性。
登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。
单击数据对比页签,即可展示对比结果(如果步骤二的任务配置中未勾选开启数据一致性对比,则此处还需要单击开启数据对比)。
您可以在一段时间后,单击页面中的重新对比,校验最新增量数据的同步结果。
步骤四(可选):配置任务异常告警
由于是长期任务,您可能需要系统实时监控任务状态,在任务有异常时即刻通知您。
登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。
单击右上角的配置告警。
输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。
总结
至此,您已经通过 NineData 数据复制产品实现了一条长期稳定的 MySQL 到 StarRocks 的实时同步链路,无需考虑同步过程中碰到的任何问题,从而轻松使用高性能、实时的数据仓库 StarRock 作为企业数据分析的平台。