整库实时同步任务配置

整库实时同步功能通过一次性全量迁移持续增量捕获相结合,将源数据库(如MySQL、Oracle)完整、低延迟地同步至目标系统。整库实时同步任务支持对源库历史数据进行全量同步,自动初始化目标端表结构与数据;随后,自动转为实时增量模式,利用CDC等技术持续捕获并同步后续的数据变更。此能力适用于实时数仓、数据湖构建等场景。本文以MySQL数据整库实时同步至MaxCompute为例,讲述任务配置方式。

准备工作

功能入口

登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据集成 > 数据集成,在下拉框中选择对应工作空间后单击进入数据集成

使用限制

DataWorks支持整库实时整库全增量(准实时)两种类型。两者均可实现对源库的历史数据进行全量同步,随后自动转为实时增量模式,但两者的时效性和对目标表要求有一定差异:

  • 时效性:整库实时的时效性为秒级~分钟级;整库全增量(准实时)的时效性为T+1。

  • 目标表(MaxCompute):整库实时仅支持Delta Table类型的表,整库全增量(准实时)均可支持。

配置任务

一、新建同步任务

您可以通过以下两种方式创建同步任务:

  • 方式一:在同步任务页面,选择来源去向,单击新建同步任务。此处来源选择MySQL,去向选择MaxCompute。

  • 方式二:在同步任务页面,如果任务列表为空,单击请创建

image

二、配置基本信息

  1. 配置任务名称、任务描述和责任人等基本信息。

  2. 选择同步类型:根据来源和去向,数据集成基于源端数据库与目标端数据库类型展示目前支持的同步类型,本文选择整库实时同步类型。

  3. 同步步骤:

    • 结构迁移:自动在目标端创建与源端匹配的数据库对象(如表、字段、数据类型等),但不包含数据。

    • 全量同步(可选):一次性将源端指定对象(如表)中的所有历史数据完整地复制到目标端。通常用于首次数据迁移或数据初始化,

    • 增量同步(可选):在全量同步完成后,持续地捕获源端发生的变更数据(新增、修改、删除),并将其同步至目标端。

三、选择要同步的库表

此步骤中,您可以在源端库表区域选择源端数据源下需要同步的表,并单击image图标,将其移动至右侧已选库表

image

若库表数较多,可以使用库过滤或者表过滤,通过配置正则表达式来选择需要同步的表。

四、目标表映射

在此步骤,您需要定义源表与目标表的映射规则,并指定主键、动态分区、DDL/DML配置等规则确定数据写入方式。

操作

说明

刷新映射

系统会自动列出您选择的源端表,但目标表的具体属性需要您刷新确认后才能生效。

  • 批量选中需要同步的表,单击批量刷新映射。

  • 目标表名:目标表名将根据目标表名映射自定义规则自动生成。默认为 ${源端库名}_${表名},如果目标端不存在此同名表,系统将自动为您创建。

目标表名映射自定义(可选)

系统存在默认的表名生成规则:${源端库名}_${表名}。您也可以在目标表名映射自定义列,单击编辑按钮可以新增自定义目标表名规则。

  • 规则名称:定义规则名称,建议为规则配置一个具有明确业务意义的名称。

  • 目标表名:目标表名可以通过单击image按钮,选择手动输入内置变量进行拼接,生成目标表名。其中变量支持源端数据源名,源端数据库名和源端表名。

  • 编辑内置变量:内置变量可以在原有的基础上进行字符串转换。

可实现如下场景:

  1. 名添加前后缀:通过设置常量在源端表名的基础上,添加前缀或者后缀。

    规则配置

    应用效果

    image

    image

  2. 字符串统一替换:将源端表名的字符串"dev_",统一替换为"prd_"。

    规则配置

    应用效果

    image

    image

  3. 多张表写入一张表。

    规则配置

    应用效果

    image

    image

编辑字段类型映射(可选)

系统存在默认的源端字段类型与目标端字段类型映射,您可以单击表格右上角的编辑字段类型映射,自定义源端表与目标端表字段类型映射关系,配置完后单击应用并刷新映射

编辑字段类型映射时,需要注意字段类型转换规则是否正确,否则会导致类型转换失败而产生脏数据,影响任务运行。

