You need to enable JavaScript to run this app.
导航
同步至公网自建 ElasticSearch
最近更新时间:2024.12.02 14:17:02首次发布时间:2023.03.22 11:52:05

本场景介绍如何在数据库传输服务 DTS 控制台创建公网自建 MySQL 同步至公网自建 ElasticSearch 任务。

前提条件

  • 已在公网环境中自行搭建 MySQL 和 ElasticSearch,并创建数据库账号。
  • 当数据库实例的接入方式选择的是公网自建时,且数据库实例开启了访问限制,那么在创建数据库传输任务前,您需要将 DTS 服务器 IP 地址添加至数据库实例的白名单或安全组中。不同地域下的 DTS 服务器 IP 地址不同,具体如下所示:
    • 华南 1(广州)、华北 2(上海)和华北 2(北京)的 DTS 服务器 IP 地址是 221.194.189.0/27,157.148.90.32/27,180.184.132.64/27,61.129.54.64/27,220.196.172.32/27,117.135.143.32/27,220.196.168.32/27,116.132.250.32/27,111.45.13.32/27,125.88.248.32/27,180.153.35.32/27,220.181.65.32/27,220.181.65.64/27

    • 亚太东南(柔佛)的 DTS 服务器 IP 地址是 101.47.0.32/27,220.181.65.32/27,220.181.65.64/27

    • 中国香港的 DTS 服务器 IP 地址是 101.47.65.32/28,101.47.65.48/28
        关于 DTS 服务器 IP 地址段的详细信息,请参见添加 DTS 服务器的 IP 地址段

注意事项

  • 当源库为自建 MySQL 时,您需要关注以下信息:

    • 同步时,如果源库进行主备切换,否则会导致同步任务失败。

    • 在同步期间,如果源库执行了重启操作,同步任务会暂时中断并自动尝试修复,如果任务长时间没恢复,请提交工单联系技术支持。

      说明

      当同步对象为整库时,您可以创建心跳表,心跳表每秒定期更新或写入数据。

  • 在库表结构初始化过程中,数据库传输服务 DTS 会将源数据库中的外键同步到目标数据库。

  • 在全量初始化和增量同步过程中,数据库传输服务 DTS 会以 Session 级别暂时禁用约束检查和外键级联操作。当任务运行时源库存在级联更新、删除操作时,可能会导致数据不一致。

  • 在数据同步的过程中,若遇到目标库中已存在同主键或唯一键的情况,DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致或任务失败等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。

    • 表结构一致时:全量同步的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。

    • 表结构不一致时:可能会导致无法初始化数据,只能同步部分列数据或同步失败。

使用限制

应用限制

类型说明

源库限制

  • 数据库版本:当前支持 5.6、5.7 和 8.0 的 MySQL 实例。

  • 在源库的实例版本大于等于 5.6 时,gtid_modeenforce_gtid_consistency 取值均需为 ON

    说明

    当 MySQL 的版本小于 8.0 且未开启参数 gtid\_mode 时,可能会在数据同步过程中导致外键级联删除失败,从而造成数据差异。

  • 带宽要求:源库所属的服务器需具备足够出口带宽,否则将影响数据同步的速率。

  • 支持 InnoDB 数据库存储引擎,暂不支持 MariaDB 数据库引擎。

  • 待同步的表需具备主键或唯一非空约束,且字段具有唯一性,否则可能会导致数据不一致。

  • Binlog 日志的参数要求:

    • 需开启 Binlog 日志功能,并设置参数 binlog_formatrowbinlog_row_imagefull,否则预检查提示报错,且无法成功启动数据同步任务。

    • Binlog 日志至少要保留 24 小时,建议保留 7 天以上的日志,否则 DTS 可能因无法获取日志从而导致任务失败,某些情况下也可能导致数据丢失。

  • 单任务中表的数量建议不超过 2 万,库的数量不超过 1000 个。当有大量库表需要同步时,建议拆分为多个任务。

目标库限制数据库版本:当前支持 6.0 和 7.0 的 ElasticSearch 实例。

其他限制

  • 执行数据同步前需评估源库和目标库的性能,建议在业务低峰期执行数据同步。否则全量数据初始化时 DTS 占用源和目标库一定的读写资源,可能会导致数据库的负载上升。

  • 当源库为 MySQL 8.0 版本时,在配置同步任务时,您需要手动对以下账号直接授予数据同步的相关权限:

    • 源库的账号是通过 Role 进行相关权限授权的。

    • 需要进行用户同步的账号是通过 Role 进行相关权限授权的。

  • 同步任务仅支持同步表格。

操作限制

