MySQL整库离线同步到OSS

本文示例以MySQL为源端,OSS为目标端,为您介绍如何将MySQL整个数据库的数据离线同步到OSS。

使用限制

仅支持使用独享数据集成资源组。

操作步骤

  1. 步骤一:创建同步任务

  2. 步骤二:配置同步任务

  3. 步骤三:运行并查看任务状态

前提条件

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

  • 已完成MySQL和OSS数据源配置,以便在同步任务配置时,可通过选择数据源名称来控制同步读取和写入的数据库。配置数据源的操作详情请参见配置MySQL数据源配置OSS数据源

    重要
    • 配置数据源时,需要同步完成独享数据集成资源组与MySQL数据源、OSS数据源的网络连通测试。不同网络环境下的网络连通方案可参见:网络连通方案

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

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

步骤一:创建同步任务

  1. 进入数据集成页面。

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

  2. 单击左侧导航栏的同步任务来源选择MySQL去向选择OSS,单击开始创建按钮。

    image.png

  3. 新建同步任务页面,编辑任务的基本信息。

    1. 新任务名称:自定义。

    2. 同步类型:本文是以MySQL整库离线同步至OSS,故选择:整库离线

    3. 同步步骤:根据您的业务需求选择全量同步全量同步增量同步。详情请参见:步骤二:配置同步任务

      • 若您需要进行一次性全量周期性全量同步,请勾选全量同步

      • 若您需要进行一次性全量周期性增量同步,请勾选全量同步增量同步

    4. 网络与资源配置:点击下拉框分别选择已经创建的MySQL数据源、独享数据集成资源组、OSS数据源,单击测试所有连通性,保障资源组与数据源之间的网络连通性。

      image.png

步骤二:配置同步任务

周期全量配置方式

  1. 新建同步任务页面,选择同步步骤全量同步

    image.png

  2. 单击下一步,在选择要同步的库表中,选择MySQL中需要同步的表。

    • 您可以在左侧源端库表区域需要同步的源表,点击image.png图标,可以将其移动至右侧已选库表区域。

    • 选中右侧已选库表中的表,点击image.png图标,也可以取消已选库表区域的表。

    说明

    您也可以在库过滤表过滤的搜索框中,输入库表的名称或填写正则表达式,选择需要同步的库表

  3. 配置目标OSS文件属性

    image.png

    1. 目标根路径,书写格式:di_to_oss_path/${bizdate}/,其中调度参数${bizdate}表示业务日期,调度值填写$bizdate。等于调度日期的前一天,更多调度参数详情请参见:调度参数支持的格式

      说明

      在使用调度参数$bizdate时,需要包含在全增量控制周期调度参数配置中。

    2. 文件类型parquettextcsvorc

    3. 列分隔符:数据的字段分割符号,例如逗号(,)。

    4. 前缀冲突:在进行数据写入时,若目标对象与待写入对象名称具有相同前缀,可以进行以下操作:

      • 替换原有文件:删除前缀相同的文件,重建新的文件替换原有文件。

      • 退出报错:同步任务停止执行。

    5. 更多参数:若文件类型是textcsv格式,支持配置更多参数来完成定制化行为。

      image.png

  4. 配置全增量控制

    1. 全量同步中选择周期性

    2. 单击周期调度参数配置设置对应的调度参数。调度参数详情请参见调度参数支持的格式

    image.png

    image.png

  5. 刷新目标表映射

    • 单个目标表映射刷新:单击目标表操作列的刷新映射

      image.png

    • 批量目标表映射刷新:勾选多个需要刷新的表,单击按钮批量刷新映射

      image.png

    说明

    DataWorks数据集成提供了自定义规则,用于映射目标OSS路径目标OSS文件名

    • 内置目标OSS路径映射自定义规则default_path_convert_rule

      • 将来源库名称作为目标OSS路径。例如,源数据库名称为di_ide_yufa时,使用上述规则,该名称会直接被用作OSS的目标路径,即在OSS中的存储路径将是di_ide_yufa。

    • 内置的目标OSS文件名映射自定义规则有以下两个规则:

      • 使用default_file_convert_rule_with_schedule_params自定义规则。该规则定义${srcTableName}/data_${bizdate},源表名${srcTableName}会作为OSS路径的一部分,而目标文件为data_后面跟上调度参数${bizdate}的值。

        • 例如,源表名为base_c_app_config,调度日期的值是20230101,那么在OSS中生成的目标表名为:base_c_app_config/data_20230101。

      • 使用default_file_convert_rule自定义规则。该规则定义${srcTableName}/data,源表名${srcTableName}作为OSS路径的一部分,并且默认的目标文件名为data

        • 例如,源表名为base_c_app_config,转换后的目标表名为base_c_app_config/data。

    • 最终的OSS文件写入路径以及文件,由如下三者拼接而成。

      • 目标根路径。

      • 目标OSS路径映射自定义转换得到的目标文件路径。

      • 目标OSS文件名映射自定义规则转换得到的目标文件名。

      image.png

  6. 周期配置

    1. 刷新表映射后,表粒度周期性调度参数配置,支持批量修改或单表定制化修改。您可单击批量修改按钮,在下拉列表中找到周期配置,可以对单表粒度进行配置。更多调度参数配置详情请参见任务调度属性配置概述

      image.png

    2. 周期配置中,可以设置预期的周期调度时间。本示例中设置周期调度时间为每天0点10分。

      image.png

  7. 完成配置。

    单击完成配置,完成同步任务的配置。

