MySQL整库实时同步至MaxCompute

本文为您介绍如何通过DataWorks数据集成将MySQL整库实时同步至MaxCompute Delta Table中。

前提条件

  • 已完成MaxCompute和MySQL数据源配置。您需要将数据库添加至DataWorks上,以便在同步任务配置时,可通过选择数据源名称来控制同步读取和写入的数据库。详情请参见MySQL数据源创建MaxCompute数据源

    说明

    数据源相关能力介绍详情请参见:数据源概述

  • 已购买合适规格的Serverless资源组

  • 已完成Serverless资源组与数据源的网络连通。详情请参见:网络连通方案

  • 已完成数据源环境准备。

    • MaxCompute:Decimal类型为MaxCompute 2.0支持的数据类型,所以在同步前,您需要先开启MaxCompute2.0数据类型。详情请参见2.0数据类型版本

    • MySQL:来源数据源为MySQL时,您需要开启Binlog相关功能,详情请参见MySQL环境准备

背景信息

数据集成MySQL整库实时同步至MaxCompute任务支持将源端MySQL库的全量数据同步到MaxCompute Delta Table(支持分区表或非分区表),然后将增量变更数据实时同步,并具备分钟级的近实时同步数据可见性。目前同步至Delta Table的增量数据最快五分钟可见。

MaxCompute Delta Table的详情介绍请参见:近实时数仓概述

注意事项

该功能暂不支持开启了租户级Schema语法的MaxCompute数据源。

操作流程

操作步骤

步骤一:选择同步任务类型

  1. 进入数据集成页面。

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

  2. 在左侧导航栏单击同步任务,然后在创建同步任务区域,配置来源MySQL去向MaxCompute,点击开始创建。进入新建同步任务页面。

    • 任务名称:自定义同步任务名称。

    • 同步类型:选择整库实时

步骤二:配置网络连通

  1. 网络与资源配置区域,数据来源选择已添加的MySQL数据源,数据去向选择已添加的MaxCompute数据源,选择同步资源组后,单击测试所有连通性,测试资源组与数据源的连通性。

    image

  2. 单击下一步

步骤三:选择要同步的表

此步骤中,您可以在源端库表区域选择源端数据源下需要同步的表,并单击image图标,将其移动至已选库表。同时,支持通过正则表达式过滤库与表。

image

步骤四:目标表映射

在上一步骤选择完需要同步的表后,将自动在此界面展示当前待同步的表,但目标表的相关属性默认为待映射状态,需要您定义并确认源表与目标表映射关系,即数据的读取与写入关系,然后单击刷新映射后才可进入下一步操作。您可以直接刷新映射,或自定义目标表规则后,再刷新映射。

说明
  • 您可以选中待同步表后,单击批量刷新映射,未配置映射规则时,默认表名规则为${源端库名}_${表名},若目标端不存在同名表时,将自动新建。

  • 自定义目标表名规则,在目标表名映射自定义列,单击编辑按钮。

    可以使用内置变量和手动输入的字符串拼接成为最终目标表名。其中,支持您编辑内置变量,例如,新建一个表名规则,将源表名增加后缀作为目标表名。

  • 同步至MaxCompute Delta Table需要指定目标表的主键,默认会使用和源端表一致的主键,如果源表无主键,也可以自定义主键列。不指定主键表时同步任务将无法保存成功。

  • 默认自动创建的Delta Table的Bucket数量是16,可以在目标表映射的表Bucket数量中指定。

    表Bucket数量,已有表不支持修改。表bucket数量决定了表数据存储划分为多少个Bucket,包括查询,写入,数据合并等操作都可以按照Bucket粒度并发执行,但Bucket数量太多会导致小文件增加,因此要按需设置,详情可参考表操作数据存储分桶

  • 默认自动创建的Delta Table的历史数据可查询时间是0小时,可以在目标表映射的历史数据可查询时间中指定。

    历史数据可查询时间,已有表不支持修改。历史数据可查询时间决定数据历史版本可查询的时间范围,超过设定时间的历史数据不可查询,时间范围越长,意味着要保留的历史数据越多,存储费用也就越多,因此,请按需设置,详情可参考表操作Time Travel

编辑字段类型映射

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

编辑目标表结构并添加字段赋值

当目标MaxCompute表为待建立状态时,您可以为目标表在原有表结构基础上新增字段。操作如下:

  1. 为目标表添加字段。

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

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

  2. 为字段赋值。您可以通过以下操作为上述步骤中新增的字段赋值。

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

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

    说明

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

配置DML规则

数据集成提供默认DML处理规则,同时,您可以根据业务需要在此界面对写入MaxCompute的DML命令定义处理规则。

  • 单表定义规则:单击表格DML规则配置列的配置,对目标表单独定义DML规则。

  • 批量定义规则:选中待同步的所有表,在列表底部选择批量修改 > DML规则配置

步骤五:报警配置

为避免任务出错导致业务数据同步延迟,您可以对实时同步子任务设置不同的报警策略。

  1. 单击页面右上方的报警配置,进入实时同步子任务报警设置页面。

  2. 单击新增报警,配置报警规则。

    说明

    此处定义的报警规则,将对该任务产生的实时同步子任务生效,您可在任务配置完成后,进入实时同步任务运行与管理界面查看并修改该实时同步子任务的监控报警规则。

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

步骤六:高级参数配置

数据集成提供数据库最大连接数,并发度等配置的默认值,如果需要对任务做精细化配置,达到自定义同步需求,您可对参数值进行修改,例如通过最大连接数上限限制,避免当前同步方案对数据库造成过大的压力从而影响生产。

说明

请在完全了解对应参数含义的情况下再进行修改,以免产生不可预料的错误或者数据质量问题。

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

  2. 高级参数配置页面基于业务需要与资源组、数据库实际情况配置各项参数。

    配置区域

    参数

    说明

    读端配置

    源端最大连接数

    支持您通过该参数控制当前同步方案所产生的同步任务可占用的源端数据库连接数,即同一时间内,当前同步解决方案任务读取数据库的并发数上限。

    写端配置

    实时任务session缓存大小

    session缓存大小,超过则触发FLUSH数据到MaxCompute,单位Byte,不填则使用MaxCompute侧的默认值。

    实时任务bucket缓存大小

    bucket缓存大小,超过则触发flush数据到MaxCompute,单位Byte,不填则使用MaxCompute侧的默认值。

    运行时配置

    任务并发度

    支持您通过该参数控制当前同步方案所产生的同步任务的并发数。

    并发commit线程数

    并发commit的线程数,为1时不开启并发commit。默认值为5。

步骤七:DDL能力配置

来源数据源会包含许多DDL操作,您可以根据业务需求,在界面右上方单击DDL能力配置,进入DDL能力配置页面,对不同的DDL消息设置同步至目标端的处理策略。

说明

不同DDL消息处理策略请参见:DDL消息处理规则

步骤八:资源组配置

您可以单击界面右上方的资源组配置,查看并切换当前的任务所使用的资源组。

步骤九:执行同步任务

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

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

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

后续步骤

完成任务配置后,您可以对已创建的任务进行管理、执行加减表操作、或对任务配置监控报警,并查看任务运行的关键指标,详情请参见全增量同步任务运维