编辑目标表结构(可选)

系统会根据自定义的表名映射规则,自动创建尚不存在的目标表,或复用已存在的同名表。

DataWorks将基于源端表结构自动生成目标表结构,常规场景下无需人工干预。您也可以通过以下方式,修改表的表结构:

  • 单表新增字段:单击目标表名列的image.png按钮添加字段。

  • 批量新增字段:选中待同步的所有表,在表格底部选择批量修改 > 目标表结构-批量修改和新增字段

  • 不支持重命名列名。

已存在的表仅支持添加字段;新建表添加字段、分区字段,设置表类型或表属性等。详见界面开放编辑区域。

目标表字段赋值

普通字段会根据源端表和目标表的同名字段进行自动映射,上述步骤中的新增字段需要手动赋值。操作如下:

  • 单表赋值:单击目标表字段赋值列的配置按钮,为目标表字段赋值。

  • 批量赋值:在列表底部选择批量修改 > 目标表字段赋值为目标表中相同的字段批量赋值。

在赋值时支持赋值常量与变量,您可通过image图标切换赋值模式。

表字段:可通过手动赋值常量,选择系统预置的变量,或使用源端函数来进行赋值。

分区字段:支持按照来源字段的枚举值或者事件时间作为分区值动态创建分区。

说明

注意,分区个数过多会影响同步效率,单日新增分区超过1000个,分区创建失败并终止任务。因此,定义分区字段赋值方式时,需要预估分区可能产生的个数。

设置源端切分列

您可以在源端切分列中下拉选择源端表中的字段或选择不切分。同步任务执行时将根据该字段切分为多个task,以便并发、分批读取数据。

推荐使用表主键作为源端切分列,不支持字符串、浮点和日期等其他类型。

目前仅源端为MySQL时支持源端切分列。

是否执行全量同步

若已在步骤三配置全量同步,可以单独取消同步某个表的全量数据同步。适用于已经通过其他方式将全量数据同步至目标端的场景。

全量条件

在全量阶段对源端进行条件过滤。此处只需写where子句,不需要写出where关键字。

DML规则配置

DML消息处理用于在数据写入目标端之前,对源端捕获的变更数据(InsertUpdateDelete)进行精细化的过滤与控制,此规则仅在增量阶段生效。

其他

  • 表类型:MaxCompute支持普通表、Delta Table。若目标表状态为待建立,可在编辑目标表结构时选择表类型,已有表无法更改类型。

    整库实时仅支持目标表为Delta Table表类型,普通表类型请参见整库全增量(准实时)任务
  • 若表类型为Delta Table类型,可定义Bucket数量历史数据可查询时间

Delta Table详细介绍参见:Delta Table

五、DDL能力配置

实时同步部分链路可以感知源端表结构的元数据变更,并且通知目标端,使目标端同步更新;或采取其他诸如告警、忽略或终止运行。

您可以单击界面右上角的DDL能力配置,针对每一种变更类型设置对应的处理策略,不同的通道支持的处理策略不同。

  • 正常处理:由目标端处理源端的DDL变更信息。

  • 忽略:忽略变更消息,目标端不做修改。

  • 告警:当源端出现此类变更时,向用户告警。需配合报警配置使用。

  • 出错:终止整库实时同步任务,状态置为出错

说明

当源端新增列并通过DDL同步在目标端也创建了该列后,系统不会对目标表中的存量数据进行数据回填。

六、其他配置

报警配置

1.新增报警

image

(1) 单击新增报警,配置报警规则。

您可以通过设置报警原因,对任务的数据延迟Failover情况任务状态DDL变更情况任务资源利用率等指标进行监控,并根据指定的阈值设置CRITICALWARNING两种不同级别的告警方式。

通过设置疲劳度控制,可以控制报警信息发送的时间间隔,防止一次性发送信息太多,造成浪费和消息堆积。

(2) 管理报警规则。

对于已创建的报警规则,您可以通过报警开关控制报警规则是否开启,同时,您可以根据报警级别将报警发送给不同的人员。

2.查看报警

单击展开任务列表的更多 > 报警配置,进入报警事件,可以查看已经发生的告警信息。

资源组配置

