更新时间:2025-09-09 GMT+08:00

MySQL同步到Elasticsearch作业配置(内测)

支持的源端和目的端数据库版本

表1 支持的数据库版本

源端数据库

目的端数据库

MySQL数据库(5.6、5.7、8.x版本)

Elasticsearch数据库(7.x版本、6.x版本)

数据库账号权限要求

在使用Migration进行同步时,源端和目的端所使用的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表2进行赋权。

表2 数据库账号权限

类型名称

权限要求

源数据库连接账号

需要具备如下最小权限:SELECT、SHOW DATABASES、REPLICATION SLAVE、REPLICATION CLIENT,即执行SQL:

GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '用户名'@'%';

目标数据库连接账号

暂不支持CSS安全模式集群、不支持CSS开启“HTTPS访问”。

  • 建议创建单独用于Migration任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。
  • 连接源和目标数据库的账号密码修改后,请同步修改管理中心对应的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。

支持的同步对象范围

在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考表3

表3 同步对象范围

类型名称

使用须知

同步对象范围

  • 支持同步DML:包括INSERT、UPDATE、DELETE。
  • 不支持同步DDL。
  • 仅支持同步MyISAM和InnoDB表。
  • 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。
  • 运行时自动创建Elasticsearch索引,暂不支持复杂mapping结构的创建,不支持复杂数据类型的创建,包括Json、Object、Nested、Array等。
  • 对于已有索引,不支持写出数据到结构定义较为复杂的索引字段,需要保证字段定义Json体的第一级中包含type属性,否则字段会被忽略。
  • 不支持同步对象中存在包含CASCADE、SET NULL、SET DEFAULT之类引用操作的外键。这些关联操作会导致更新或删除父表中的行,影响子表对应的记录,并且子表的相关操作并不记录Binlog。

注意事项

除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见表4

表4 注意事项

类型名称

使用和操作限制

数据库限制

  • 源端数据库中的库名、表名、字段名不能包含:.<'>/\"以及非ASCII字符,建议尽量使用常规字符避免任务失败。
  • 目标数据库中的库名、表名、字段名仅支持数字、字母和下划线,且字段名必须以字母或下划线开头,建议尽量使用常规字符避免任务失败。

使用限制

通用:

  • 实时同步过程中,不支持IP、端口、账号、密码修改。
  • 不允许源数据库进行恢复操作。
  • 源库需开启Binlog日志,并确保binlog_row_image的参数值为full。
  • 建议MySQL Binlog保留3天以上,不支持强制清理Binlog。

    异常/暂停恢复作业时,记录的Binlog位点过期会导致作业恢复失败,需要关注作业异常/暂停时长及Binlog保留时长。

  • 实时同步过程中,不允许源数据库MySQL跨大版本升级,否则可能导致数据不一致或者同步任务失败(跨版本升级后数据、表结构、关键字等信息均可能会产生兼容性改变),建议在该场景下重建同步任务。

全量同步阶段:

任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。

增量同步阶段:

  • 增量同步过程中,不支持指定位置加列的DDL操作(例如ALTER TABLE ddl_test ADD COLUMN c2 AFTER/FIRST c1;),Migration会删除AFTER/FIRST属性,可能会导致列顺序不一致。
  • 增量同步过程中,执行不幂等的DDL可能导致数据不一致(例如ALTER TABLE ddl_test ADD COLUMN c3 timestamp default now();),Migration会因数据库函数执行结果不幂等导致最终数据不一致。
  • 增量同步过程中,尚不支持DDL同步,如果需要对Elasticsearch做结构变更需要先停止作业后手动完成。
  • 对于已有索引,不支持写出数据到结构定义较为复杂的索引字段,需要保证字段定义Json体的第一级中包含type属性,否则字段会被忽略。
  • 不支持同步对象中存在包含CASCADE、SET NULL、SET DEFAULT之类引用操作的外键。这些关联操作会导致更新或删除父表中的行会影响子表对应的记录,并且子表的相关操作并不记录Binlog。
  • 不支持将位点设置在作业涉及的表发生修改与新增列等涉及表结构变更的DDL之前。

