You need to enable JavaScript to run this app.
导航
同步至火山引擎版 MySQL
最近更新时间:2024.12.23 14:04:24首次发布时间:2023.03.22 11:54:38

本场景介绍如何在数据库传输服务 DTS 控制台创建火山引擎版 MySQL 同步到火山引擎版 MySQL 任务。

前提条件

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

  • 创建数据同步任务之前,请确认源库和目标库的网络连通性与服务可用性。

  • 已确认源端和目标端的网络连通性与服务可用性。

  • (可选)根据预检查项中的说明,检查源端和目标端中各同步对象。更多详情,请参见预检查项(MySQL)

注意事项

  • 当目标库使用的是高权限账号时,数据库传输服务 DTS 会自动在目标库中创建数据库。如果待同步的数据库名称不符合目标数据库的定义规范,您需要在同步任务前在目标库中创建数据库。

  • 为保证数据同步的性能和同步任务的稳定性,源库的 TRIGGER 和 EVENT 会在增量同步结束后才进行同步。

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

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

  • 当数据进行冲突报错时,根据数据同步阶段的不同,目标数据库在检查到已存在同主键值或唯一键的处理方法也存在差异,具体如下所示:

    • 全量初始化阶段:数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。

    • 增量同步阶段:数据库传输服务 DTS 将进行冲突报错处理,需手动修改相关数据,否则同步任务无法启动。

  • 当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致或任务失败等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。

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

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

  • 在 DTS 同步期间,建议您不要往目标库中写入其他数据,否则可能会导致源库与目标库的数据不一致等问题。例如,有除 DTS 外的数据写入目标库时,使用 DBW 执行在线 DDL 变更,可能引起目标库数据丢失。

限制说明

应用限制

类型说明

源库限制

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

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

    说明

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

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

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

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

  • Binlog 日志的要求如下:

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

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

  • 涉及外键依赖的表,需要同时同步,否则将导致数据同步失败。

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

目标库限制

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

  • 目标数据库的同步账号权限,会影响视图、存储过程和函数的使用,具体限制如下所示:

    • 当目标数据库的同步账号具有 SET_USER_ID 权限时,视图、存储过程和函数的限制如下所示:

      • 视图、存储过程、函数会保持原来的 definersql_security

      • 需要先完成账号同步任务或手动在目标库创建对应账号后,视图、存储过程和函数才可以正常使用。

    • 当目标数据库的同步账号不具有或不支持 SET_USER_ID 权限时,视图、存储过程和函数同步后,definer 将会替换为同步账号,sql_security 会设置为 invoker

    说明

    仅 MySQL 8.0 版本支持设置 SET_USER_ID 权限。

其他限制

  • 建议源库和目标库的 MySQL 版本保持一致,或者从低版本同步到高版本,以保障兼容性。

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

  • 在同步过程中,目标数据库可能会产生大量 Binlog 文件,因此导致目标库的磁盘使用量远远大于原实例的磁盘使用量。建议您在同步或同步前,修改目标数据库 Binlog 的保存策略,避免 Binlog 文件占用过多存储空间。

  • 有库表名映射的同步任务,存储过程、函数同步后映射不一定生效。

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

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

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

  • 同步任务仅支持同步表格、视图、函数和存储过程。

  • 在创建双向同步任务时,您需要关注以下信息:

    • 在双向同步任务中,为保障同步数据的一致性,您需要确保对于同一个主键、业务主键或唯一键的记录,仅在双向同步的一个节点进行更新。如果出现同时更新的情况,则会依据您在数据同步作业中所配置的冲突修复策略进行响应。
    • 在双向同步任务中,如需进行 DDL 操作,请勿同时在正向和反向的实例中做 DDL 操作。
    • 在双向同步任务中执行 OnlineDDL 操作时,请勿修改字段类型和做结构缩减类操作(例如删除列),否则可能会导致数据不一致等问题。

