乐趣区

关于程序员:关系数据库数据入湖的场景及方案总结

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

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

批量数据迁徙工具,能够一次全量、一次全量 + 批次增量的形式将数据从关系数据库的数据迁徙到数据湖,往往入湖时效性(从数据产生到数据进入数据湖贴源层)在 10 多分钟或更长,如 15 分钟左右,取决于批次增量迁徙工作的工夫距离。以下是批量数据迁徙工具(CDM)的性能架构图:

实时数据接入工具(如 CDL),能够实时捕捉关系数据库的 binlog 日志,保留在音讯队列如 Kafka,并反对实时解析 binlog 日志生成增删改命令来操作数据湖的数据记录,实现关系数据库的数据实时入湖,入湖时效性在秒级或分钟级,个别小于 15 分钟。以下是实时数据接入工具(CDL)的性能架构图:

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

计划:

  • 入湖工具:批量数据迁徙工具(如 CDM)
  • 入湖形式:整表迁徙,示意如下:
  • 入湖流程:

    1. 应用入湖工具,配置关系数据库作为源端,配置 HDFS/Hive 的目录作为目标端;
    2. 用入湖工具启动入湖作业,关系数据库 -》HDFS 目录(数据湖贴源层)。

场景 2:关系数据库初始无数据,在建设入湖流程后,关系数据库才凋谢数据写入

计划:

前置条件:关系数据库关上 binlog 日志开关。

  • 入湖工具:实时数据接入工具(如 CDL)
  • 入湖形式:实时增量数据入湖,示意如下:
  • 入湖流程:

    1. 应用入湖工具,配置关系数据库作为源端,配置 Hudi 文件的目录作为目标端;
    2. 启动入湖工具运行;
    3. 关系数据库的实时增量数据入湖;

      • 数据记录插入、批改、删除到关系数据库;
      • 关系数据库的数据变动日志被实时捕捉到入湖工具;
      • 入湖工具解析日志,调用 Hudi 接口插入、批改、删除数据记录到 Hudi 文件的目录(数据湖贴源层)。

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

计划 1:

  • 入湖工具:批量数据迁徙工具(如 CDM)
  • 入湖形式:首次存量历史数据入湖 + 继续批次增量数据入湖
  • 入湖时效:近实时(取决于批次调度周期)
  • 入湖流程:

    1. 假如关系数据库实时产生稳固数量的新数据;
    2. 应用入湖工具,配置关系数据库作为源端,配置 HDFS/Hive 的目录作为目标端;
    3. 用入湖工具,启动存量数据入湖作业,其中 Where 过滤条件的工夫标识字段从初始工夫截止到以后工夫;
      注:存量数据入湖作业运行工夫较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库因为一直承受新写入,累积较大量的新数据。
    4. 继续批次启动增量数据入湖作业,其中 Where 过滤条件的工夫标识字段从上一批次作业的截止工夫到到以后工夫;每批次迁徙数据量逐渐缩小,批次之间的工夫距离逐渐减小并趋势稳固,每批次作业所占用的计算资源也逐渐减小并趋势稳固。示意如下:

计划 2:

前置条件:关系数据库关上 binlog 日志开关。

  • 入湖工具:批量数据迁徙工具(如 CDM)+ 实时数据接入工具(如 CDL)
  • 入湖形式:首次存量历史数据入湖 + 继续批次增量数据入湖 + 实时增量数据入湖
  • 入湖时效:前两个阶段非实时,最初阶段进入实时
  • 入湖流程:

    1. 假如关系数据库实时产生稳固数量的新数据;
    2. 应用批量数据迁徙工具,配置关系数据库作为源端,配置 HDFS/Hive 的目录作为目标端(表 A,文件格式可能是 CSV);
    3. 用批量数据迁徙工具,启动存量数据入湖作业,其中 Where 过滤条件的工夫标识字段从初始工夫截止到以后工夫;注:存量数据入湖作业运行工夫较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库因为一直承受新写入,累积较大量的新数据。
    4. 继续批次启动增量数据入湖作业,其中 Where 过滤条件的工夫标识字段从上一批次作业的截止工夫到到以后工夫;每批次迁徙数据量逐渐缩小,批次之间的工夫距离逐渐减小并趋势稳固,每批次作业所占用的计算资源也逐渐减小并趋势稳固;
    5. 某工夫点 Ts 暂停关系数据库的数据写入,确保 Ts 之前的数据全副由批次作业迁徙到了 HDFS 目录(数据湖贴源层);
    6. 进行批量数据迁徙工具的批次作业。
    7. 应用实时数据接入工具,配置关系数据库作为源端,配置 Hudi 文件的目录作为目标端(表 B,文件格式是 Hudi);
    8. 启动实时数据接入工具运行;
    9. 此时 Te 关系数据库凋谢数据写入;
    10. 关系数据库的实时增量数据入湖;

      • 关系数据库的数据变动日志被实时捕捉到实时数据接入工具;
      • 实时数据接入工具解析日志,调用 Hudi 接口插入、批改、删除数据记录到 Hudi 文件的目录(数据湖贴源层)。示意如下:

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

计划:

前置条件:关系数据库关上 binlog 日志开关。

  • 入湖工具:批量数据迁徙工具(如 CDM)+ 实时数据接入工具(如 CDL)
  • 入湖形式:整表迁徙 + 实时增量数据入湖
  • 入湖时效:最初阶段进入实时
  • 入湖流程:

    1. 暂停关系数据库的数据写入;
    2. 应用批量数据迁徙工具,配置关系数据库作为源端,配置 HDFS/Hive 的目录作为目标端(表 A,文件格式可能是 CSV);
    3. 用批量数据迁徙工具批量数据迁徙工具启动入湖作业,关系数据库 -》HDFS 目录(数据湖贴源层);
    4. 以上存量数据迁徙实现后,进行批量数据迁徙工具的批次作业;
    5. 应用实时数据接入工具,配置关系数据库作为源端,配置 Hudi 文件的目录作为目标端(表 B,文件格式是 Hudi);
    6. 启动实时数据接入工具运行;
    7. 此时 Te 关系数据库凋谢数据写入;
    8. 关系数据库的实时增量数据入湖;

      • 关系数据库的数据变动日志被实时捕捉到实时数据接入工具;
      • 实时数据接入工具解析日志,调用 Hudi 接口插入、批改、删除数据记录到 Hudi 文件的目录(数据湖贴源层)。示意如下:

    本文由华为云公布

退出移动版