You need to enable JavaScript to run this app.
导航
创建火山引擎版 MySQL数据订阅任务
最近更新时间:2024.09.26 14:55:58首次发布时间:2022.09.01 09:54:13

本场景介绍如何通过数据库传输服务 DTS 创建火山引擎版 MySQL 数据订阅任务。

前提条件

  • 已创建 RDS MySQL 实例和数据库。详细信息,请参见创建 RDS MySQL 实例创建数据库

  • 如果通过专有网络 Kafka 的方式消费数据,则按需设置消费端信息,具体如下所示:

    • 在使用 VPN 实现数据订阅时,自建数据库所属的本地网络已通过 VPN 网关接入火山引擎。详细操作,请参见搭建云上 VPC 与云下多数据中心网络互通

    • 在需要使用专线实现数据订阅时,您需要搭建云上单私有网络和云下单数据中心网络连通的专线连接。详细操作,请参见配置专线连接

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

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

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

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

订阅前准备

  • 白名单与访问权限:当数据库实例的接入方式选择的是专有网络时,且数据库实例开启了访问限制,那么在创建数据库传输任务前,您需要将子网网段添加至数据库实例的白名单或安全组中。华南1(广州)子网网段是 172.31.0.0/20,华北2(上海)和华北2(北京)子网网段是 192.168.3.0/24,亚太东南(柔佛)子网网段是 192.168.0.0/24。更多信息,请参见添加 DTS 服务器的 IP 地址段

  • 网络连通性:创建数据订阅任务之前,请确认源库和消费端的网络连通性与服务可用性。

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

限制说明

限制类说明

源数据库限制

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

    说明

    在源库的实例版本大于等于 5.6 时,需设置参数 gtid_modeON

  • 当实例类型选择的是 MySQL 且接入方式为公网自建 MySQL(例如源库是第三方云服务的实例)时,您至少需要保留 24 小时的日志(例如 Binlog 日志),建议保留 7 天以上的日志信息,否则 DTS 可能因无法获取日志从而导致任务失败,某些情况下也可能会导致数据丢失。

消费端限制

  • 当消息订阅到内置中间件时,具有以下限制条件:

    • 当订阅的单行消息超过 10MB 时,消息会被丢弃。
  • 当消息订阅到 Kafka 时,具有以下限制条件:

    • 成功创建订阅任务后,不支持修改 Kafka Partition 的接收策略。

    • 如果消费端为专有网络 Kafka 或消息队列 Kafka 版时,创建订阅任务后,请勿修改分区 Partition 的数量。

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

  • 在消息订阅到 RocketMQ 时,具有以下限制条件:

    • 成功创建订阅任务后,不支持修改 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. 配置源库页面,配置以下参数信息。

    类别参数说明

    基本信息

    任务名称

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

    • 以字母开头。

    • 长度需在 64 个字符内。

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

    链路规格

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

    说明

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

    基本配置

    选择已有数据源

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

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

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

    实例类型选择 MySQL
    接入方式选择火山引擎版 MySQL

    是否跨火山引擎账号

    按需选择是否跨账号传输数据,取值如下:

    • 本账号:选择本账号时,表示仅在本账号内实现数据传输。

    • 跨账号:选择跨账号时,表示将实现两个账号间的数据传输。

    说明

    • 在进行跨账号传输数据时,您需要通过目标端所在的账号登录数据库传输服务 DTS 控制台。

    • 跨账号进行数据传输前,您需要在源端的主账号内创建 IAM 角色并授权。详细操作,请参见如何授权用户实现跨账号传输数据

    跨账号ID

    输入源库所属的火山引擎账号 ID。

    说明

    在选择跨火山引擎账号进行数据传输时,需配置该参数。

    跨账号角色

    输入已授权 DTS 访问跨账号资源的 IAM 角色。

    说明

    在选择跨火山引擎账号进行数据传输时,需配置该参数。

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

    节点类型

    按需选择节点类型,当前支持选择主节点只读节点

    说明

    当实例内创建了只读节点时,支持选择只读节点。关于创建只读节点的详细操作,请参见只读节点概述

    MySQL 只读节点

    从下拉列表中选择目标只读节点。

    说明

    在实例中创建了只读节点,且节点类型选择只读节点时,支持配置此参数。

    数据库账号输入数据库账号信息。
    数据库密码输入数据库密码。

    测试连接

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

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

    • 连接认证失败,无法正常创建连接, 请联系客服:当出现该报错提示时,请提交工单联系技术人员。

    中间件配置

    选择已有数据源

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

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

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

    订阅内置中间件私有网络从下拉列表中选择目标私有网络。

    子网

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

    说明

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

    客户自有中间件

    消息队列 Kafka

    Kafka 实例

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

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

    Kafka 用户

    输入 Kafka 用户名。

    说明

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

    密码输入 Kafka 用户密码。

    专有网络 Kafka

    Broker

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

    Topic输入目标 Topic 信息。

    私有网络

    从下拉列表中选择目标私有网络,具体如下所示:

    • 专线连接:通过专线 CEN 实现数据连通时,选择 CEN 下所属的任意私有网络。

    • VPN 连接:通过 VPN 实现数据连通时,选择 VPN 网关绑定的私有网络。

    子网

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

    说明

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

    Kafka 用户

    输入 Kafka 用户名。

    说明

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

    密码输入 Kafka 用户密码。
    消息队列 RocketMQ 版RocketMQ 实例从下拉列表中选择目标实例。
    Topic从下拉列表中选择目标 Topic 信息。
    AccessKey ID输入密钥的 AccessKey ID。关于密钥的详细信息,请参见管理密钥
    AccessKey Secret输入密钥的 AccessKey Secret。
    云原生消息引擎BMQ 实例从下拉列表中选择目标实例。
    Topic从下拉列表中选择目标 Topic 信息。
    BMQ 用户输入云原生消息引擎 BMQ 用户名。
    数据库密码输入云原生消息引擎 BMQ 用户密码。

    测试连接

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

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

      • 当您将消息订阅到专有网络 Kafka 或消息队列 Kafka 版,出现该报错提示时,您需要确认用户名和密码的准确性。

      • 当您将消息订阅到消息队列 RocketMQ 版,出现该报错提示时,您需要确认 AccessKey ID 和 AccessKey Secret 的准确性。

    • 连接认证失败,无法正常创建连接,请联系客服:当出现该报错提示时,请提交工单联系技术人员。

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

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

    • 专有网络需要子网有 * 个可用 IP,当前私有网络内子网可用 IP 数不足,无法创建任务,请检查私有网络内子网资源:当您将消息订阅到专有网络 Kafka 时,才会出现该报错提示。当出现该报错提示时,您需要调整私有网络子网内可用的 IP 数量,以保证目标私有网络内子网内有足够的 IP。

    Project 与计费

    项目

    (可选)从下拉列表中选择该任务所属项目,默认在 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 功能。
    2. 请根据需要选择是否对过滤 OnlineDDL 产生的 DML 进行快速配置。如需配置,请单击快速配置 OnlineDDL 产生的 DML
      1. 在 OnlinDDL 工具为 gh-ost 时,过滤临时表_表名_ghc_表名_gho_表名_del 到目标库。

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

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

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

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

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

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

    说明

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

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

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

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

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

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

    • 包年包月

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

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

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

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

      5. 单击下一步

      说明

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

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

后续操作

  1. 新建消费组

  2. 消费订阅数据

相关 API

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