操作限制

  • 在链路创建、库表结构初始化和全量初始化过程,请勿执行库或表结构变更的 DDL 操作否则同步任务会失败。
  • 在双向同步 MySQL 时,请勿同时在源端和目标端做 DDL 操作,否则可能会导致同步任务失败。
  • 由于使用 gh-ost 或 pt-online-schema-change 等在线 DDL 工具执行 DDL 操作时会生成临时表,在数据同步过程中,需要注意以下几点:
    • 当需要使用在线 DDL 工具执行 DDL 操作时,需要保证同步对象是整个数据库,否则会由于临时表无法同步导致 DDL 失败。

    • 同步期间请勿使用在线 DDL 工具执行轻量 DDL 操作例如小表增加字段等,否则可能由于 DDL 临时表存在时间过短导致 DDL 同步失败。

支持的同步架构

  • 一对一单向同步

  • 一对多单向同步

  • 多对一单向同步

  • 级联单向同步

  • 一对一双向同步

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

支持的 SQL 操作

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

DDL

  • ALTER TABLE、ALTER VIEW

  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW

  • DROP INDEX、DROP TABLE、DROP VIEW、DROP FUNCTION、DROP PROCEDURE

  • RENAME TABLE

  • TRUNCATE TABLE

数据库账号最小权限策略

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

操作步骤

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

任务名称

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

  • 以字母开头。

  • 长度需在 64 个字符内。

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

链路规格

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

说明

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

同步拓扑

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

说明

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

源库配置

选择已有数据源

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

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

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

实例类型选择 MySQL
接入方式选择火山引擎版 MySQL
地域选择目标实例所属地域。

是否跨火山引擎账号

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

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

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

    说明

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

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

跨账号 ID输入源库所属的火山引擎账号 ID。
跨账号角色输入已授权 DTS 访问跨账号资源的 IAM 角色。

MySQL 实例

在下拉列表中选择云数据库版 MySQL 的目标实例。

说明

您也可以通过实例 ID 或名称搜索目标实例。

节点类型

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

说明

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

MySQL 只读节点

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

说明

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

数据库账号输入目标实例的数据库账号。
数据库密码输入目标实例数据库账号对应的密码。

测试链接

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

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

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

目标库配置

选择已有数据源

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

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

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

实例类型选择 MySQL
接入方式选择火山引擎版 MySQL
地域选择目标实例所属地域。

MySQL 实例

在下拉列表中选择云数据库版 MySQL 的目标实例。

说明

您也可以通过实例 ID 或名称搜索目标实例。

数据库账号输入目标实例的数据库账号。
数据库密码输入目标实例数据库账号对应的密码。

测试链接

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

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

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

项目

