添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
MySQL整库离线同步至Elasticsearch

MySQL整库离线同步至Elasticsearch

数据集成目前支持将 MySQL、PolarDB、SQL Server 等源头的数据整库离线同步至 Elasticsearch。本文以 MySQL 为源端、Elasticsearch 为目标端场景为例,为您介绍如何将 MySQL 整个数据库的数据离线同步至 Elasticsearch。

前提条件

操作步骤

一、选择同步任务类型

  1. 进入数据集成页面。

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

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

    • 数据来源和去向 MySQL Elasticsearch

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

    • 同步类型 整库离线同步至 Elasticsearch

二、网络与资源配置

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

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

    image

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

三、设置同步来源和规则

  1. 选择需要同步的表。

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

    image

  2. 设置表名到索引名的映射规则。

    选择源端数据源中需要同步的库和表后,同步任务默认将源端数据库、数据表写入目标端同名 schema 或同名表中,如果目标端不存在该 schema 或表,将会自动创建。同时,您可以通过 设置表名到索引名的映射规则 自定义最终写入目标端的 Schema 或索引名称。

    配置说明:

    • 源库名和目标 Schema 名转换规则 :所有的该转换规则都是针对原始库名的转换,转换完成之后的结果可以使用 ${db_name_src_transed} ,在 目标索引名规则 中作为变量来使用。

      重要
      • 如果不使用 目标索引名规则 ,则此规则将直接影响最终实际目标 Schema 名。

      • 如果使用 目标索引名规则 ,则此规则不仅影响变量 ${db_name_src_transed} 的值,还会影响最终实际目标 Schema 名。

    • 源表名和目标索引名转换规则 :所有的该转换规则都是针对原始表名的转换,转换完成之后的结果可以使用 ${db_table_name_src_transed} ,在 目标索引名规则 中作为变量来使用。

      重要
      • 如果不使用 目标索引名规则 ,则此规则将直接影响最终实际目标索引名。

      • 如果使用 目标索引名规则 ,则此规则将只影响变量 ${db_table_name_src_transed} 的值,不直接影响最终实际目标索引名。最终目标索引名由 目标索引名规则 决定。

    • 目标索引名规则 :可以使用内置的变量命名目标索引名。

      可以使用的内置变量有:

      • ${db_table_name_src_transed} :“源表名和目标索引名转换规则”中的转换完成之后的索引名。

      • ${db_name_src_transed} :“源库名和目标 Schema 名转换规则”中的转换完成之后的目标 Schema 名。

      • ${ds_name_src} :源数据源名。

    例如,将源端 doc_ 前缀的库名替换为 pre_ 前缀、将源端 table_01 table_02 table_03 的表同步至一个名为 my_table 的索引中,最终为这个索引添加后缀 _post 。应该做如下配置:

    image

  3. 单击 下一步 ,设置目标索引。

四、设置目标索引

单击 刷新源表和 Elasticsearch 索引映射 将根据您在步骤三配置的 设置表名到索引名的映射规则 来生成目标索引,若步骤三未配置映射规则,将默认写入与源表同名的目标索引,若目标端不存在该同名索引,将默认新建。同时,您可以修改同步主键、索引建立方式。

说明

目标表名将根据您在 设置表名到索引名的映射规则 阶段配置的表名转换规则自动转换。

  1. 同步主键 列,选择主键替代方案。

    • 如果来源库有主键,则同步数据时会直接使用该主键进行去重。

    • 如果来源库没有主键,则您需要单击 image 图标,自定义主键,即使用其他非主键的一个或几个字段的联合,代替主键进行同步数据时进行去重判断。

  2. 索引建立方式 列,选择自动建索引或使用已有索引。

    • 索引建立方式 选择 自动建索引 时, Elasticsearch 索引名 列显示自动创建的 Elasticsearch 索引名。您可以单击索引名称,查看和修改索引相关属性。

    • 索引建立方式 选择 使用已有索引 时,您可以在 Elasticsearch 索引名 列对应的下拉列表中选择需要使用的索引名称。

  3. 单击 下一步 ,设置同步规则。

五、同步规则设置

当前支持以下整库离线同步方案,您可以按需选择,不同同步方案,需配置的参数存在差异。

同步方案

描述

全量一次性同步后周期性增量

先将来源数据源的所有数据全量同步至 Elasticsearch,再按照指定的过滤条件和周期任务,后续每次执行任务时仅将增量数据同步至 Elasticsearch 中。

只全量一次性同步

只执行一次同步操作,将来源数据源的所有数据,全量同步至 Elasticsearch 中。