任务所使用的资源组及其配置可在界面右上方的资源组配置面板中进行管理。

1. 查看与切换资源组

  • 单击资源组配置可查看当前任务绑定的资源组。

  • 如需更换,可在此处切换至其他的可用资源组。

2. 调整资源与排查“资源不足”错误

  • 当任务日志中出现Please confirm whether there are enough resources...等资源不足的提示时,说明当前资源组的可用计算单元(CU)已无法满足任务启动或运行的需求。可在资源组配置面板中,适当调高任务占用的CU数量,以分配更多计算资源。

资源设置大小推荐值详见:数据集成推荐CU,实际使用时需根据实际情况进行调整。

高级参数配置

如果需要对任务做精细化配置,达到自定义同步需求,可以单击自定义高级参数列的配置,修改高级参数。

  1. 单击界面右上方的高级参数配置,进入高级参数配置页面。

  2. 根据参数提示,修改参数值,参数含义见参数名称后的解释。

重要

请在完全明白对应参数的含义情况下再进行修改,避免产生任务延时、资源占用过大导致阻塞其他任务、数据丢失等不可预料的问题发生。

七、执行同步任务

  1. 完成所有配置后,单击页面底部的完成配置

  2. 数据集成 > 同步任务界面,找到已创建的同步任务,单击操作列的启动

  3. 单击任务列表中对应任务的名称/ID,查看任务的详细执行过程。

编辑任务

  1. 数据集成 > 同步任务界面,找到已创建的同步任务,单击操作列的更多,单击编辑,可以修改任务信息,操作步骤同任务配置。

  2. 对于未提交的任务,您可以直接修改配置,然后单击完成配置进行保存。

  3. 对于已提交的任务,修改配置后,原有的操作按钮将变为应用更新。您须单击此按钮,变更才会在线上环境中生效。

  4. 单击应用更新后,系统会对变更内容执行“停止发布重启”三个步骤。

    • 若变更方式为新增表或切换已有表

      更新应用时不支持选择点位,单击确认后,执行新表的结构迁移全量初始化,待全量初始化完成后,开始与其他原有表一起执行增量操作。

    • 若修改其他信息:

      更新应用时支持选择点位,单击确认后,从指定点位继续运行。若不指定,从上次停止的时间位点开始运行。

    未修改的表均不受影响,在更新重启后,会从上次停止的时间位点继续运行。

查看任务

创建完成同步任务后,您可以在同步任务页面查看当前已创建的同步任务列表及各个同步任务的基本信息。

image

  • 您可以在操作列启动停止同步任务,在更多中可以对同步任务进行编辑查看等操作。

  • 已启动的任务您可以在执行概况中看到任务运行的基本情况,也可以单击对应的概况区域查看执行详情。

    image

断点续传

适用场景

在任务启动或重启时,手动重置位点主要适用于以下场景:

  • 任务恢复与数据续传:当任务因故中断后,为确保数据从准确的断点处恢复,可能需要手动指定一个中断时间点作为新的启动位点。

  • 数据问题排查与回溯:若发现同步后的数据存在丢失或异常,可将位点回溯至问题发生前的时间点,对问题数据进行重放和修复。

  • 任务配置重大变更:在对任务配置(如目标表结构、字段映射等)进行重大调整后,建议重置位点从一个明确的时间点开始同步,以保证新配置下的数据准确性。

操作说明

单击启动,在弹窗中选择是否重置位点

image

  • 不勾选重置位点,直接运行:继续从上次停止的时间位点(最后一次checkpoint)运行。

  • 重置位点,并选择时间:从指定的时间点位开始运行,注意选择的时间不要超过源端的Binlog支持的最早时间位点。

重要

如果您在执行同步任务时提示位点错误或不存在,请按如下方式尝试解决:

  • 重置位点:在启动实时同步任务时,重置位点并选择源库可用的最早位点。

  • 调整日志保留时间:如果数据库位点过期,可以考虑在数据库中调整日志的保留时间,例如设置为7天。

  • 数据同步:如果数据已经丢失,可以考虑重新全量同步,或者配置一个离线同步任务来手动同步丢失的数据。

常见问题

整库实时常见问题参见:实时同步常见问题全增量同步任务常见问题

更多案例