You need to enable JavaScript to run this app.
导航
创建公网自建 MySQL数据订阅任务
最近更新时间:2024.06.12 16:35:26首次发布时间:2022.09.01 09:56:03

本场景介绍如何通过数据库传输服务 DTS 创建公网自建 MySQL 数据订阅任务。

前提条件

  • 已注册火山引擎账号并完成实名认证。关于账号的创建方法和实名认证,请参见如何进行账号注册实名认证

  • 已自主搭建 MySQL 数据库,且此数据库可通过公网访问。

  • 如果通过火山引擎 ECS 自建 Kafka 的方式消费数据,则需要在 ECS 上完成自建 Kafka 的部署。如果通过消息队列 Kafka 版消费数据,则需要提前创建 Kafka 实例和 Topic。详细信息,请参见创建 Kafka 实例创建 Topic

  • 当通过消息队列 RocketMQ 版消费数据时,需提前创建 RocketMQ 实例和密钥。详细信息,请参见创建 RocketMQ 实例创建密钥

  • 在通过云原生消息引擎消费数据时,需提前准备以下环境:

    • 创建云原生消息引擎实例和 Topic。详细操作,请参见创建资源池创建 Topic

    • 开启数据库传输服务 DTS 访问云原生消息引擎目标实例的访问权限。详细操作,请参见开启 DTS 连接

订阅前准备

  • 白名单与访问权限:

    • 源端的数据库实例的接入方式选择的是公网自建时,且数据库实例开启了访问限制,那么在创建数据库传输任务前,您需要将 DTS 服务器 IP 地址添加至数据库实例的白名单或安全组中。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)。关于 DTS 服务器 IP 地址段的详细信息,请参见添加 DTS 服务器的 IP 地址段
    • 目标端的实例的接入方式选择的是火山引擎 ECS 自建时,且实例开启了访问限制,那么在创建数据库传输任务前,您需要将 DTS 服务器 IP 地址(100.64.0.0/10)添加至实例的白名单或安全组中。关于 DTS 服务器 IP 地址段的详细信息,请参见添加 DTS 服务器的 IP 地址段
  • 网络连通性:创建数据订阅任务之前,请确认源库和消费端的网络连通性与服务可用性。

  • 您还可以根据预检查项中的说明,来检查源库和目标库中各迁移对象做相应准备。更多详情,请参见预检查项(MySQL)

限制说明

限制类说明

源数据库限制

  • 数据库版本:当前支持 5.5、5.6、5.7 和 8.0 版本的 MySQL 实例。
  • 在源库的实例版本大于等于 5.6 时,需设置参数 gtid_modeON
  • 当实例类型选择的是 MySQL接入方式公网自建 MySQL(例如源库是第三方云服务的实例)时,您需要保留至少 24 小时的日志(例如 Binlog 日志),建议保留 7 天以上的日志信息,否则 DTS 可能因无法获取日志从而导致任务失败,某些情况下也可能会导致数据丢失。

消费端限制

  • 当消息订阅到内置中间件时,具有以下限制条件:
    • 当订阅的单行消息超过 10MB 时,消息会被丢弃。
  • 当消息订阅到 Kafka 时,具有以下限制条件:
    • 成功创建订阅任务后,不支持修改 Kafka Partition 的接收策略。

    • 如果消费端为火山引擎 ECS 自建 Kafka 或消息队列 Kafka 版时,创建订阅任务后,请勿修改分区 Partition 的数量。

    • 仅支持 SASL 认证且认证机制为 PLAIN,此处应指定为 PLAIN 机制的用户名。关于如何创建 PLAIN 机制的 SASL 用户,请参见创建 SASL 用户

  • 在消息订阅到 RocketMQ 时,具有以下限制条件:
    • 成功创建订阅任务后,不支持修改 RocketMQ 队列的接收策略。
    • 如果消费端为消息队列 RocketMQ 版时,创建订阅任务后,请勿修改分区队列的数量。
    • RocketMQ 不支持事务消息和延迟消息两种消息类型。
  • 在消息订阅到云原生消息引擎 BMQ 时,具有以下限制条件:
    • 成功创建订阅任务后,不支持修改云原生消息引擎 Partition 的接收策略。
    • 如果消费端为云原生消息引擎时,创建订阅任务后,请勿修改分区 Partition 的数量。

