整库离线同步任务配置

更新时间:
复制为 MD 格式

DataWorks的整库离线同步功能,支持将源数据库中的全部或部分表结构与数据,批量、周期性地进行全量或增量同步至目标端,是实现高效数据迁移的关键解决方案。本文将以MySQL整库迁移至MaxCompute为例,介绍配置此类任务的通用流程。

准备工作

适用范围

整库离线同步任务支持在数据开发 (Data Studio) 与数据集成两大模块中进行配置,两者在功能上互通。

  • 配置一致:无论是数据开发还是在数据集成模块中创建任务,其配置界面、参数设置和底层功能完全一致。

  • 双向同步:在数据集成模块中创建的任务,会自动同步并显示在数据开发模块的data_integration_jobs目录下。这些任务会按照源端类型-目的端类型的通道进行归类,便于统一管理。

配置同步任务

步骤一:新建同步任务

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

  2. 在左侧导航栏单击同步任务,然后在页面顶部单击新建同步任务,并配置任务信息:

    • 数据来源类型MySQL

    • 数据去向类型MaxCompute

    • 具体类型整库离线

    • 同步步骤同步步骤与后续配置项全增量控制具有联动关系,可组合后形成不同的同步方案,详情见:全增量控制

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

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

      • 增量同步(可选):在全量同步完成后,根据增量条件持续地捕获源端新增的数据,并将其同步至目标端。

步骤二:配置数据源与运行资源

  1. 来源数据源区域选择已添加至工作空间的MySQL数据源,在去向数据源区域选择已添加的MaxCompute数据源。

  2. 运行资源区域,选择同步任务所使用的资源组,并为该任务分配资源组CU。如果您的同步任务因资源不足出现OOM现象,请适当调整资源组CU占用取值。

  3. 并确保来源数据源与去向数据源均通过连通性检查

步骤三:同步方案配置

1. 配置数据来源

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

image

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

2. 数据去向

单击分区初始化设置后的配置按钮,对新建目标表的分区进行统一初始化设置。此处修改后将覆盖所有新建目标表的分区设置,已配置的目标表不受影响。

3. 方案配置(全增量控制)

  1. 配置任务的执行频率

    • 若选择“全量同步”或“增量同步”:您可以自由选择任务的执行方式为一次性周期性

    • 若同时选择“全量同步”和“增量同步”:系统将采用 “首次一次性全量,后续周期性增量” 的内置模式,此选项不可更改。

      同步步骤

      全增量控制

      数据写入说明

      应用场景

      全量同步

      一次性

      任务启动后,可以将源表所有数据一次性同步至目标表或指定分区。

      数据初始化、系统迁移

      周期性

      按设定的调度周期,将源表所有数据周期性地同步至目标表或指定分区。

      数据对账、T+1全量快照

      增量同步

      一次性

      任务启动后,根据您指定的增量条件,将增量数据一次性同步至指定分区。

      手动修复某批次数据

      周期性

      任务启动后,按设定的调度周期增量条件,将增量数据周期性同步至指定分区。

      日常ETL、构建拉链表

      全量同步&增量同步

      (内置模式,不可选择)

      首次运行:自动执行一次表结构初始化和历史数据全量同步。

      后续运行:按设定的调度周期增量条件,将增量数据周期性同步至指定分区。

      一键式数据入仓/入湖

      说明
      • 整库离线的周期调度实例生成方式等同发布后即时生成,详情参见:实例生成方式:发布后即时生成

      • 分区生成方式可在后续的目标表字段赋值中定义,可使用常量,或使用系统预置变量周期调度参数动态生成。

      • 调度周期增量条件分区生成方式的配置存在联动关系,详情参见:6. 增量条件

  2. 配置周期调度参数。

    如果您的任务涉及周期性同步,则可单击周期调度参数进行配置。此处的参数可在后续目标表映射中配置增量条件字段赋值时使用。

4. 目标表映射

在此步骤,您需要定义源表与目标表的映射规则,并定义周期配置增量条件来指定数据写入方式。

image

操作

说明

刷新映射

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

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

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

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

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

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

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

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

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

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

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

可实现如下场景:

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

    规则配置

    应用效果

    image

    image

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

    规则配置

    应用效果

    image

    image

  3. 多张表写入一张表。

    规则配置

    应用效果

    image

    image

编辑目标表结构(可选)

系统将基于源端表结构自动生成目标表结构,常规场景下无需人工干预。若需特殊处理,可通过以下方式自定义

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

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

  • 不支持重命名列名。

目标表字段赋值

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

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

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

在赋值时支持赋值常量与变量,可在表字段分区字段赋值方式中进行切换类型,支持方式如下:

  • 手动赋值:直接输入常量值或调度参数,如:abc,或者使用${xxx}形式输入调度参数名称,比如${bizdate}

  • 选择变量:下拉选择系统支持的变量,可在界面的image提示中查看变量的具体含义。

变量周期调度参数均会在任务调度时,自动根据日期替换代码中的参数。

