DataWorks的整库离线同步功能,支持将源数据库中的全部或部分表结构与数据,批量、周期性地进行全量或增量同步至目标端,是实现高效数据迁移的关键解决方案。本文将以MySQL整库迁移至MaxCompute为例,介绍配置此类任务的通用流程。
准备工作
数据源准备
资源组:已购买并配置Serverless资源组。
网络连通:资源组与数据源之间需完成网络连通。
功能入口
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据集成。
配置任务
一、新建同步任务
您可以通过以下两种方式创建同步任务:
方式一:在同步任务页面,选择来源和去向,单击新建同步任务。此处来源选择MySQL,去向选择MaxCompute。
方式二:在同步任务页面,如果任务列表为空,单击请创建。
二、配置基本信息
三、选择要同步的库表
此步骤中,您可以在源端库表区域选择源端数据源下需要同步的表,并单击图标,将其移动至右侧已选库表。
若库表数较多,可以使用库过滤或者表过滤,通过配置正则表达式来选择需要同步的表。
四、设置目标表属性
单击分区初始化设置后的配置按钮,对新建目标表的分区进行统一初始化设置。此处修改后将覆盖所有新建目标表的分区设置,已配置的目标表不受影响。
五、设置全增量控制
配置任务的全增量类型。
若选择“全量同步”或“增量同步”:您可以自由选择任务的执行方式为一次性或周期性。
若同时选择“全量同步”和“增量同步”:系统将采用 “首次一次性全量,后续周期性增量” 的内置模式,此选项不可更改。
同步步骤
全增量控制
数据写入说明
应用场景
全量同步
一次性
任务启动后,可以将源表所有数据一次性同步至目标表或指定分区。
数据初始化、系统迁移
周期性
按设定的调度周期,将源表所有数据周期性地同步至目标表或指定分区。
数据对账、T+1全量快照
增量同步
一次性
任务启动后,根据您指定的增量条件,将增量数据一次性同步至指定分区。
手动修复某批次数据
周期性
任务启动后,按设定的调度周期与增量条件,将增量数据周期性同步至指定分区。
日常ETL、构建拉链表
全量同步&增量同步
(内置模式,不可选择)
首次运行:自动执行一次表结构初始化和历史数据全量同步。
后续运行:按设定的调度周期与增量条件,将增量数据周期性同步至指定分区。
一键式数据入仓/入湖
说明整库离线的周期调度实例生成方式等同发布后即时生成,详情参见:实例生成方式:发布后即时生成。
分区生成方式可在后续的目标表字段赋值中定义,可使用常量,或使用系统预置变量、周期调度参数动态生成。
调度周期、增量条件与分区生成方式的配置存在联动关系,详情参见:增量条件。
配置周期调度参数。
如果您的任务涉及周期性同步,则可单击周期调度参数配置进行配置。此处的参数可在后续目标表映射中配置增量条件及字段赋值时使用。
六、目标表映射
在此步骤,您需要定义源表与目标表的映射规则,并定义周期配置和增量条件来指定数据写入方式。
目标表配置
操作 | 说明 | ||||||||||||
刷新映射 | 系统会自动列出您选择的源端表,但目标表的具体属性需要您刷新确认后才能生效。
| ||||||||||||
目标表名映射自定义(可选) | 系统存在默认的表名生成规则:
可实现如下场景:
| ||||||||||||
编辑字段类型映射(可选) | 系统存在默认的源端字段类型与目标端字段类型映射,您可以单击表格右上角的编辑字段类型映射,自定义源端表与目标端表字段类型映射关系,配置完后单击应用并刷新映射。 编辑字段类型映射时,需要注意字段类型转换规则是否正确,否则会导致类型转换失败而产生脏数据,影响任务运行。 | ||||||||||||
编辑目标表结构(可选) | 系统将基于源端表结构自动生成目标表结构,常规场景下无需人工干预。若需特殊处理,可通过以下方式自定义
| ||||||||||||
目标表字段赋值 | 普通字段会根据源端表和目标表的同名字段进行自动映射,分区字段和上述步骤中的新增字段需要手动赋值。操作如下:
在赋值时支持赋值常量与变量,您可通过 | ||||||||||||
设置源端切分列 | 您可以在源端切分列中下拉选择源端表中的字段或选择不切分。同步任务执行时将根据该字段切分为多个task,以便并发、分批读取数据。 推荐使用表主键作为源端切分列,不支持字符串、浮点和日期等其他类型。 目前仅源端为MySQL时支持源端切分列。 | ||||||||||||
其他 |
Delta Table详细介绍参见:Delta Table。 |
周期配置
若增量同步配置为周期性,需要在目标表完成周期配置。包括调度周期、调度时间、调度资源组等。当前同步的调度配置与数据开发中节点的调度配置一致,参数详情可参见节点调度。
如果一次性同步的表数量过多,建议配置调度时间时分批执行,防止任务堆积,造成资源挤兑。
增量条件
若任务需要同步增量数据,必须配置增量条件。该条件决定了每个调度周期批次的实例具体同步哪些数据。
作用与语法
作用:增量条件本质上是对源端数据进行筛选的
WHERE
子句。语法:配置时,您只需填写
WHERE
后面的条件表达式,无需写入WHERE
关键字。
配合调度参数实现增量同步
为了实现周期性的增量同步,您可以在增量条件中使用调度参数。例如,配置为
即可同步前一天新产生的数据。STR_TO_DATE('${bizdate}', '%Y%m%d') <= columnName AND columnName < DATE_ADD(STR_TO_DATE('${bizdate}', '%Y%m%d'), interval 1 day)
'写入指定分区
通过将增量条件与目标表的分区字段相结合,可以实现每个批次的增量数据精确写入对应的分区。
例如,在步骤2的增量条件下,您可以将分区字段设为
ds=${bizdate}
,将目标表设为按天分区。这样每天的实例只会同步源端对应日期的数据,并写入目标表的同名分区。
增量条件指定的时间区间,与分区生成的时间间隔,配合周期配置的调度周期,三者组合成合理配置后,可实现一套自动化的、业务规则与物理分区严格对齐的T+n增量ETL管道。
七、其他配置
报警配置
任务运行后,将在运维中心生成调度任务,为避免任务出错导致业务数据同步延迟,您可以对同步任务设置报警策略。
在任务列表中找到正在运行的同步任务,单击操作列的
,进入任务编辑页。单击下一步,然后在页面右上方单击报警配置,进入报警设置页面。
在调度信息列,单击生成的调度任务,进入运维中心任务详情页,获取任务ID。
在运维中心左侧导航栏,单击
,进入规则管理页。单击新建自定义规则,设置规则对象、触发方式和报警行为等,更多信息,请参见规则管理。
您可以在规则对象中搜索已获取的任务ID,找到目标任务并为其设置报警。
资源组配置
您可以单击界面右上方的资源组配置,查看并切换当前的任务所使用的资源组。
高级参数配置
如果需要对任务做精细化配置,达到自定义同步需求,可以单击自定义高级参数列的配置,修改高级参数。
单击界面右上方的高级参数配置,进入高级参数配置页面。
根据参数提示,修改参数值,参数含义见参数名称后的解释。
请在完全明白对应参数的含义情况下再进行修改,避免产生任务延时、资源占用过大导致阻塞其他任务、数据丢失等不可预料的问题发生。
八、执行同步任务
完成所有配置后,单击页面底部的完成配置。
在
界面,找到已创建的同步任务,单击操作列的启动。单击任务列表中对应任务的名称/ID,查看任务的详细执行过程。
编辑任务
在
界面,找到已创建的同步任务,单击操作列的更多,单击编辑,可以修改任务信息,操作步骤同任务配置。对于未提交的任务,您可以直接修改配置,然后单击完成配置进行保存。
对于已提交的任务,修改配置后,原有的操作按钮将变为应用更新。您须单击此按钮,变更才会在线上环境中生效。
单击应用更新后,系统会对变更内容执行“停止,发布,重启”三个步骤。
若变更方式为新增表:
点击更新后,新增该表的同步子任务,并立刻开始这个任务的结构迁移和一次性全量同步,随后根据调度时间进行增量同步。
若变更方式为切换目标表,等同删除旧表后新增表:
点击更新后,删除旧表子任务,生成新表子任务,并立刻开始新表任务的结构迁移和一次性全量同步,随后新任务根据调度时间进行增量同步。
若修改其他信息:
该表的结构迁移和一次性全量同步保持原样,增量同步新生成的实例根据变更后配置,已生成的实例不受影响。
未修改的表均不受影响,不会重新运行。
查看任务
创建完成同步任务后,您可以在同步任务页面查看当前已创建的同步任务列表及各个同步任务的基本信息。
您可以在操作列启动或停止同步任务,在更多中可以对同步任务进行编辑、查看等操作。
已启动的任务您可以在执行概况中看到任务运行的基本情况,也可以单击对应的概况区域查看执行详情。
后续步骤
任务启动后,您可以点击任务名称,查看运行详情,进行任务运维和调优。
常见问题
离线整库同步任务常见问题请参见全增量同步任务常见问题。