一次性全量周期性增量配置方式

  1. 新建同步任务页面,选择同步步骤全量同步增量同步

    image.png

  2. 单击下一步,在选择要同步的库表中,选择MySQL中需要同步的表。

    • 您可以在左侧源端库表区域需要同步的源表,点击image.png图标,可以将其移动至右侧已选库表区域。

    • 选中右侧已选库表中的表,点击image.png图标,也可以取消已选库表区域的表。

    说明

    您也可以在库过滤表过滤的搜索框中,输入库表的名称或填写正则表达式,选择需要同步的库表

  3. 配置目标OSS文件属性

    image.png

    1. 目标根路径,书写格式:di_to_oss_path/${bizdate}/,其中调度参数${bizdate}表示业务日期,调度值填写$bizdate。等于调度日期的前一天,更多调度参数详情请参见:调度参数支持的格式

      说明

      在使用调度参数$bizdate时,需要包含在全增量控制周期调度参数配置中。

    2. 文件类型parquettextcsvorc

    3. 列分隔符:数据的字段分割符号,例如逗号(,)。

    4. 前缀冲突:在进行数据写入时,若目标对象与待写入对象名称具有相同前缀,可以进行以下操作:

      • 替换原有文件:删除前缀相同的文件,重建新的文件替换原有文件。

      • 退出报错:同步任务停止执行。

    5. 更多参数:若文件类型是textcsv格式,支持配置更多参数来完成定制化行为。

      image.png

  4. 配置全增量控制

    1. 此处默认展示一次性全量和周期性增量,不可更改。

    2. 单击周期调度参数配置设置对应的调度参数。调度参数详情请参见:调度参数支持的格式

    image.png

    image.png

  5. 刷新目标表映射

    • 单个目标表映射刷新:单击目标表操作列的刷新映射

      image.png

    • 批量目标表映射刷新:勾选多个需要刷新的表,单击按钮批量刷新映射

      image.png

      说明

      DataWorks数据集成提供了自定义规则,用于映射目标OSS路径目标OSS文件名

      • 内置目标OSS路径映射自定义规则default_path_convert_rule

        • 将来源库名称作为目标OSS路径。例如,源数据库名称为di_ide_yufa时,使用上述规则,该名称会直接被用作OSS的目标路径,即在OSS中的存储路径将是di_ide_yufa。

      • 内置的目标OSS文件名映射自定义规则有以下两个规则:

        • 使用default_file_convert_rule_with_schedule_params自定义规则。该规则定义${srcTableName}/data_${bizdate},源表名${srcTableName}会作为OSS路径的一部分,而目标文件为data_后面跟上调度参数${bizdate}的值。

          • 例如,源表名为base_c_app_config,调度日期的值是20230101,那么在OSS中生成的目标表名为:base_c_app_config/data_20230101。

        • 使用default_file_convert_rule自定义规则。该规则定义${srcTableName}/data,源表名${srcTableName}作为OSS路径的一部分,并且默认的目标文件名为data

          • 例如,源表名为base_c_app_config,转换后的目标表名为base_c_app_config/data。

      • 最终的OSS文件写入路径以及文件,由如下三者拼接而成。

        • 目标根路径。

        • 目标OSS路径映射自定义转换得到的目标文件路径。

        • 目标OSS文件名映射自定义规则转换得到的目标文件名。

        image.png

  6. 周期配置

    1. 刷新表映射后,表粒度周期性调度参数配置,支持批量修改或单表定制化修改。您可单击批量修改按钮,在下拉列表中找到周期配置,可以对单表粒度进行配置。更多调度参数配置详情请参见任务调度属性配置概述

      image.png

    2. 周期配置中,可以设置预期的周期调度时间。本示例中设置周期调度时间为每天0点10分。

      image.png

  7. 增量条件配置。

    1. 表粒度增量条件参数,支持批量修改/单表定制化修改。单击批量修改按钮,在下拉列表中选择增量条件

      image.png

    2. 本文以天为增量举例,假设业务时间字段为gmt_modified,每天增量抽取前一天0点到今天0点的数据(左闭右开),单击增量条件输入如下代码:

      to_timestamp('${bizdate}','yyyyMMdd') <= gmt_modified AND gmt_modified < (to_timestamp('${bizdate}','yyyyMMdd') + interval '1 day')

      image.png

  8. 完成配置。

    单击完成配置,完成同步任务的配置。

    image.png

其他高级配置(可选)

目标OSS文件名映射自定义

您可以使用内置变量和手动输入的字符串拼接成为最终目标路径。其中,支持您编辑内置变量,例如,做字符串替换。

image.png

