MySQL分库分表同步至MaxCompute

本文以MySQL分库分表实时写入MaxCompute场景为例,为您介绍如何通过数据集成同步分库分表数据至MaxCompute。

前提条件

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

    说明

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

  • 已购买合适规格的独享数据集成资源组。详情请参见:新增和使用独享数据集成资源组

  • 已完成独享数据集成资源组与数据源的网络连通。详情请参见:配置资源组与网络连通

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

    • MaxCompute:读取或写入MaxCompute表数据时,您可以根据需要选择是否开启相关属性。详情请参见MaxCompute环境准备

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

背景信息

实际业务场景下数据同步通常不能通过一个或多个简单离线同步或者实时同步任务完成,而是由多个离线同步、实时同步和数据处理等任务组合完成,这就会导致数据同步场景下的配置复杂度非常高。尤其是在MySQL分库分表的场景下,上游的数据库和表非常多,都需要同时写入一张MaxCompute表,如果同时配置多个任务会导致配置非常复杂且运维困难。

针对以上痛点,DataWorks数据集成一键同步解决方案提供了面向业务场景的同步任务配置化方案,支持不同数据源的一键同步功能,方便业务简单快速的进行数据同步。

分库分表同步至MaxCompute解决方案是一种基于Binlog实时同步、T+1合并生成离线表的实时同步解决方案。实时同步数据写入Log表中,Base表每一个天分区存储全量数据。然后每天运行合并任务合并前一天的Base表分区、Log表实时数据,产出新的全量分区,在查询数据时,一般需要查询Base表最新分区。

使用限制

  • 同步资源组:

    分库分表同步至MaxCompute需要使用DataWorks独享数据集成资源组。

  • 跨时区同步限制:

    同步解决方案暂不支持跨时区同步数据。如果同步任务中同步的数据源与使用的DataWorks资源组不在同一个时区,则会导致同步的数据有误。

操作流程

  1. 步骤一:选择同步方案

  2. 步骤二:网络与资源配置

  3. 步骤三:分库源表设置

  4. 步骤四:设置目标表

  5. 步骤五:设置表粒度同步规则

  6. 步骤六:DDL消息处理规则

  7. 步骤七:设置任务运行资源

  8. 步骤八:执行同步任务

步骤一:选择同步方案

创建同步解决方案任务,选择需要同步的源端数据源MySQL,目标端数据源MaxCompute,并选择分库分表实时同步至MaxCompute方案。

步骤二:网络与资源配置

源端选择环境准备步骤中已创建的数据源,目标数据源为步骤一的MaxCompute数据源。并测试连通性。连通性测试

说明

您需要根据业务需要定义读取源端数据库所使用的编码格式,及同步任务区源端数据库读取数据时所使用的时区。

步骤三:分库源表设置

分库分表解决方案同步的最小单位是逻辑表,一个逻辑表对应一套物理库表规则、一个目标base表。自动生成逻辑表的功能,可以大大简化逻辑表的配置步骤,一般情况下,我们都可以使用自动生成逻辑表来扫描源端数据源,简化大部分配置操作。如果自动扫描的结果不符合预期,只需要对自动扫描的结果做简单修正即可。复杂的物理库表规则可以使用手动添加逻辑表功能实现。

自动生成逻辑表

  1. 单击自动生成逻辑表,在数据源列表中选择部分数据源,用作生成逻辑表的扫描数据源。

  2. 配置逻辑表生成规则区域,单击新增规则,您可以选择预置规则手动输入相应的规则进行添加。

    本例中使用2个预设规则生成逻辑表:

    • 将来源表名仅后缀数字不同的表合并为目标表。

    • 直接将来源表名相同的表合并为目标表。

    添加规则

手工添加逻辑表

自动生成逻辑表与期望的匹配结果不符时,可以编辑逻辑表匹配规则,也可以通过手工添加逻辑表添加没有扫描到的逻辑表。

  1. 单击手工添加逻辑表,有几个逻辑表需要同步,就在此处添加几个。同一逻辑表的数据会同步到目标表中。

  2. 设置源库或源表限定条件。

    每一个同步表的限定条件分为库限定条件和表限定条件,您可以在源表选择限定条件源库选择限定条件区域单击添加条件分别添加限定条件,同步任务执行时将依据此规则对于源库和源表进行搜索整合,作为目标表的分库分表来源。

批量编辑库规则

分库规则可以限定来源库条件,这个限定条件可以被应用到所有的同步表。例如,数据都来自xiaobo1/xiaobo2/xiaobo3等数据库,那么就可以添加下图所示的分库规则限定条件:添加规则

