MySQL整库实时同步至LogHub(SLS)

MySQLLogHub(SLS)整库实时同步链路支持将增量数据实时同步至目标端。本文将为您介绍如何创建整库实时同步MySQLLogHub的任务,并在创建完成后查看任务运行情况。

前提条件

操作步骤

一、选择同步任务类型

  1. 进入数据集成页面。

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

  2. 在左侧导航栏单击同步任务,然后在页面顶部单击新建同步任务,进入同步任务的创建页面,配置如下基本信息。

    • 数据来源和去向MySQLLogHub

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

    • 同步类型整库实时

二、网络与资源配置

  1. 网络与资源配置区域,选择同步任务所使用的资源组。您可以为该任务分配任务资源占用CU数。

  2. 来源数据源选择已添加的MySQL数据源,去向数据源选择已添加的LogHub数据源后,单击测试连通性image

  3. 确保来源数据源与去向数据源均连通成功后,单击下一步

三、选择要同步的库表

此步骤中,您可以在源端库表区域选择源端数据源下需要同步的表,并单击image图标,将其移动至右侧已选库表

image

  • 选择指定库表

    • 在源端库表的库过滤表过滤中,可通过输入库名或表名的特征信息筛选需要同步的库表。勾选所有需要同步的库表数据,单击image图标,将其移动至已选库表区域。

    • 已选库表库过滤表过滤中,可通过输入库名或表名的特征信息筛选无需同步的库表。勾选所有无需同步的库表数据,单击image图标,将其移动至源端库表区域。

  • 使用正则选表(支持运行中按正则加减表)

    通过库过滤表过滤里面配置的正则表达式筛选表信息。单击确认选择您所需同步的库表数据。

    说明

    例如,若需筛选同步库名前缀为a且表名前缀为order的库表信息,可在库过滤框中输入 a.*,在表过滤框中输入order.*

四、目标表映射

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

1. 选择目标logstore

您需要在目标logstore列下拉选择同步任务目标端logstore,您也可以选中多个表,然后单击批量修改 > 目标logstore批量配置。

2. 配置DML规则

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

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

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

五、报警配置

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

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

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

    说明

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

  3. 管理报警规则。

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

六、高级参数配置

如果需要对任务做精细化配置,达到自定义同步需求,可以单击自定义高级参数列的配置,修改高级参数。

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

  2. 以下为关键参数内容说明:

    参数名称

    功能说明

    是否展开业务数据

    控制是否将源表的业务数据字段平铺到日志的顶层。

    • true:展开。展开格式可在数据展开格式中选择部分展开或全展开

    • false(默认):不展开,数据封装在整个json字段内。

    是否透传DDL信息

    控制是否采集源表的DDL操作信息(如CREATE TABLEALTER TABLE)作为一条日志同步到SLS。

    • true(默认):透传。

    • false:不透传。

    来源Null值处理策略

    配置源端表字段数据为NULL时,写入目标字段的填充值。默认为空,即保留NULL值。

    数据展开格式

    定义业务数据(data字段)在写入SLS时的结构(仅在是否展开业务数据选项为true时可见)。选择不同的格式会直接影响下游系统消费日志的方式。数据展开的格式案例参见:附录:数据展开格式举例

    • 部分展开(默认):兼容logtail mysql binlog的采集格式。

    • 全展开:将所有业务数据字段(包括变更前和变更后的)作为独立的顶级键值对(Key-Value)平铺在数据中。

七、资源组配置

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

八、执行同步任务

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

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

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

同步任务运维

查看任务运行状态

创建完成同步任务后,您可以在同步任务页面查看当前已创建的同步任务列表及各个同步任务的基本信息。image

  • 您可以在操作列启动停止同步任务,在更多中可以对同步任务进行编辑查看等操作。

  • 已启动的任务您可以在执行概况中看到任务运行的基本情况,也可以单击对应的概况区域查看执行详情。image

    MySQLLogHub(SLS)的整库实时同步任务展示实时同步的统计信息(实时的进度、DDL记录、DML记录和报警信息)。

任务重跑

在某些特殊情况下,如果您需要增减表、修改目标表Schema信息或者表名信息时,您还可以单击同步任务操作列的重跑,系统会将新增的表或有变更的表进行同步,之前同步过的表或者未修改的表将不会再进行同步。

  • 不修改任务配置,直接单击重跑操作,重新运行全量初始化+实时同步。

  • 编辑任务,进行增减表操作,单击完成配置。这个时候任务的操作列会显示应用更新,单击应用更新会直接触发修改后的任务重跑。新增的表才会进行同步,之前同步过的表不会再同步。