当前仅支持同步 DML 语句到 ElasticSearch。

支持的同步架构

  • 一对一单向同步

  • 一对多单向同步

  • 多对一单向同步

关于数据库传输服务 DTS 支持的同步拓扑类型和使用说明,请参见数据同步拓扑

支持的 SQL 操作

操作类型SQL 操作语句
DMLINSERT、UPDATE、DELETE

数据库最小权限策略

数据库结构初始化全量初始化增量同步
源库SELECT 权限SELECT 权限REPLICATION SLAVEREPLICATION CLIENTSELECT 权限。

ElasticSearch 普通用户

  • 索引:读写、编辑、删除权限

  • 文档:增、删、改、查权限

操作步骤

  1. 登录 DTS 控制台
  2. 在顶部菜单栏,选择项目和地域。
  3. 在左侧导航栏,单击数据同步
  4. 数据同步列表页面,单击创建任务
  1. 创建同步任务页面的配置源库及目标库配置向导页面,配置以下参数信息。
类别参数说明

任务名称

(可选)自定义同步任务名称。命名规则如下:

  • 以字母开头。

  • 长度需在 64 个字符内。

  • 只能包含字母、数字、下划线(_)和中划线(-)。

链路规格

按需选择同步任务的链路规格,当前支持 CompactStandard

说明

成功创建任务后,不支持修改任务的链路规格。关于链路规格的详细信息,请参见产品规格

同步拓扑

根据业务需要选择同步拓扑,当前仅支持单向同步

说明

双向同步当前仅支持 MySQL 5.6 及以上版本。关于同步拓扑的更多信息,请参见数据同步拓扑

源库配置

选择已有数据源

您可以按需选择是否使用已录入的实例:

  • 使用已录入实例:单击选择已有数据源,在选择数据源控制面板,从地域下拉列表中选择目标地域,然后选择目标数据源。支持通过数据源名称和 ID 选择数据源。关于数据源的创建方法,请参见数据源管理

  • 不使用已录入实例:如果不使用已录入的实例,那么您需要配置以下数据库实例信息。

实例类型选择 MySQL

接入方式

选择公网自建 MySQL

说明

在同步公网自建 MySQL 实例时,您需要提前在源端的白名单或安全组策略中,添加 DTS IP 段的访问权限。单击查看 DTS IP 段查看和复制 IP 段。

地域选择目标实例所属地域。
主机地址输入目标库自建实例的主机地址。
端口输入目标自建实例的端口号。
数据库账号输入目标实例的数据库账号。
数据库密码输入目标实例数据库账号对应的密码。

连接方式

按需选择非加密连接SSL 安全连接,建立更加安全可靠的同步链路。

说明

  • 当选择 SSL 安全连接时,您需提前开通公网自建 MySQL 实例的 SSL 加密功能。

  • 当同步任务选择非加密连接且任务正常运行时,开通了公网自建 MySQL 实例的 SSL 加密功能可能会导致非加密任务失败。

SSL 加密证书单击上传 SSL 加密证书上传 CA 证书。当连接方式选择了 SSL 安全连接时,支持该配置。

测试链接

单击测试链接,验证是否成功连接实例。
当测试连接失败时,根据失败提示信息修改相关配置后,再次单击测试连接,验证是否可以成功连接实例。具体提示信息如下:

  • 连接认证失败,请检查网络是否正常:当出现该报错提示时,请确认网络的连通性。

  • 连接认证失败,请检查用户名和密码是否正确:当出现该报错提示时,您需要确认用户名和密码的准确性。

  • 无效的 IP 地址:当出现该报错提示时,请确认 IP 地址的正确性。

目标库配置

选择已有数据源

您可以按需选择是否使用已录入的实例:

  • 使用已录入实例:单击选择已有数据源,在选择数据源控制面板,从地域下拉列表中选择目标地域,然后选择目标数据源。支持通过数据源名称和 ID 选择数据源。关于数据源的创建方法,请参见数据源管理

  • 不使用已录入实例:如果不使用已录入的实例,那么您需要配置以下数据库实例信息。

实例类型

选择 ElasticSearch

接入方式选择公网自建 ElasticSearch
地址输入目标库自建实例的主机地址。
数据库账号输入目标实例的数据库账号。
数据库密码输入目标实例数据库账号对应的密码。

测试链接

单击测试链接,验证是否成功连接实例。

说明

当测试连接失败时,根据失败提示信息修改相关配置后,再次单击测试连接,验证是否可以成功连接实例。

项目

(可选)从下拉列表中选择该任务所属项目,默认在 default(默认项目) 下。您也可以单击创建新项目,创建新的项目。详细操作,请参见新建项目