只增量一次性同步

只执行一次同步操作,按照指定的过滤条件,将来源数据源的增量数据同步至 Elasticsearch 中。

周期性全量同步

按照配置的周期任务,每次执行任务时都将来源数据源的所有数据,全量同步至 Elasticsearch 中。

周期性增量同步

按照指定的过滤条件和周期任务,每次执行任务时仅将增量数据同步至 Elasticsearch 中。

全量一次性同步后周期增量

全量同步

参数

参数说明

写入前清空对应的原有 index(索引)

  • :写入数据前会清空索引中原有的数据。

  • :写入数据前不会清空索引中原有的数据。

重要

配置该参数为 时,则会在写入数据前删除目标索引中所有的数据,请谨慎选择。

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

增量同步

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

增量条件

您可通过 WHERE 语句对待同步的数据表进行过滤,且只需在 增量条件 框中填写 WHERE 子句,无需写 WHERE 关键字。同时,在写 WHERE 子句时,您可以使用系统内置变量,例如使用 ${bdp.system.bizdate} 指代业务日期、使用 ${bdp.system.cyctime} 指代定时时间等。

周期设置

由于需要进行周期性调度,所以需要在此定义周期性调度任务时的相关属性,包括 调度周期 生效日期 暂停调度 等。当前同步的调度配置与数据开发中节点的调度配置一致,参数详情可参见 节点调度

只全量一次性同步

全量同步

参数

参数说明

写入前清空对应的原有 index(索引)

  • :写入数据前会清空索引中原有的数据。

  • :写入数据前不会清空索引中原有的数据。

重要

配置该参数为 时,则会在写入数据前删除目标索引中所有的数据,请谨慎选择。

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

只增量一次性同步

增量同步

参数

参数说明

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

增量条件

您可通过 WHERE 语句对待同步的数据表进行过滤,且只需在 增量条件 框中填写 WHERE 子句,无需写 WHERE 关键字。同时,在写 WHERE 子句时,您可以使用系统内置变量,例如使用 ${bdp.system.bizdate} 指代业务日期、使用 ${bdp.system.cyctime} 指代定时时间等。

周期性全量同步

全量同步

参数

参数说明

写入前清空对应的原有 index(索引)

  • :写入数据前会清空索引中原有的数据。

  • :写入数据前不会清空索引中原有的数据。

重要

配置该参数为 时,则会在写入数据前删除目标索引中所有的数据,请谨慎选择。

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

周期设置

由于需要进行周期性调度,所以需要在此定义周期性调度任务时的相关属性,包括 调度周期 生效日期 暂停调度 等。当前同步的调度配置与数据开发中节点的调度配置一致,参数详情可参见 节点调度

周期性增量同步

增量同步

参数

参数说明

写入类型

  • 插入:默认值,直接向 Elasticsearch index 中插入数据

  • 更新:插入时如果有相同的主键就更新数据,如果没有就插入数据。

    说明

    更新时是先将原来一行的数据全部删除后再插入。

每批次写入的条数

每次批量写入 Elasticsearch 的数据条数,即攒够一定条数的数据后,一次性写入 Elasticsearch。默认为 1000 。您可以根据实际网络情况及数据量大小进行合理配置,减少不必要的网络开销。

增量条件

您可通过 WHERE 语句对待同步的数据表进行过滤,且只需在 增量条件 框中填写 WHERE 子句,无需写 WHERE 关键字。同时,在写 WHERE 子句时,您可以使用系统内置变量,例如使用 ${bdp.system.bizdate} 指代业务日期、使用 ${bdp.system.cyctime} 指代定时时间等。

周期设置

由于需要进行周期性调度,所以需要在此定义周期性调度任务时的相关属性,包括 调度周期 生效日期 暂停调度 等。当前同步的调度配置与数据开发中节点的调度配置一致,参数详情可参见 节点调度

配置完成后,单击 下一步 ,设置运行资源。

六、设置运行资源

根据上一步选择的不同同步方案,此步骤需设置的运行资源存在差异。同步任务将分别创建全量离线同步任务和增量离线同步任务,您可以配置任务名称及任务执行所使用的资源组(全量离线任务资源组、增量离线任务资源组、调度资源组),同时,您可通过 高级配置 修改数据集成提供的 任务期望最大并发数 同步速率 容忍脏数据 来源端读取支持最大连接数 等高级参数。

七、 执行同步任务

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

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

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

同步任务运维

查看任务运行状态

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

您可以在操作列单击 执行详情 ,进入任务详情页,查看任务执行情况。

image