Skip to main content
Version: 3.6.0

MySQL到StarRocks的同步实现

背景

企业大数据处理场景中,往往需要对海量数据快速分析统计,但这并不是传统OLTP关系数据库(如:MySQL、PostgreSQL、Oracle等)所擅长的, 幸运的是随着开源软件的兴起,最近社区出现了一款功能强大且容易上手的大数据MPP分析OLAP 数据库StarRocks,支持快速多维聚合分析,请求可以毫秒级响应、且高并发访问。

利用OLAP和OLTP两种类型的数据库引擎相结合的方式来实现企业对于海量数据的实时分析需求成为切实可行的方案。但异构引擎节点之间需要实现实时数据同步,具体实施过程中有多个工序、细节需要考量,例如,元数据端中 数据批量更新如何防止同步过程中不产生雪崩效应而导致数据堵塞。以及,如何标准且高效地可构建数据同步链路,让实施工程师专注于业务本身而不身陷于各种技术细节。

基于以上场景,在本文中向大家介绍一款不错的工具TIS,可以快速高效地实现MySQL到StarRocks的数据同步方案。

TIS介绍

TIS可以快速为企业构建实时数仓库服务,基于批(DataX)流(Flink-CDC)一体DataOps数据中台,提供简单易用的操作界面,降低用户实施各端(MySQL、PostgreSQL、Oracle、ElasticSearch、ClickHouse、Doris等) 之间数据同步的技术门槛,缩短任务配置时间,避免配置过程中出错,使数据同步变得简单、有趣且容易上手。

TIS数据同步原理

TIS底层整合了DataXFlink CDC等组件,借鉴Jenkins的微内核架构,将各个 功能模块封装成了可插拔的组件模块,在TIS运行期以插件为单位按需加载。

用户业务场景中,如只需要进行T+1离线数据分析那就只加载DataX相关的插件进行批量导入即可。如需要给MMP数据库如StarRock中同步数据,则需要开启基于Flink CDC

TIS安装

TIS的安装非常方便,只需三个步骤:下载一个tar压缩包,解压,最后启动即可。详细请查看 TIS安装说明

TIS是基于微内核架构来实现的,初始安装包只有200兆,其他具体执行逻辑相关的执行逻辑都封装在了TIS的插件系统中, 本文相关的StarRocks和MySQL以及Flink增量同步、DataX批量同步相关的功能插件都是在TIS运行时按需加载且热部署生效的。

视频演示

如果觉得以下文字性的流程说明觉得枯燥乏味,直接进入该流程对应的视频介绍,对使用流程有一个直观感受

建议直接跳转到B站观看

创建MySQL到StarRocks数据通道

基本信息配置

说明图示
当完成安装步骤之后,进入TIS操作界面,点击菜单栏中实例链接
进入实例列表,点击右侧添加下拉按钮中的数据管道,进行MySQL端到StarRocks端的数据同步通道构建
添加流程一共分为5步,第1步添加数据通道的基本信息
进入数据端选择步骤,选择Reader Writer类型选择,由于系统刚安装,数据端类型对应的插件还没有选取,需要点击插件安装添加按钮,安装插件
从插件列表中选择tis-ds-mysql-plugin,tis-datax-doris-plugin(Doris和StarRocks通用)两个插件进行安装
插件安装完毕,将插件管理页面关闭
Reader端选择MySQL,Writer端选择StarRocks,点击下一步按钮,进行MySQL Reader的设置
在Reader设置页面,点击数据库名项右侧配置下拉框中MySqlV5 数据源,完成表单填写,点击保存按钮,其他输入项目使用默认值即可,然后再点击下一步选取Reader端中需要处理的表
选择需要的表,点击设置按钮,对目标表进行设置,选取目标表的目标列.
点击保存按钮,然后点击下一步,进入StarRocks Writer表单设置
StarRocks Writer表单,点击数据库名项右侧配置下拉框中添加按钮,进行StarRocks数据源添加。

输入表单中自动建表如果选择,则会在数据同步流程中,自动通过解析数据源表的MetaData来自动生成Writer表的DDL语句并且自动执行。

点击右上方下一步按钮,进入数据表映射关系设置页面
表映射页面中,可以对目标表的名称进行修改。完成修改之后,点击下一步
确认页面,对上几步流程中录入的信息进行确认。对DataX脚本和目标库建表DDL进行确认。

点击创建按钮完成数据流通道定义

实时同步启用

说明图示
来到数据通道首页,可以打开构建页面,进行数据批量导入
点击触发构建按钮开始启动DataX执行批量构建,将MySQL中的数据全量导入StarRocks

触发之后静待数据导入完成
触发
执行中
完成
接下来开通实时增量通道

首先需要安装Flink单机版 安装说明
Flink集群启动之后,在TIS中添加Flink集群对应配置

表单填写完成之后,点击保存&下一步按钮进入下一步Sink,Source相关属性设置
在该步骤添加Flink SourceFunction对应的flink-connector-mysql-cdc插件 和 Fink Sink对应的StarRocks 插件

设置完成之后进入下一步
TIS会解析Reader选取的表元数据信息,自动生成Flink Stream Code

在该版本中,自动生成的Flink Stream Code还不支持用户自定义编写业务逻辑

点击部署按钮,进入向Flink Cluster中部署流处理逻辑
至此,MySQL与StarRock数据增量通道已经添加完成,MySQL到StarRock实时数据同步可以保证在毫秒级完成

总结

通过以上流程介绍,我们发现通过使用TIS来实现MySQL和StarRocks有如下优势:

  • 安装方便,组件按需加载,热生效
  • 支持数据源分库,多表同步
  • 支持目标库中自动创建表
  • 完美实现低代码配置DataOps的目标,帮助用户大大提高工作效率,且避免出错

还等什么呢?赶快试用一下吧