说明

  • 关于如何授予子用户访问指定项目下资源的权限操作步骤,请参见修改项目权限

  • 成功创建任务后,如果需要修改实例的所属项目,例如将任务从当前项目移入至其他项目,您可以将资源移入指定项目。详细操作,请参见资源移入项目

  • 项目是一个虚拟的概念,包括一组资源、用户和角色。通过项目可以对一组资源进行统一的查看和管理,并且控制项目内用户和角色对这些资源的权限。

标签

(可选)单击添加标签,为实例添加标签,标签可帮您实现云资源的分类、云资源的访问控制、账单与成本分摊等。标签由一个键值对(Key-Value)组成,用于标识云资源,可以帮助您从不同维度(例如用途、所有者等)对具有相同特征的云资源进行分类,便于筛选和聚合,从而轻松管理云上资源。关于标签的详细信息,请参见标签概述。标签的键值对规则如下:

    • 支持任何语言、文字、数字、空格或符号(_.:/=+-@)。

    • 大小写敏感,且长度在 1~128 个字符内。

    • 使用 UTF-8 编码的 Unicode 格式。

    • 不支持设置以 volc: 开头的任何形式的 Key,例如 Volc:VOLC: 等。

  • (可选)值

    • 支持任何语言、文字、数字、空格或符号(_.:/=+-@)。

    • 大小写敏感,且长度在 0~256 个字符内。

    • 使用 UTF-8 编码的 Unicode 格式。

说明

  • 单次最多可给任务绑定 20 个标签。单个任务最多可绑定 50 个标签。

  • 同一个资源拥有的标签 Key 不可重复,且一个标签 Key 只有一个值 Value。

计费方式

按需选择计费方式,当前支持按量计费包年包月两种计费方式。

说明

关于计费的详细信息,请参见计费说明

购买时长

按需选择包年包月的购买时长。

说明