(可选)从下拉列表中选择该任务所属项目,默认在 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 会将源实例中待同步对象的数据在目标实例中初始化,作为后续增量同步数据的基础。

    • 若需要将源库中指定的非系统账号及账号所拥有的权限同步到目标库,可以勾选用户初始化

    迁移用户

    按需勾选目标账号,在目标账号的新密码(选填) 列设置新密码。当需迁移多个用户时,可单击批量修改密码,统一修改需要迁移的账号密码,若不修改则目标库账号密码和源库密码一致。

    说明

    • 同步类型选择用户初始化时,支持此配置。
    • 数据库同步过程中,用户及权限的同步需要单独处理。如果出现源数据库部分账号不支持同步时,请先确保业务不受需同步账号的缺失而影响运行。

    冲突处理策略

    选择当目标库已存在同主键值或唯一值时的处理方法,取值如下:

    • 冲突覆盖:在任务运行时如果遇到目标库已存在的同主键或唯一值,则数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。

    • 冲突报错:在任务运行时如果遇到目标库已存在的同主键或唯一值,则任务会报错并停止运行,报错信息中会提示冲突的数据。

    • 冲突忽略:在任务运行时如果遇到目标库已存在的同主键或唯一值,则数据库传输服务 DTS 会保留目标端中冲突的数据,即源端的数据不会覆盖掉目标端的数据。

    注意

    • 冲突处理策略选择冲突报错时,根据数据同步阶段的不同,数据处理方式也存在差异,具体如下所示:
      • 全量初始化阶段:数据库传输服务 DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。
      • 增量同步阶段:数据库传输服务 DTS 将进行冲突报错处理,同时任务将停止运行,并在报错信息中提示冲突数据。
    • 当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致或任务失败等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。
      • 表结构一致时:全量同步的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。
      • 表结构不一致时:可能会导致无法初始化数据,只能同步部分列数据或同步失败。

    同步起始点

    设置从某个指定位点或时间点拉取 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 和 DDL 操作语句。具体如下所示:

    • DML:当前支持 DELETEInsertUpdate,默认勾选全部 DML 操作语句,可按需调整。

    • DDL:默认支持同步全量 DDL,即同步全部 DDL 操作语句,您也可以单击自定义 DDL,默认勾选全部 DDL 操作语句,可按需调整。若无需同步 DDL 操作语句,可单击不同步

    说明

    关于数据库传输服务 DTS 在数据同步时支持的 DDL 操作语句,请参见支持同步的 SQL

    是否开启外键检查按需选择是否开启外键检查,开启外键检查后,支持同步源库的外键级联更新、删除等操作,从而保证数据同步的完整性和一致性。

    同步对象

    选择需要同步的对象,如表格、视图、函数或存储过程等,支持通过普通搜索全局搜索方式查询目标对象。同时,您可以在已选择对象区域中实现以下操作:

    • 重命名库或表:单击目标库、表和视图后的笔状图标,重命名库、表和视图。如果在同步对象区域勾选了整库,则在已选择对象区域仅支持修改库名,且不支持展开该数据库。
    • 筛选删除不需要的目标:在已选择对象区域的搜索框内支持模糊搜索,批量删除不需要的数据库、表等目标。
    • 如果同步类型选择了结构初始化,那么在已选择对象区域,支持按需勾选目标库或表是否进行结构初始化。

    说明

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

    高级配置

    已选库表

    仅支持重新单独设置同步表的同步类型、冲突策略和数据过滤,具体如下所示:

    • 全量初始化:当同步类型勾选了全量初始化时,支持按需勾选或取消目标表的全量初始化。

    • 增量同步:同步类型默认勾选增量同步,您可以按需勾选或取消目标表的增量同步。

    • 冲突策略:按需设置目标表的冲突策略,冲突策略支持设置为冲突报错、冲突忽略或冲突覆盖。关于冲突策略的详细信息,请参见冲突处理策略的参数说明。当仅选择全量初始化时,则不支持修改冲突策略。

    • 全量数据过滤:按需在目标表的全量数据过滤列设置表的过滤策略,提高迁移性能,完成目标表的过滤设置后,单击校验语句,验证是否满足过滤条件。

      说明

      • 当同步对象按整库选择,且未展开目标库时,已选库表仅支持按库级别进行相关参数设置。

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

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

    开启 ETL 配置

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

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

    • :表示不开启 ETL 功能。

    错误重试时间在同步任务中,当源库和目标库断连后导致同步任务失败时,会立即在指定时间内多次重试连接源库和目标库。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。

    全量同步速率

    按需设置全量同步速率。防止在同步速率过高时,影响源库的性能,您可以根据源库和目标库的读写压力情况适当调整以下参数:

    • 每秒同步的行数:按需开启并设置每秒同步的行数。默认值 100000,取值范围 1~100000。

    • 每秒同步的数据量:按需开启并设置每秒同步的数据量。默认值 25000,取值范围 1~25000,单位 KB。

    • 同步任务并发数:按需设置同步任务的并发数。默认值 8,取值范围 8~64。

    说明

    • 同步类型选择全量初始化时,支持配置该参数。

    • 开启 DTS 的全增一体后,则不支持单独设置任务的同步任务并发数。关于全增一体的详细信息,请参见全增一体简介

  1. 单击预检查

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

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

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

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

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

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

    说明

    • 选择忽略告警并启动同步任务,可能导致数据不一致,带来业务风险。

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

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

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

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

    • 包年包月

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

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

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

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

      5. 单击下一步

      说明

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

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

相关 API

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