设置源端切分列

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

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

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

自定义高级参数

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

表类型

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

Delta Table详细介绍参见:Delta Table

5. 周期配置

若增量同步配置为周期性,需要在目标表完成周期配置。包括调度周期调度时间调度资源组等。当前同步的调度配置与数据开发中节点的调度配置一致,参数详情可参见节点调度配置

说明

如果一次性同步的表数量过多,建议配置调度时间时分批执行,防止任务堆积,造成资源挤兑。

6. 增量条件

若任务需要同步增量数据,必须配置增量条件。该条件决定了每个调度周期批次的实例具体同步哪些数据。

  1. 作用与语法

    • 作用:增量条件本质上是对源端数据进行筛选的 WHERE 子句。

    • 语法:配置时,您只需填写 WHERE 后面的条件表达式,无需写入 WHERE 关键字。

  2. 配合调度参数实现增量同步

    为了实现周期性的增量同步,您可以在增量条件中使用调度参数。例如,配置为 STR_TO_DATE('${bizdate}', '%Y%m%d') <= columnName AND columnName < DATE_ADD(STR_TO_DATE('${bizdate}', '%Y%m%d'), INTERVAL 1 DAY)' 即可同步前一天新产生的数据。

  3. 写入指定分区

    通过将增量条件与目标表的分区字段相结合,可以实现每个批次的增量数据精确写入对应的分区。

    例如,在步骤2的增量条件下,您可以将分区字段设为 ds=${bizdate},将目标表设为按天分区。这样每天的实例只会同步源端对应日期的数据,并写入目标表的同名分区。

重要
增量条件指定的时间区间,与分区生成的时间间隔,配合周期配置的调度周期,三者组合成合理配置后,可实现一套自动化的、业务规则与物理分区严格对齐的T+n增量ETL管道。

步骤四:高级配置

高级参数配置

如果需要对任务做精细化配置,以满足自定义同步需求,可以修改高级参数。

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

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

  3. 也支持使用AI配置,输入自然语言修改指令,如调整任务并发数,由大模型生成参数推荐值,您可以根据实际情况选择是否接受AI生成的参数。

    image

重要

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

引擎参数

引擎参数在正常情况下无需配置,如有需要请在专业内部人员指导下使用,请联系技术支持。

步骤五:发布并执行任务

  1. 完成所有配置后,单击页面底部的保存,完成任务配置。

  2. 整库同步任务不支持直接调试,需要发布至运维中心运行。因此新建或者编辑任务均需执行发布操作后方可生效。

  3. 发布时,若勾选发布后直接启动运行,则在发布时会同步启动任务。否则,发布完成后,需要进入数据集成 > 同步任务界面,在目标任务的操作列,手动启动任务。

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

步骤六:配置报警规则

整库离线同步任务的报警规则需在运维中心找到对应的子任务配置。

  1. 数据集成 > 同步任务列,获取目标任务ID

  2. 运维中心 > 周期任务列,根据集成任务的ID,找到对应的整库离线子任务,如集成任务ID34862,增量同步周期子任务名称为offline_odps_cyc_sync_mysql_test_timetest_to_mysql_test_timetest_34862,单击该任务的更多 > 添加规则监控,进入规则管理页。

  3. 新建自定义规则,设置规则对象触发方式报警行为等,更多信息,请参见规则管理

    您可以在规则对象中搜索已获取的子任务ID,找到目标任务并为其设置报警。

管理同步任务

编辑任务

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

  2. 对于非运行状态的任务,可以直接修改配置并保存,发布后即可生效。

  3. 对于运行中的任务,编辑任务并发布时,若未选择发布后直接启动运行,原有的操作按钮将变为应用更新。您须单击此按钮,变更才会在线上环境中生效。

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

    • 若变更方式为新增表

      点击更新后,新增该表的同步子任务,并立刻开始这个任务的结构迁移一次性全量同步,随后根据调度时间进行增量同步

    • 若变更方式为切换目标表,等同删除旧表后新增表

      点击更新后,删除旧表子任务,生成新表子任务,并立刻开始新表任务的结构迁移一次性全量同步,随后新任务根据调度时间进行增量同步。

    • 若修改其他信息:

      该表的结构迁移和一次性全量同步保持原样,增量同步新生成的实例根据变更后配置,已生成的实例不受影响。

    未修改的表均不受影响,不会重新运行。

查看任务

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

image

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

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

    image

配额与限制

  • 调试限制:整库同步任务不支持直接在数据集成或数据开发界面调试,必须发布至运维中心运行。

  • 切分列限制设置源端切分列功能目前仅在源端为MySQL时支持。切分列字段类型必须为数字类型,不支持字符串、浮点或日期类型。

  • 结构变更限制:在编辑目标表结构时,不支持重命名列名。对于已存在的目标表,无法更改其表类型

后续步骤

任务启动后,您可以点击任务名称,查看运行详情,进行任务运维和调优

常见问题

离线整库同步任务常见问题请参见全增量同步任务常见问题

更多案例