在计费方式选择包年包月时,支持设置购买时长。

  1. 单击下一步:配置同步对象

  2. 配置同步对象配置向导页面,配置相关参数信息,如下表所示。

    说明

    • 若暂时不需要启动同步任务,您可以在完成同步对象配置后,单击页面右下角的保存

    • 保存后会跳转回同步任务列表页,此时任务状态为待启动,您可以在合适的时候再配置同步任务。配置方法,请参见配置同步任务

    参数说明

    同步类型

    按需选择同步类型,当前支持结构初始化全量初始化步增量同步

    说明

    • 默认勾选增量同步

    • 在勾选结构初始化全量初始化时,预检查完成后,数据库传输服务 DTS 会将源实例中待同步对象的数据在目标实例中初始化,作为后续增量同步数据的基础。

    索引拼接规则

    按需选择索引的拼接规则,支持表名库名+表名选项:

    • 表名:当您选择表名后,在目标 ElasticSearch 实例中创建的索引名和表名相同。

    • 库名+表名:当您选择库名+表名后,在目标 ElasticSearch 实例中创建的索引名为库名+表名。

    说明

    成功创建同步任务后,再修改索引拼接规则会重置同步对象的命名,须谨慎操作。

    主键冲突处理

    选择当目标库已存在同主键值的行时的处理方法,当前仅支持选择冲突覆盖,即使用源库数据覆盖目标库数据,同步任务可正常启动。

    同步起始点

    设置从某个指定位点或时间点拉取 Binlog 日志,取值如下:

    • 系统默认:默认为当前时间点。

    • 指定 GTID:在输入框内输入指定的 GTID,格式为 source_id:transaction_id

    • 指定 GTID_EXECUTED:在输入框内输入指定的 GTID_EXECUTED,格式为 source_id:transaction_id,当存在多个时,可使用英文逗号(,)隔开。关于如何获取实例的 GTID_EXECUTED,请参见如何获取实例的 GTID_EXECUTED

    • 指定时间戳:单击输入框,选择日期,单击选择时间设置时间点,然后单击确定

    说明

    • 同步类型勾选了全量初始化时,不支持此步骤。

    • 同步类型同时勾选了全量初始化增量同步时,同步起始点默认为当前时间点且不支持修改。

    • GTID、GTID_EXECUTED 必须是源端合法的值,否则预检查时会报错。

    • 当选择指定时间戳时,您设置的时间必须要晚于源端 Binlog 的最早时间。当没有对应时间 Binlog 时,则选取最接近 Binlog 的起点。

    同步类型选择选择需要同步的操作类型,当前仅支持同步 DML 语句,即支持同步 DELETEInsertUpdate,默认勾选全部 DML 操作语句,可按需调整。
    是否开启外键检查按需选择是否开启外键检查,开启外键检查后,支持同步源库的外键级联更新、删除等操作,从而保证数据同步的完整性和一致性。

    同步对象

    选择需要同步的对象,如表格、视图、函数或存储过程等。同时,您可以在已选择对象区域中实现以下操作:

    • 重命名库或表:单击目标库、表和视图后的笔状图标,重命名库、表和视图,支持通过普通搜索全局搜索方式查询目标对象。如果在同步对象区域勾选了整库,则在已选择对象区域仅支持修改库名,且不支持展开该数据库。
    • 筛选删除不需要的目标:在已选择对象区域的搜索框内支持模糊搜索,批量删除不需要的数据库、表等目标。
    • 过滤表内数据:勾选过滤数据,可以实现对表内数据的过滤。

    说明

    同步对象已选择对象区域支持通过正则表达式搜索目标对象。

    过滤条件

    (可选)在开启过滤条件时,可以在全量数据扫描阶段即开始过滤数据,进而提高同步性能,您可以在目标库、表或视图的过滤条件列,单击笔状图标,设置过滤条件,然后单击校验语句,验证是否满足过滤条件。

    说明

    • 该功能当前属于邀测阶段,如需使用,请提交工单联系技术支持。

    • 同步对象的库、表或视图勾选了过滤数据,才支持配置此字段。

    • 过滤条件当前支持=!=<><=>=inis nullandor操作符。

    库表字段配置

    配置库表字段相关信息,可以将文档自定义路由至 ElasticSearch 实例的分片中:

    • 是否_routing。确定是否需要自定义路由模式:

      • :您可以将文档自定义路由至 ElasticSearch 的分片中。

      • :只能将文档通过 _id 路由至 ElasticSearch 的分片中。

    • _routing 列:自定义将文档索引至 ElasticSearch 分片内。默认为 _id

    • _id 取值:自定义构建文档 _id 值。当选择多个字段组成 _id 时,需使用下划线(_)连接。

    说明

    您也可以批量为多个数据库设置是否 _routing。

    高级配置

    开启 ETL 配置

    选择是否开启 ETL 功能。关于 ETL 的详细信息,请参见 ETL 简介

    • :表示开启 ETL 功能。
      在开启 ETL 功能后,您可以参考 DSL 语法配置数据处理 ETL 规则,在 Code goes here... 输入框内输入数据处理 ETL 规则即 DSL 脚本,单击校验语法,验证数据处理语句是否正确。您也可以单击调试配置测试您创建的 ETL 规则的效果,具体调试方式,请参见通过 ETL Playground 工具校验 ETL 规则
    • :表示不开启 ETL 功能。
    错误重试时间在同步任务中,当源库和目标库断连后导致同步任务失败时,会立即在指定时间内多次重试连接源库和目标库。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。
  1. 单击预检查

  2. (可选)当创建的任务已有预检查时,您可以根据以下提示确认是否重新发起预检查,当需要重新发起预检查时,请在是否重新发起预检查对话框,单击确定

    • 若源端和目标端的数据库实例未做修改,则无需再次发起预检查。

    • 如果修改了源端、目标端的数据库实例信息或同步任务的参数配置,那么建议您重新发起预检查,否则可能会导致任务启动失败或者任务中断。

  3. 预检查配置向导页面,根据检查结果执行以下操作:

    • 单击预检查结果操作列的详情,查看详细的告警和失败信息,并根据告警或失败信息修改库表后,单击重试

    • 单击操作列的忽略,忽略本次告警继续启动同步任务。同时,也可以单击忽略全部,一键忽略全部告警信息。

    说明

  4. 预检查页面右下角,单击确认订单

  5. 根据创建任务的计费类型,选择配置方式:

    • 按量付费
      确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务

    • 包年包月

      1. 确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务

      2. 确认订单信息配置向导页面,确认任务的计费信息。

      3. (可选)单击代金券兑换,在代金券兑换对话框,输入代金券兑换码后单击兑换

      4. (可选)在代金券区域,按需勾选可用代金券,单次仅支持选中一张,即可抵扣部分费用。也可不使用代金券。

      5. 单击下一步

      说明

      支付完成配置向导页面,显示支付成功则任务创建成功。

成功创建数据同步任务后,您可以返回 DTS 控制台,在数据同步任务列表查看数据同步任务的信息。

相关 API

API描述
CreateTransmissionTask调用 CreateTransmissionTask 接口创建数据库传输服务任务。
ModifyTransmissionTask调用 ModifyTransmissionTask 接口修改传输任务。