备库抽取:

备库抽取需确认备库节点上执行SHOW MASTER STATUS能够返回值,否则在作业异常、暂停恢复场景下存在数据作业异常和数据丢失风险。

常见故障排查:

在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。

其他限制

支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。

目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。

操作步骤

本小节以RDS for MySQL到Elasticsearc的实时同步为示例,介绍如何配置Migration实时集成作业。配置作业前请务必阅读使用前自检概览, 确认已做好所有准备工作。

  1. 参见新建实时集成作业创建一个实时集成作业并进入作业配置界面。
  2. 选择数据连接类型:源端选MySQL,目的端选Elasticsearch。

    图1 选择数据连接类型

  3. 选择集成作业类型:同步类型默认为实时,同步场景包含整库和分库分表场景。

    图2 选择集成作业类型

    同步场景相关介绍请参见同步场景

  4. 配置网络资源:选择已创建的MySQL、Elasticsearch数据连接和已配置好网络连接的migration资源组。

    图3 选择数据连接及migration资源组

    无可选数据连接时,可单击“新建”跳转至管理中心数据连接界面,单击“创建数据连接”创建数据连接,详情请参见配置DataArts Studio数据连接参数进行配置。

    无可选migration资源组时,可单击“新建”跳转至购买migration资源组页面创建migration资源组配置,详情请参见购买创建数据集成资源组增量包进行配置。

  5. 检测网络连通性:数据连接和migration资源组配置完成后需要测试整个迁移任务的网络连通性,可通过以下方式进行数据源和migration资源组之间的连通性测试。

    • 单击展开“源端配置”触发连通性测试,会对整个迁移任务的连通性做校验。
    • 单击源端和目的端数据源和migration资源组中的“测试”按钮进行检测。

      网络连通性检测异常可先参考数据源和资源组网络不通如何排查?章节进行排查。

  6. 配置源端参数。

    各同步场景下选择需要同步库表的方式请参考表5

    表5 选择需要同步的库表

    同步场景

    配置方式

    整库

    选择需要迁移的MySQL库表。
    图4 选择库表

    库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。

  7. 配置目的端参数。

    • 源库表和目标匹配策略。

      各同步场景下源端库表和目标端库表的匹配策略请参考表6

      表6 源库表和目标匹配策略

      同步场景

      配置方式

      整库

      • 索引匹配策略。
        • 与来源表同名:数据将同步至与来源MySQL表名相同的Elasticsearch表中。
        • 自定义:数据将同步至自行指定的Elasticsearch表中。
          图5 整库场景下索引匹配策略
          说明:

          自定义匹配策略时,支持用内置变量#{source_table_name}标志来源的表名,且必须包含#{source_table_name}。

      • 目标数据源配置。
        • ES版本:支持7.x版本、6.x版本。
        • 索引属性全局配置:"索引全局配置"作用于所有索引,"全局配置"优先级低于"索引属性编辑"中的配置。

          当前支持的配置项包括:sink.server.timezone(配置时间类型数据时区)、es.num.shards(分片数)、es.num.replicas(副本数)。

  8. 刷新源表和目标表映射,检查映射关系是否正确,同时可根据需求修改表属性、添加附加字段,并通过“自动建表”能力在目的端Elasticsearch数据库中建出相应的表。

    图6 源表与目标表映射
    • 附加字段编辑:单击操作列“附加字段编辑”可为目的端的Elasticsearch索引中增加自定义字段,同时附加字段也会额外加入到Elasticsearch索引的建表中。用户可以在已有的源表字段基础上添加多个附加字段,并自定义字段名、选择字段类型、填写字段值。
      • 字段名称:目的端Elasticsearch索引新增字段的名称。
      • 字段类型:目的端Elasticsearch索引新增字段的类型。
      • 字段值:目的端Elasticsearch索引新增字段的取值来源。
        表7 附加字段取值方式

        类型

        示例

        常量

        支持数字、字母、中文、特殊字符。彩色表情字符可能导致作业提交失败,需谨慎使用。

        内置变量

        • 源端host ip地址:source.host。
        • 源端schema名称:source.schema。
        • 源端table名称:source.table。
        • 目的端schema名称:target.schema。
        • 目的端table名称:target.table。

        源表字段

        源表中的任一字段。

        配置附加字段的取值来源于源表字段时,请注意任务运行过程中不能修改对应源表字段的名称,否则可能导致作业异常。

        udf方法

        • substring(#col, pos[, len]): 截取源端col列的子串, 范围在[pos, pos+len)。
        • date_format(#col, time_format[, src_tz, dst_tz]): 将源端col列按time_format格式化, 可选转换时区。
        • now([tz]): 获取指定时区的当前时间。
        • if(cond_exp, str1, str2): 满足条件表达式cond_exp时返回str1, 否则返回str2。
        • concat(#col[, #str, ...]): 拼接多个参数, 可为源端列或字符串。
        • from_unixtime(#col[, time_format]): 将unix时间戳按time_format格式化。
        • unix_timestamp(#col[, precision, time_format]): 将时间转成unix时间戳,可显式定义时间格式及转换后精度,time_format时间格式要与源端保持一致。
    • 索引属性编辑

      单击操作列“索引属性编辑”可配置Elasticsearch索引属性,包含索引名,自定义动态索引名后缀及索引自定义属性。

      图7 Elasticsearch索引属性配置
      • 索引名:默认与源表名一致,不可修改。
      • 自定义动态索引名后缀:当前支持udf方法:
        • 时间格式化:date_format(#col_name, format, 时区),示例:date_format(#ts, yyyyMMdd, +8)。
        • 哈希:hash(#col_name, algorithm_name, 哈希函数入参...),示例:hash(#id, simple_hash, 5)。
        • 一年中的第几周:week_in_year(#col_name),示例:week_in_year(#ts)。
      • 索引自定义属性:支持通过参数配置单表的部分高级功能。

  9. 配置任务属性。

    表8 任务配置参数说明

    参数

    说明

    默认值

    执行内存

    作业执行分配内存,跟随处理器核数变化而自动变化。

    8GB

    处理器核数

    范围:2-32。

    每增加1处理核数,则自动增加4G执行内存和1并发数。

    2

    并发数

    作业执行支持并发数。该参数无需配置,跟随处理器核数变化而自动变化。

    1

    自动重试

    作业失败时是否开启自动重试。

    最大重试次数

    “自动重试”为是时显示该参数。

    1

    重试间隔时间

    “自动重试”为是时显示该参数。

    120秒

    添加自定义属性

    支持通过自定义属性修改部分作业参数及开启部分高级功能,详情可参见任务性能调优章节。

    -

  10. 提交并运行任务。

    作业配置完毕后,单击作业开发页面左上角“提交”,完成作业提交。

    图8 提交作业

    提交成功后,单击作业开发页面“启动”按钮,在弹出的启动配置对话框按照实际情况配置同步位点参数,单击“确定”启动作业。

    图9 启动配置
    表9 启动配置参数

    参数

    说明

    同步模式

    • 增量同步:从指定时间位点开始同步增量数据。
    • 全量+增量:先同步全量数据,随后实时同步增量数据。

    时间

    增量同步需要设置该参数,指示增量同步起始的时间位点。

    说明:

    配置的位点时间早于Binlog日志最早时间点时,默认会以日志最早时间点开始消费。

  11. 监控作业。

    通过单击作业开发页面导航栏的“前往监控”按钮,可前往作业监控页面查看运行情况、监控日志等信息,并配置对应的告警规则,详情请参见实时集成任务运维

    图10 前往监控

性能调优

若链路同步速度过慢,可参考参见任务性能调优章节中对应链路文档进行排查及处理。