其他限制

  • 成功创建数据订阅任务后,不支持更改链路规格类型。关于链路规格的详细信息,请参见产品规格

  • 订阅数据投递选择客户自有中间件,且接入方式选择消息队列 RocketMQ 版时,不支持同时勾选增量订阅全量订阅

  • 订阅数据投递选择内置中间件时,支持选择增量订阅

  • 如果将消息订阅到客户自有中间件(除云原生消息引擎外),在数据订阅过程中,请勿修改自有中间件实例的参数配置,否则任务将订阅失败。

  • Avro 格式订阅格式当前属于邀测阶段,如需使用请提交工单联系技术支持。

  • 将消息订阅到云原生消息引擎或消息队列 RocketMQ 版消费数据当前处于邀测阶段,如需使用,请提交工单联系技术支持。

支持的 SQL 语句

增量订阅支持的 SQL 操作如下表所示。

操作类型SQL 操作语句
DMLINSERT、UPDATE、DELETE
DDLALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE

操作步骤

  1. 登录 DTS 控制台

  2. 在顶部菜单栏的左上角,选择项目和地域。

  3. 在左侧导航栏,单击数据订阅

  4. 数据订阅列表页面,单击创建订阅

  5. 配置源库页面,配置以下参数信息。

    1. 配置数据订阅任务名称和链路规格,如下表所示。

      参数说明

      任务名称

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

      • 以字母开头。

      • 长度需在 64 个字符内。

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

      链路规格

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

      说明

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

    2. 配置数据订阅基本配置信息,如下表所示。

      参数说明
      实例类型选择 MySQL

      接入方式

      选择公网自建 MySQL

      说明

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

      主机地址输入源自建实例的主机地址。
      端口输入源自建实例的端口号。
      数据库账号输入源自建实例的数据库账号信息。
      数据库密码输入源自建实例的数据库密码。

      连接方式

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

      注意

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

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

      SSL加密证书单击上传 SSL 加密证书上传 CA 证书。当连接方式选择了 SSL 安全连接时,支持该配置。
    3. 单击测试连接,验证是否可以成功连接实例。
      当测试连接失败时,根据失败提示信息修改相关配置后,再次单击测试连接,验证是否可以成功连接源库。具体提示信息如下:

    • 连接认证失败,请检查网络是否正常:当出现该报错提示时,请确认网络的连通性。
    • 连接认证失败,请检查用户名和密码是否正确:当出现该报错提示时,您需要确认输入的用户名和密码无误。
    • 无效的 IP 地址:当出现该报错提示时,请确认 IP 地址的正确性。
    1. 数据订阅投递信息
      根据实际情况,按需选择数据订阅投递类型:

      • 内置中间件
        订阅数据投递设置为订阅内置中间件时,需填写以下配置。

        参数描述
        私有网络从下拉列表中选择目标私有网络。

        子网

        从下拉列表中选择目标私有网络内的子网。

        说明

        目标私有网络内的子网至少要包含 1 个可用 IP。

      • 自有中间件
        订阅数据投递设置为客户自有中间件时,需填写以下配置。

      说明

      在订阅火山引擎 ECS 自建 Kafka时,您需要提前在源端的白名单或安全组策略中,添加 DTS IP 段的访问权限。单击查看 DTS IP 段查看和复制 IP 段。

      接入方式参数说明

      火山引擎 ECS 自建 Kafka

      Broker

      输入所有 Broker 的 IP 地址及端口号,格式为 host1:port1,例如 10.1.1.1:9093。当存在多个 Broker 时,需使用英文逗号(,)隔开。

      Topic输入目标 Topic 信息。
      VPC从下拉列表中选择目标 VPC。

      Kafka 用户

      输入 Kafka 用户名。

      说明

      仅支持 SASL 认证且认证机制为 PLAIN,此处应指定为 PLAIN 机制的用户名。

      密码输入 Kafka 用户密码。

      消息队列 Kafka

      Kafka 实例

      从下拉列表中选择目标实例。

      Topic从下拉列表中选择目标 Topic 信息。

      Kafka 用户

      输入 Kafka 用户名。

      说明

      仅支持 SASL 认证且认证机制为 PLAIN,此处应指定为 PLAIN 机制的用户名。

      密码输入 Kafka 用户密码。

      消息队列 RocketMQ

      RocketMQ 实例

      从下拉列表中选择目标实例。

      Topic从下拉列表中选择目标 Topic 信息。
      AccessKey ID输入密钥的 AccessKey ID。关于密钥的详细信息,请参见管理密钥
      AccessKey Secret输入密钥的 AccessKey Secret。
      云原生消息引擎BMQ 实例从下拉列表中选择目标实例。
      Topic从下拉列表中选择目标 Topic 信息。
      BMQ 用户输入云原生消息引擎 BMQ 用户名。
      数据库密码输入云原生消息引擎 BMQ 用户密码。
    2. 单击测试连接,验证是否可以成功连接实例。

    订阅数据投递选择的是客户自有中间件时,配置相关参数信息后,然后单击测试连接

    说明

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

    • 连接认证失败,请检查用户名和密码是否正确

      • 当您将消息订阅到火山引擎 ECS 自建 Kafka 或消息队列 Kafka 版,出现该报错提示时,您需要确认用户名和密码的准确性。
      • 当您将消息订阅到消息队列 RocketMQ 版,出现该报错提示时,您需要确认 AccessKey ID 和 AccessKey Secret 的准确性。
    • 连接认证失败,无法正常创建连接,请联系客服:当出现该报错提示时,请提交工单联系技术人员。

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

    • 连接认证失败,请检查网络是否正常:当您将消息订阅到火山引擎 ECS 自建 Kafka 时,才会出现该报错提示。当出现该报错提示时,请确认网络的连通性。

    1. 配置订阅任务所属项目、标签和计费方式,具体如下表所示。
      参数说明

      项目

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

      说明

      • 关于如何授予子用户访问指定项目下资源的权限操作步骤,请参见修改项目权限
      • 成功创建任务后,如果需要修改实例的所属项目,例如将任务从当前项目移入至其他项目,您可以将资源移入指定项目。详细操作,请参见资源移入项目
      • 项目是一个虚拟的概念,包括一组资源、用户和角色。通过项目可以对一组资源进行统一的查看和管理,并且控制项目内用户和角色对这些资源的权限。

      标签

      (可选)单击添加标签,设置标签键和标签值,为实例添加标签。标签的键值对规则如下:

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

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

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

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

      • (可选)值

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

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

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

      说明

      • 标签由一个键值对(Key-Value)组成,用于标识云资源,可以帮助您从不同维度(例如用途、所有者或环境等)对具有相同特征的云资源进行分类,便于筛选和聚合,从而轻松管理云上资源。关于标签的详细信息,请参见标签概述

      • 标签可帮您实现云资源的分类、云资源的访问控制、账单与成本分摊等。

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

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

      计费方式

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

      说明

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

      购买时长

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

      说明

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

  6. 单击下一步:配置订阅对象

  7. 配置订阅对象页面,配置以下参数信息。

    说明

    • 若暂时不需要启动订阅任务,您可以在完成配置订阅对象后,单击页面右下角的保存,保存订阅任务,表示成功创建订阅任务后不启动此任务。

    • 保存后该订阅任务的状态为待启动,当需要启动此任务时,在数据订阅列表页面,单击目标未启动订阅任务操作列下的配置订阅通道。具体操作,请参见步骤 5 及后续步骤。

    参数说明

    基本信息

    订阅格式

    选择数据订阅格式。订阅格式支持火山引擎 ProtoCanal ProtoCanal JSONAvro 格式。关于订阅格式的详细信息,请参见数据订阅格式

    说明

    Avro 格式订阅格式当前属于邀测阶段,如需使用请提交工单联系技术支持。

    Kafka Partition 策略

    按需选择目标 Topic 的 Partition 接收策略。支持以下接收策略:

    • 统一投递至 Partition 0

    • 按照库名和表名的联合 hash 值投递到不同 Partition

    • 按主键的 hash 值投递到不同 Partition

    注意

    • 当接入方式选择火山引擎 ECS 自建 Kafka消息队列 Kafka 时,支持配置此参数。

    • 当订阅任务正式启动后,不支持以下操作:

      • 在 DTS 控制台修改 Kafka Partition 的接收策略。

      • 在 Kafka 中修改分区 Partition 的数量。

    RocketMQ 队列策略

    按需选择目标 Topic 的队列接收策略。支持以下接收策略:

    • 按照库名和表名的联合 hash 值投递到不同队列

    • 按主键的 hash 值投递到不同队列

    注意

    • 当接入方式选择消息队列 RocketMQ 时,支持配置此参数。

    • 当订阅任务正式启动后,不支持以下操作:

      • 在 DTS 控制台修改 RocketMQ 队列的接收策略。

      • 在 RocketMQ 中修改队列的数量。

    BMQ Partition 接受策略

    按需选择目标 Topic 的 Partition 接收策略。支持以下接收策略:

    • 统一投递至 Partition 0

    • 按照库名和表名的联合 hash 值投递到不同 Partition

    • 按主键的 hash 值投递到不同 Partition

    注意

    • 当接入方式选择云原生消息引擎时,支持配置此参数。

    • 当订阅任务正式启动后,不支持以下操作:

      • 在 DTS 控制台修改云原生消息引擎 Partition 的接收策略。

      • 在云原生消息引擎中修改分区 Partition 的数量。

    订阅类型

    按需选择订阅类型,当前支持库表结构订阅增量订阅全量订阅。其中:

    • 订阅数据投递选择订阅内置中间件时,订阅类型仅支持勾选增量订阅

    • 订阅数据投递选择客户自有中间件,且接入方式选择消息队列 RocketMQ 版时,不支持同时勾选增量订阅全量订阅

    订阅起始点

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

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

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

    • 指定 GTID_EXECUTED:在输入框内输入指定的 GTID_EXECUTED,格式为 source_id:transaction_id,当存在多个时,可使用英文逗号(,)隔开。

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

    说明

    • 订阅类型勾选了增量订阅时,支持此配置。

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

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

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

    订阅范围

    按需勾选订阅范围,当前支持 InsertUpdateDelete 和 DDL。

    说明

    • 订阅类型勾选了增量订阅时,支持此配置。

    • 关于支持的操作语句,请参见支持的 SQL 操作

    订阅对象订阅对象中选择待订阅的对象。选择目标订阅对象后,您可以在右侧已选择对象框中再次确认需要订阅的对象。同时,如果在订阅对象区域勾选了整库,则在已选择对象区域不支持展开该数据库。

    高级配置

    开启 ETL 配置

    1. 选择是否开启 ETL 功能。
      • :表示开启 ETL 功能。
        • 在开启 ETL 功能后,您可以参考 DSL 语法配置数据处理规则,在 Code goes here... 输入框内输入数据处理 ETL 规则即 DSL 脚本,单击校验语法,验证数据处理语句是否正确。
        • 您也可以单击调试配置测试您创建的 ETL 规则的效果,具体调试方式,请参见通过 ETL Playground 工具校验 ETL 规则
      • :表示不开启 ETL 功能。

    说明

    ETL 功能目前处于邀测阶段,如需使用,请提交工单联系技术支持。

    1. 请根据需要选择是否对过滤 OnlineDDL 产生的 DML 进行快速配置。如需配置,请单击快速配置 OnlineDDL 产生的 DML
      1. 在 OnlinDDL 工具为 gh-ost 时,过滤临时表_表名_ghc_表名_gho_表名_del 到目标库。

      2. 在 OnlinDDL 工具为 pt-osc 时,过滤临时表_表名_new_表名_old 到目标库。

      3. 您需要确认待同步表中不存在符合临时表命令方式的表。

    错误重试时间源库或目标库断连后,若能在该时间内重新连上,订阅任务即可自动恢复。取值范围:600~86400,单位:秒(s)。默认值为 7200 秒。
  8. 单击预检查

    当预检查结果存在告警或失败时,您可以根据结果提示执行以下操作:

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

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

      说明

      • 当预检查结果失败时,请勿忽略本次告警。

      • 选择忽略告警并启动订阅任务,可能会存在某些隐患,具体信息,请参见界面提示。

      • 关于预检查的具体说明,请参见预检查项(MySQL)

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

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

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

    • 包年包月

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

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

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

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

      5. 单击下一步

      说明

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

成功创建数据订阅任务后,您可以在数据库传输服务 DTS 控制台的订阅任务列表查看到数据订阅任务。

后续操作

  1. 新建消费组
  2. 消费订阅数据

相关 API

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