步骤四:设置目标表

  1. 设置写入模式

    目前支持将增量数据实时写入MaxCompute的Log表,Log表中的增量数据再定期与目标端Base表全量数据进行合并(Merge),最终将结果写入Base表中。

  2. 时间自动分区设置。

    您可以在时间自动分区设置配置该任务写入MaxCompute分区表或是非分区表,并定义分区字段的名称,本案例中选择写入分区表,分区字段为ds

    说明

    若选择写入分区表,可单击编辑图标定义目标表分区字段名称。

  3. 刷新源表与目标表映射。

    单击刷新源表和MaxCompute表映射映射出现目标表列表。

    功能

    描述

    为非主键表选择主键

    由于当前方案不支持无主键表同步,所以您需要单击同步主键列的编辑按钮,为无主键表设置自选主键,即选择表中一个或部分字段作为主键,写入目标端时将会使用该主键进行去重。

    本案例为无主键表选择id列承担主键作用。

    编辑目标表结构

    单击MaxCompute表名,可以预览MaxCompute表结构,在创建MaxCompute表时,数据集成会给MaxCompute自动加上一列 _src_info_用于标识这行数据来自哪个子表。_src_info_配合源表主键,也可以用于唯一定位一行数据。

    说明

    目前自动建表生成的MaxCompute表生命周期默认只有30天,并且可能存在字段类型映射,即若目标端数据库中没有与源端一致的数据类型时,同步任务在自动创建目标表时,将自动为源端字段匹配目标端可写入的字段类型。若您需要修改MaxCompute表生命周期或修改目标表字段类型映射,您可单击MaxCompute表名列的目标表名进行修改。

    选择表建立方式

    支持自动建表使用已有表

    • 表建立方式选择使用已有表时,MaxComputeBase 表名列显示自动创建的表名称。您也可以在下拉列表中选择需要使用的表名称。

    • 表建立方式选择自动建表时,显示自动创建的表名称。您可以单击表名称,查看和修改建表语句。

    本案例选择自动建表

    是否全量同步

    您可以在全量同步列选择是否需要在实时同步前先将全量数据同步至目标端。

    如果关闭全量同步,则对应的表将不进行离线全量同步。适用于已经通过其他方式将全量数据同步至目标端的场景。

    本案例开启所有表的全量同步。

  4. 目标表、字段及数据读取写入关系确认无误后,单击下一步

步骤五:设置表粒度同步规则

本解决方案支持配置DML同步规则。例如,当您需要在离线表里保留源库删除的数据,您可以这样配置:配置dml即当源表发生插入、更新、删除时,您可以在此处定义对应的处理策略。

  • 正常处理:源端DML消息将会继续下发给目标数据源,由目标数据源来处理。

  • 忽略:直接丢弃该消息,不再向目标数据源发送对应的DML消息,对应数据不会改变。

  • 有条件的正常处理:选择后,您可以配置过滤条件,同步任务将按照您配置的过滤表达式对源端数据进行过滤,满足过滤条件的数据会被正常处理,不满足的会被忽略掉。

说明

若不设置,则默认为“正常处理”。

步骤六:DDL消息处理规则

来源数据源会包含许多DDL操作,数据集成体提供默认处理策略,您也可以根据业务需求,对不同的DDL消息设置同步至目标端的处理策略。不同DDL消息处理策略请参见:DDL消息处理规则

步骤七:设置任务运行资源

当前方案创建后将分别生成全量数据离线同步子任务和增量数据实时同步子任务。您需要在运行资源设置界面配置离线同步任务和实时同步任务的相关属性。

包括实时增量同步及离线全量同步使用的独享数据集成资源组、离线全量同步使用的调度资源组,同时,单击高级配置可配置是否容忍脏数据、任务最大并发数、源库允许支持的最大连接数等参数。

说明
  • DataWorks的离线同步任务通过调度资源组将其下发到数据集成任务执行资源组上执行,所以离线同步任务除了涉及数据集成任务执行资源组外,还会占用调度资源组资源。如果使用了独享调度资源组,将会产生调度实例费用。您可通过任务下发机制对该机制进行了解。

  • 离线和实时同步任务推荐使用不同的资源组,以便任务分开执行。如果选择同一个资源组,任务混跑会带来资源抢占、运行态互相影响等问题。例如,CPU、内存、网络等互相影响,可能会导致离线任务变慢或实时任务延迟等问题,甚至在资源不足的极端情况下,可能会出现任务被OOM KILLER杀掉等问题。

步骤八:执行同步任务

  1. 进入数据集成 > 同步任务界面,找到已创建的同步方案。

  2. 单击操作列的启动/提交执行按钮,启动同步的运行。

  3. 单击操作列的执行详情,查看任务的详细执行过程。

后续步骤

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