全增量控制与周期控制

  • 如果您的同步步骤勾选了全量同步增量同步,在全增量控制面板页面,默认展示一次性全量,周期性增量,不可更改。

    image.png

  • 如果您的同步步骤选择了全量同步,在全增量控制面板页面,可以选择任务的类型是一次性全量还是周期性全量。

    image.png

  • 如果您的同步步骤选择了增量同步,在全增量控制面板页面,可以选择任务的类型为一次性增量还是周期性增量。

    image.png

附加字段使用调度参数

支持您在附加字段中使用调度参数。

  1. 单击周期调度参数配置,新增调度参数,以添加一个cyc_time参数为例:

    image.png

  2. 单击批量修改,打开目标文件附加字段

    image.png

    说明

    您也可以单击目标表映射右侧image.png自定义列图标,勾选目标字段附加字段,快捷打开目标文件附加字段进行配置。

  3. 目标文件附加字段中,点击新增字段,在名称列输入dt赋值列使用手动赋值方式输入${cyc_time},给新增字段赋值调度参数。

image.png

高级参数配置

您可以通过以下两种方式定义高级参数:

  • 单击页面右上角的高级参数配置,对同步任务读端与写端进行精细化配置,例如最大连接数、离线任务限流相关参数。

    配置高级参数可以控制任务的行为。高级参数功能是整个任务全局的高级参数配置,会应用到本任务的每一个表上。

  • 在刷新表映射表格上,您还可以单独配置每个表的自定义高级参数,单表的高级参数优先级更高。

    • 单击选择image.png自定义列按钮,在下拉列表中勾选自定义高级参数,单击确认

      image.png

    • 配置自定义高级参数

      image.png

  • 以下表格列举了本同步解决方案所支持的高级参数。

高级参数名称

说明

离线任务源端最大连接数

离线任务源端最大连接数。数据源维度,同一数据源,同时运行的离线任务并发度不允许超过此值

离线同步任务并发度

并发数是指数据同步任务中,可以从源端并行读取和向目标存储端并行写出数据的最大线程数。并发数大,同步任务速率高,但相对也会消耗更多的资源组槽位,并发数小,同步速率相对较低,相对消耗的资源组槽位也较少

离线任务是否开启限流

您可以通过限流控制同步速率,以保护读取端数据库,避免抽取速度过大,给源库造成太大的压力,在不限流的情况下,任务将在所配置的并发数的限制基础上,提供现有硬件环境下最大的传输性能

离线是否允许脏数据

离线是否允许脏数据,配置成false时,如果数据写入目标表失败,任务会失败。

离线任务限流大小

线任务限流大小,单位MB,在开启限流时生效。如未开启限流,则此参数不生效。

步骤三:运行并查看任务状态

启动同步任务

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

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

  3. 单击名称/ID执行概况列空白处,跳转到任务的运行详情页面,查看任务的详细执行过程。

查看任务运行状态

任务的运行详情页面分为三个部分:基本信息、执行状态以及详情信息。

  • 基本信息:包括任务的数据源信息,绑定的资源组以及同步方案。

  • 执行状态:MYSQL到OSS的离线整库同步任务细分后的同步步骤详情。

    • 任务同步类型为全量同步,此处展示全量同步。

    • 任务同步类型为增量同步,此处展示增量同步。

    • 任务同步类型为全量同步、增量同步,此处展示全量同步以及增量同步。

  • 详情信息:针对”全量同步“和”增量同步“的信息显示执行步骤。

    • 全量同步中包含离线同步的表信息、同步的进度、以及写入的条数。单击进度列,可以查看当前表同步的详细日志信息及相关指标

      image.pngimage.png

    • 增量同步中包含离线周期任务对应的最新周期实例的相关指标信息。

      image.png

      • 点击image.png自定义列按钮,勾选增量条件周期实例周期配置,点击确认。

        image.png

      • 单击增量条件 > 查看,展示本次周期实例的实例化增量条件。

        image.png

        image.png

      • 单击周期实例 > 查看,跳转数据集成logview页面,显示历史运行过的周期实例相关指标信息。

      • 点击周期配置 > 查看,显示本周期任务的周期调度相关信息。

        image.png

        image.png

任务重跑

  • 直接重跑:不修改任务配置,直接点击重跑操作。

    效果:重跑一次性任务、周期性任务属性做更新。

    image.png

  • 修改后重跑(增减表场景):编辑任务,进行增减表的操作, 单击完成。这个时候任务的操作会变成"应用更新",单击应用更新会直接触发修改后的任务重跑。

    效果:新增的表才会进行同步,之前同步过的表不会再同步。

  • 修改后重跑(修改表名信息):编辑任务,进行目标表的名称修改或者切换同步的目标表,点击完成。这个时候任务的操作会变成"应用更新",单击应用更新会直接触发修改后的任务重跑。

    效果:同步修改过的表,没有修改的表不会再进行同步

数据开发相关场景

如果您有下游数据依赖,需要进行数据开发操作的场景,可以参考配置调度依赖,进行节点上下游的设置,对应的周期任务节点信息可以在周期配置中查看。

image.png

image.png