送你两个神器,关系数据库数据入湖轻松应对

摘要:关系数据库的数据入湖,有多种场景、多种工具、多种入湖时效要求等,本文梳理相关场景,以及对应的建议方案。

本文分享自华为云社区《关系数据库数据入湖的场景及方案总结》,作者:HisonHuang 。

关系数据库的数据入湖,有多种场景、多种工具、多种入湖时效要求等,本文梳理相关场景,以及对应的建议方案。

首先介绍下两种入湖工具:批量数据迁移工具(如CDM)和实时数据接入工具(如CDL)。

批量数据迁移工具,可以一次全量、一次全量+批次增量的方式将数据从关系数据库的数据迁移到数据湖,往往入湖时效性(从数据产生到数据进入数据湖贴源层)在10多分钟或更长,如15分钟左右,取决于批次增量迁移任务的时间间隔。以下是批量数据迁移工具(CDM)的功能架构图:
image.png

实时数据接入工具(如CDL),可以实时捕获关系数据库的binlog日志,保存在消息队列如Kafka,并支持实时解析binlog日志生成增删改命令来操作数据湖的数据记录,实现关系数据库的数据实时入湖,入湖时效性在秒级或分钟级,一般小于15分钟。以下是实时数据接入工具(CDL)的功能架构图:
image.png

场景1:关系数据库有存量历史数据,无实时产生的新数据

方案:
1、入湖工具:批量数据迁移工具(如CDM)
2、入湖方式:整表迁移,示意如下:
image.png

3、入湖流程:
3.1、使用入湖工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端;
3.2、用入湖工具启动入湖作业,关系数据库-》HDFS目录(数据湖贴源层)。

场景2:关系数据库初始无数据,在建立入湖流程后,关系数据库才开放数据写入

方案:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:实时数据接入工具(如CDL)
2、入湖方式:实时增量数据入湖,示意如下:
image.png

3、入湖流程:
3.1、使用入湖工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端;
3.2、启动入湖工具运行;
3.3、关系数据库的实时增量数据入湖;
3.3.1、数据记录插入、修改、删除到关系数据库;
3.3.2、关系数据库的数据变化日志被实时捕获到入湖工具;
3.3.3、入湖工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。

场景3:关系数据库有存量历史数据,且实时产生新数据,数据记录有时间标识字段

方案1:
1、入湖工具:批量数据迁移工具(如CDM)
2、入湖方式:首次存量历史数据入湖+持续批次增量数据入湖
3、入湖时效:近实时(取决于批次调度周期)
4、入湖流程:
4.1、假设关系数据库实时产生稳定数量的新数据;
4.2、使用入湖工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端;
4.3、用入湖工具,启动存量数据入湖作业,其中Where过滤条件的时间标识字段从初始时间截止到当前时间;
注:存量数据入湖作业运行时间较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库由于不断接受新写入,累积较大量的新数据。
4.4、持续批次启动增量数据入湖作业,其中Where过滤条件的时间标识字段从上一批次作业的截止时间到到当前时间;每批次迁移数据量逐步减少,批次之间的时间间隔逐步减小并趋向稳定,每批次作业所占用的计算资源也逐步减小并趋向稳定。示意如下:
image.png

方案2:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:批量数据迁移工具(如CDM)+ 实时数据接入工具(如CDL)
2、入湖方式:首次存量历史数据入湖+持续批次增量数据入湖+实时增量数据入湖
3、入湖时效:前两个阶段非实时,最后阶段进入实时
4、入湖流程:
4.1、假设关系数据库实时产生稳定数量的新数据;
4.2、使用批量数据迁移工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端(表A,文件格式可能是CSV);
4.3、用批量数据迁移工具,启动存量数据入湖作业,其中Where过滤条件的时间标识字段从初始时间截止到当前时间;
注:存量数据入湖作业运行时间较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库由于不断接受新写入,累积较大量的新数据。
4.4、持续批次启动增量数据入湖作业,其中Where过滤条件的时间标识字段从上一批次作业的截止时间到到当前时间;每批次迁移数据量逐步减少,批次之间的时间间隔逐步减小并趋向稳定,每批次作业所占用的计算资源也逐步减小并趋向稳定;
4.5、某时间点Ts暂停关系数据库的数据写入,确保Ts之前的数据全部由批次作业迁移到了HDFS目录(数据湖贴源层);
4.6、停止批量数据迁移工具的批次作业。
4.7、使用实时数据接入工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端(表B,文件格式是Hudi);
4.8、启动实时数据接入工具运行;
4.9、此时Te关系数据库开放数据写入;
4.10、关系数据库的实时增量数据入湖;
4.10.1、关系数据库的数据变化日志被实时捕获到实时数据接入工具;
4.10.2、实时数据接入工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。示意如下:
image.png

场景4:关系数据库有存量历史数据,且实时产生新数据,数据记录无时间标识字段

方案:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:批量数据迁移工具(如CDM)+ 实时数据接入工具(如CDL)
2、入湖方式:整表迁移+实时增量数据入湖
3、入湖时效:最后阶段进入实时
4、入湖流程:
4.1、暂停关系数据库的数据写入;
4.2、使用批量数据迁移工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端(表A,文件格式可能是CSV);
4.3、用批量数据迁移工具批量数据迁移工具启动入湖作业,关系数据库-》HDFS目录(数据湖贴源层);
4.4、以上存量数据迁移完成后,停止批量数据迁移工具的批次作业;
4.5、使用实时数据接入工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端(表B,文件格式是Hudi);
4.6、启动实时数据接入工具运行;
4.7、此时Te关系数据库开放数据写入;
4.8、关系数据库的实时增量数据入湖;
4.8.1、关系数据库的数据变化日志被实时捕获到实时数据接入工具;
4.8.2、实时数据接入工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。示意如下:
image.png

点击关注,第一时间了解华为云新鲜技术~


开发者之家
华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态...

生于云,长于云,让开发者成为决定性力量

1.3k 声望
1.7k 粉丝
0 条评论
推荐阅读
【贺】来自开发者的点赞,华为云开发者联盟入选 2022 中国技术品牌影响力企业榜
2023 年 1 月 4 日,中国技术先锋年度评选 | 2022 中国技术品牌影响力企业榜单正式发布。作为中国领先的新一代开发者社区,SegmentFault 思否依托数百万开发者用户数据分析,各科技企业在国内技术领域的行为及影...

华为云开发者联盟阅读 365

一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山7阅读 1.8k评论 2

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 727

封面图
MySQL 数据库索引技术原理初探
一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。

mylxsw1阅读 1.3k

Mybatis源码解析之执行SQL语句
通过调用 session.getMapper (AccountMapper.class) 所得到的 AccountMapper 是一个动态代理对象,所以执行 accountMapper.selectByPrimaryKey (1) 方法前,都会被 invoke () 拦截,先执行 invoke () 中的逻辑。

京东云开发者3阅读 799评论 1

封面图
2023最新MySQL高频面试题汇总
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬3阅读 793

第十六届中国大数据技术大会五大分论坛顺利举办!
1 月 8 日下午,由苏州市人民政府指导、中国计算机学会主办、苏州市吴江区人民政府支持,CCF 大数据专家委员会、苏州市吴江区工信局、吴江区东太湖度假区管委会、苏州市吴江区科技局、苏州大学未来科学与工程学院...

MissD阅读 5.7k

生于云,长于云,让开发者成为决定性力量

1.3k 声望
1.7k 粉丝
宣传栏