附录:数据展开格式举例

  • 不展开

    {
      "ExecutionTime": 1761017850000,
      "_db_": "*****",
      "_event_": "row_update",
      "_event_time_": 1761017850,
      "_file_name_": "mysql-bin.*****",
      "_gtid_": "4a21a3ce-ad7a-11f0-a8f3**********",
      "_host_": "rm-*********.mysql.rds.aliyuncs.com",
      "_id_": "176101777********",
      "_offset_": "265*****",
      "_table_": "t_parameter",
      "data": {
        "updateBefore": {
          "_old_id": "3",
          "_old_name": "82174b93-b810-4030-8652-e5c1667d3f72",
          "_old_value": "+@}8-/XC",
          "_old_status": "kBdO",
          "_old_description": "a?!L7{jaH+",
          "_old_create_time": "2023-12-28 19:03:43",
          "_old_create_user": "+Zs",
          "_old_modify_time": "2006-11-26 20:42:31",
          "_old_modify_user": "brTYGI?jLL"
        },
        "updateAfter": {
          "id": "3",
          "name": "82174b93-b810-4030-8652-e5c1667d3f72-tagd",
          "value": "+@}8-/XC",
          "status": "kBdO",
          "description": "a?!L7{jaH+",
          "create_time": "2023-12-28 19:03:43",
          "create_user": "+Zs",
          "modify_time": "2006-11-26 20:42:31",
          "modify_user": "brTYGI?jLL"
        }
      }
    }
    
  • 部分展开:兼容logtail mysql binlog采集格式

    {
      "ExecutionTime": 1761017850000,
      "_db_": "*****",
      "_event_": "row_update",
      "_event_time_": 1761017850,
      "_file_name_": "mysql-bin.*****",
      "_gtid_": "4a21a3ce-ad7a-11f0-a8f3**********",
      "_host_": "rm-*********.mysql.rds.aliyuncs.com",
      "_id_": "176101777********",
      "_offset_": "265*****",
      "_table_": "t_parameter",
      "old_data": {
        "_old_id": "1",
        "_old_name": "0e459c1a-c6ce-459b-b374-a161b095c8e9",
        "_old_value": "你好",
        "_old_status": "b",
        "_old_description": "cw",
        "_old_create_time": "2007-08-06 16:19:03",
        "_old_create_user": "!wW4",
        "_old_modify_time": "2017-04-21 18:21:58",
        "_old_modify_user": "s"
      },
      "data": {
        "id": "1",
        "name": "0e459c1a-c6ce-459b-b374-a161b095c8e9-dsg",
        "value": "你好",
        "status": "b",
        "description": "cw",
        "create_time": "2007-08-06 16:19:03",
        "create_user": "!wW4",
        "modify_time": "2017-04-21 18:21:58",
        "modify_user": "s"
      }
    }
  • 全展开:所有字段平铺展示。

    {
      "ExecutionTime": 1761017850000,
      "_db_": "****",
      "_event_": "row_update",
      "_event_time_": 1761017850,
      "_file_name_": "mysql-bin.*****",
      "_gtid_": "4a21a3ce-ad7a-11f0-a8f3**********",
      "_host_": "rm-*********.mysql.rds.aliyuncs.com",
      "_id_": "176101777********",
      "_offset_": "265*****",
      "_table_": "t_parameter",
      "_old_create_time": "2024-09-27 15:27:10",
      "_old_create_user": "o",
      "_old_description": "LZ[1HsTE",
      "_old_id": "6",
      "_old_modify_time": "2008-03-15 08:05:53",
      "_old_modify_user": "/{=>7_d@0Q",
      "_old_name": "cf8a671c-4414-45f5-a22c-62c353a6f1ef",
      "_old_status": "K:HQOX-?gK",
      "_old_value": "23]sn<t",
      "create_time": "2024-09-27 15:27:10",
      "create_user": "o",
      "description": "LZ[1HsTE",
      "id": "6",
      "modify_time": "2008-03-15 08:05:53",
      "modify_user": "/{=>7_d@0Q",
      "name": "cf8a671c-4414-45f5-a22c-62c353a6f1efgsdsa",
      "status": "K:HQOX-?gK",
      "value": "23]sn<t"
    }