整库离线同步至Elasticsearch

整库离线同步方案包括周期性全量同步、周期性增量同步、一次性全量同步、一次性增量同步、一次性全量周期性增量同步。本文以一次性全量周期性增量同步至Elasticsearch为例,为您讲解如何将整库数据离线同步至Elasticsearch。

前提条件

  1. 已完成数据源配置。您需要在数据集成同步任务配置前,配置好您需要同步的源端和目标端数据库,以便在同步任务配置过程中,可通过选择数据源名称来控制同步任务的读取和写入数据库。同步任务支持的数据源及其配置详情请参见支持的数据源及同步方案

    说明

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

  2. 已完成数据源环境准备。您可以基于您需要进行的同步配置,在同步任务执行前,授予数据源配置的账号在数据库进行相应操作的权限。详情请参见:数据库环境准备概述

操作流程

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

  2. 步骤二:配置网络连通

  3. 步骤三:设置同步来源与规则

  4. 步骤四:设置目标索引

  5. 步骤五:同步规则设置

  6. 步骤六:运行资源设置

  7. 步骤七:执行同步任务

步骤一:选择同步方案

创建同步解决方案任务,根据需求选择需要同步的源端数据源和目标端数据源,并选择整库离线同步至Elasticsearch方案。

步骤二:配置网络连通

源端选择已创建的源端数据源与目标端数据源,以及用于执行同步任务的资源组。并测试资源组与数据源的网络连通。详情请参见:配置同步网络链接

步骤三:设置同步来源与规则

  1. 基本配置区域,配置同步解决方案的名称、任务存放位置等信息。

  2. 数据来源区域,确认需要同步的源端数据源相关信息。

  3. 选择同步的源表区域,选中需要同步的源表,单击图标图标,将其移动至已选源表

    该区域会为您展示所选数据源下所有的表,您可以选择整库全表或部分表进行同步。

  4. 设置表名到索引的映射规则区域,单击添加规则,选择相应的规则进行添加。

    同步时默认将源端数据表写入Elasticsearch同名索引中,同时,您可以通过添加映射规则定义最终写入目的端的索引名称,实现将多张表数据写入到同一个索引中,或统一将源端某固定前缀的表名在写入目标索引时更新为其他前缀。支持通过正则表达式转换写入的索引名,还支持使用内置变量拼接目标索引名。配置逻辑请参见:设置同步来源与规则

步骤四:设置目标索引

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

说明

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

功能

描述

选择主键替代方案

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

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

选择索引建立方式

支持自动建索引使用已有索引

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

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

编辑目标索引

同步解决方案默认根据源端生成目标索引结构,可能存在字段类型转换,即若目标端数据库中没有与源端一致的数据类型时,同步任务在自动创建目标索引时,将自动为源端字段匹配目标端可写入的字段类型。支持您单击Elasticsearch索引名列的目标索引名根据需求修改目标索引的相关参数。

说明

仅在索引建立方式自动建索引时,支持编辑目标索引。

  • 动态映射状态:用于在同步数据时,是否将数据源表的新增字段添加至目标索引中。取值如下:

    • true:当映射的目标索引检测到同步的数据源表中存在新添加的字段时,会将该字段同步添加至目标索引中,后续该字段可以被搜索。该取值为默认值。

    • false:当映射的目标索引检测到同步的数据源表中存在新添加的字段时,会将该字段同步添加至目标索引中,但后续该字段不可以被搜索。

    • strict:当映射的目标索引检测到同步的数据源表中存在新添加的字段时,将拒绝同步该字段至目标索引并产生异常报错,您可以在日志信息中查看报错详情。

    更多动态映射的内容,详情请参见动态映射

  • shard数量replica数量:索引的主分片及副本分片,用于将一个完整的索引分成多个分片,分布至不同的Elasticsearch节点上,构成分布式搜索,提升Elasticsearch的查询效率,详情请参见基本概念

    说明

    shard数量replica数量参数,配置运行后不可更改,默认取值为1

  • 分区设置:您可以选择同步的数据源表的某一列作为分区列,该参数需要和shard数量replica数量配合使用。默认不开启分区功能。

    • 不开启分区:不填写该参数,默认使用文档的_id作为routing起到将文档均匀分布到多个分片上防止数据倾斜的作用。

    • 开启分区:把指定列的value指定为routing的值,在写入时,插入或更新指定shard中的doc。

  • 数据字段结构:用于设置映射的目标索引中字段的类型及扩展属性,详情请参见Elasticsearch的字段类型

配置目标索引参数

说明

当创建了目标Elasticsearch索引后,如果不修改相关参数,则系统会按照默认值的相应规则进行数据同步。

步骤五:同步规则设置

  1. 选择同步方案。

    整库离线同步可选择的同步方案如下表所示。

    同步方案

    描述

    只全量一次性同步

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

    只增量一次性同步

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

    周期性全量同步

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

    周期性增量同步

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

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

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

  2. 配置同步方案参数。

    选择同步方案后,不同同步方案需配置不同的同步参数,包括全量同步参数、增量同步参数及周期设置参数。具体如下:

    • 全量同步

      仅当方案选择配置为只全量一次性同步周期性全量同步全量一次性同步后周期增量时,需要配置该参数。

      参数

      描述

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

      取值如下:

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

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

      重要

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

      写入Elasticsearch策略

      取值如下:

      • 插入:为默认值,同步数据时直接向目标索引中插入数据。

      • 更新:同步数据时,如果有相同的主键,则更新主键数据;如果没有相同的主键,则直接插入数据。

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

      每批次写入的条数

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

    • 增量同步

      仅当方案选择配置为只增量一次性同步周期性增量同步全量一次性同步后周期增量时,需要配置该参数。

      说明

      您可以使用调度参数来指定同步源表及目标表的数据范围,调度参数使用说明请参见:数据集成使用调度参数的相关说明

      参数

      描述

      写入ElasticSearch策略

      取值如下:

      • 插入:为默认值,同步数据时直接向目标索引中插入数据。

      • 更新:同步数据时,如果有相同的主键,则更新主键数据;如果没有相同的主键,则直接插入数据。

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

      每批次写入的条数

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

      增量条件

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

    • 周期设置

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

步骤六:运行资源设置

该同步方案将分别创建全量离线同步任务和增量离线同步任务,您可以在此步骤配置任务名称及任务执行所使用的调度资源组与数据集成任务执行资源组,同时,数据集成提供数据库最大连接数、并发数等配置的默认值,如果您需要对任务做精细化配置,您可通过高级配置进行修改。

说明

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

步骤七:执行同步任务

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

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

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

后续步骤

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