DataWorks提供的实时数据同步功能支持您通过单表或整库方式,将源数据库的数据实时同步到目标数据库。您可以创建实时同步任务,灵活搭配多种输入和输出数据源,实现单表或整库数据的实时增量同步。本文为您介绍如何创建单表或整库增量数据实时同步任务,并在创建完成后查看任务运行情况。
前提条件
已完成数据源配置。在配置实时同步任务之前,请确保已设置好源端和目标端数据库,以便在同步任务中通过选择数据源名称来控制读取和写入操作。实时同步支持的数据源及其配置详情请参见支持的数据源及同步方案。
已新增和使用Serverless资源组并与工作空间绑定。
资源组与数据源网络已连通。详情请参见网络连通方案。
步骤一:创建实时同步节点
您可根据以下步骤,选择并创建所需的实时同步节点。
进入DataWorks工作空间列表页,在顶部切换至目标地域,找到已创建的工作空间,单击操作列的 ,进入Data Studio。
创建实时同步节点。
单击左侧导航栏中的
图标,找到左侧目录树中的项目目录,单击右侧的
图标,选择 ,进入新建节点对话框。
在新建节点对话框中选择同步方式,具体的同步方式可见下表:
同步任务配置类型
同步方式
单表(Topic)到单表(Topic)ETL
数据库变更数据同步到MaxCompute
数据库变更数据同步到Hologres
数据库变更数据同步到AnalyticDB MySQL 3.0
数据库变更数据同步到DataHub
数据库变更数据同步到Kafka
在新建节点对话框中自定义实时同步节点名称,并单击确认创建,即可进入实时同步节点配置页面。
步骤二:配置实时同步任务
在配置实时同步节点时,您需要根据创建节点时选择的同步方式进行相应同步任务的参数配置。
配置单表实时同步任务
在实时同步节点配置页面,配置单表实时同步任务时,请按照以下步骤设置输入数据源、数据转换和数据输出源:
配置输入数据源。
在实时同步节点配置页面左侧的输入区域,将目标输入数据源组件拖放到配置页面。
单击输入组件,在右侧的节点配置对话框中配置相关信息。
配置单表同步,支持的输入数据源类型及其配置如下:
(可选)配置数据转换方式。
配置输出数据源。
在实时同步节点配置页面左侧的输出区域,将目标输出数据源组件拖放到配置页面。
单击输出组件,在右侧的节点配置对话框中配置相关信息。
配置单表同步,支持的输出数据源类型及其配置如下:
配置输入、输出组件的上下游关系。
配置完输入数据源、转换格式及输出数据源,您可以根据业务需求,通过连线完成相应的组件关系连接。
配置整库实时同步任务
在实时同步节点配置页面,配置整库实时同步任务时,您可以按照以下步骤完成实时同步任务的配置:
设置同步来源和规则。
在数据来源区域,选择要同步的数据源类型和数据源名称等信息。
在选择同步的源表区域,您可以在源端库表区域勾选需要同步的整库全表或部分表,并单击
图标,将其移动至已选库表区域。
设置表名的映射规则。
说明在此步骤中,您可以选择源端数据源中需要同步的库和表。默认情况下,源端的数据库和表将写入目标端同名的Schema或表中。如果目标端不存在相应的Schema或表,系统会自动创建。您还可以通过设置表(库)名映射规则来自定义写入目标端的Schema或表名称。
源表名和目标表名转换规则:源端表名支持通过正则表达式转换为目标端最终写入的表名。
示例1:将源端
doc_
前缀的表数据,写入前缀为pre_
的目标表中。示例2:将多张表数据写入到一张目标表。
将源端名称为
table_01
、table_02
、table_03
的表同步至一张名为my_table
的表中。配置正则表名转换规则为:源:table_*
,目标:my_table
。
目标表名规则:支持您使用内置的变量组合生成目标表名,同时,对转换后的目标表名支持添加前缀和后缀。可使用的内置变量有:
${db_table_name_src_transed}
:源表名和目标表名转换规则中的转换完成之后的表名。${db_name_src_transed}
:源库名和目标Schema名转换规则中的转换完成之后的目标Schema名。${ds_name_src}
:源数据源名。
示例:在上一步中,您已通过表名转换规则将源表名转换为新的表名(例如
my_table
)。接下来,您可以对转换后的表名进行进一步的字符串拼接处理。使用${db_table_name_src_transed}
代表上一步的处理结果,并为其添加前缀和后缀。例如,使用pre_${db_table_name_src_transed}_post
,最终映射到名为pre_my_table_post
的目标表。
单击节点下方的下一步,进入设置目标表配置页。
设置目标表。
在设置目标表或Topic页面,配置目标数据源基本信息。例如,写入模式、分区设置等。具体配置以各数据源实时同步界面为准。
单击刷新源表和目标表映射,创建需要同步的源表和目标表的映射关系。
支持通过编辑附加字段或批量编辑目标表附加字段为目标表添加常量,变量等操作。具体配置以各数据源实时同步界面为准。
如果目标表无主键时,不支持迁移,您可以通过设置同步主键作为主键替代方案来解决这个问题。
说明如果同步的表数量较多,会导致执行进度较慢,请耐心等待。
单击节点下方的下一步,进入表粒度同步规则设置页。
说明如系统检测到您有部分表需要自动建表,必须建表完成后才能进行下一步配置。
(可选)设置表粒度同步规则。
部分同步方案支持自定义表级DML处理策略,即当源表发生插入、更新、删除时,您可以在此处定义对应的处理策略。
说明不同数据源支持的DML操作可能存在差异,具体同步方案是否支持DML处理策略,请以产品界面为准。数据源当前的DML支持情况请参见支持的DML及DDL操作。
单击节点下方的下一步,进入实时同步DDL消息处理策略页。
设置DDL消息处理规则。
在实时同步DDL消息处理策略页,来源数据源会包含许多DDL操作,进行实时同步时,您可以根据业务需求,对不同的DDL消息设置同步至目标端的处理策略。不同数据源支持的DDL操作可能存在差异,详情请参见:支持的DML及DDL操作。您可以针对每个写入的目标数据库类型,设置DDL处理策略。不同DDL消息处理策略如下表所示。
DDL消息类型
处理策略
新建表
DataWorks收到对应类型的DDL消息时,处理策略如下:
正常处理:此DDL消息将会继续下发给目标数据源,由目标数据源来处理,不同目标数据源处理策略可能会不同。
忽略:丢弃掉此DDL消息,不再向目标数据源发送此消息。
出错:直接让实时同步任务以出错状态终止运行。
删除表
新增列
删除列
重命名表
重命名列
修改列类型
清空表
单击节点下方的下一步,进入运行资源设置页。
设置运行资源。
:提供任务并发数控制功能来限制写入数据库的最大并发数。
:支持您控制同步任务是否容忍脏数据的产生。
当不允许脏数据产生时,同步任务执行过程中如果产生脏数据,任务将失败退出。
当允许脏数据时:同步任务将忽略脏数据(即不会写入目标端),并正常执行。
完成配置。
单击完成配置,即可完成整库实时同步配置。
步骤三:配置实时同步运行资源
配置完成后,您可按照以下操作,配置实时同步节点运行资源信息。
选择实时同步节点配置页右侧工具栏的基本配置。
进入基本配置页面,下拉选择配置您所绑定的Serverless资源组,配置占用CU数和任务执行并发数。
配置完运行资源后,单击实时同步节点配置页面上方工具栏中的保存按钮,保存实时同步任务。
步骤四:运行实时同步任务
配置完实时同步节点内容后,您可通过以下步骤运行实时同步任务。
发布节点。
任务需要发布至运维中心后才可执行,请参考界面引导对需要运行的实时同步节点执行发布操作,详情请参见节点/工作流发布。
运行节点。
节点发布完成后,单击发布到生产环境最下方的去运维,进入运维中心的实时同步任务列表页面。
找到您所创建的实时同步任务,单击右侧操作栏中的启动,在启动页面按照页面提示进行配置重置位点等相关信息,并确定启动任务。
说明您可根据附录中的重置位点说明,决定是否需要手动设置位点信息。
当任务状态变为执行中,您可单击实时同步任务的任务名称,进入运行信息页面。
在运行信息中单击日志页签查看任务执行情况。
附录:重置位点说明
DataWorks实时同步任务在以下情况下需要手动设置位点:
任务中断后恢复:重启任务时需手动设置位点为中断的时间点,以确保从断点继续同步。
数据丢失或异常:重置位点到数据写入前的时间点,以确保数据完整。
调整任务配置:修改目标表或字段映射后,需手动设置位点以确保同步准确性。
如果遇到位点错误或不存在的情况,请按如下方式解决:
重置位点:启动任务时选择源库可用的最早位点。
调整日志保留时间:若位点过期,可在数据库中调整日志保留时间(如设为7天)。
数据同步:数据丢失时,可重新进行全量同步或配置离线同步任务。