本场景介绍如何在数据库传输服务 DTS 创建火山引擎版 MySQL 迁移至火山引擎版 veDB MySQL 任务。
已创建云数据库 MySQL 版实例和数据库。详细信息,请参见创建 RDS MySQL 实例和创建数据库。
已创建云数据库 veDB MySQL 版实例和数据库。详细信息,请参见创建 veDB MySQL 实例和创建数据库。
当源库、目标库部署在火山引擎的 ECS 中通过私网连接,且开启了访问限制时,您需要在 ECS 的安全组规则中添加 DTS 服务器的 IP 地址。
创建数据迁移任务之前,请确认源库和目标库的网络连通性与服务可用性。
您还可以根据预检查项中的说明,来检查源库和目标库中各迁移对象做相应准备。更多详情,请参见预检查项(MySQL)。
当目标库使用的是高权限账号时,数据库传输服务 DTS 会自动在目标端中创建数据库。如果待迁移的数据库名称不符合目标数据库的定义规范,您需要在迁移任务前在目标端中创建数据库。
当未勾选增量迁移时,数据迁移期间请勿在源库实例中写入新的数据,以确保数据的一致性。
在进行用户迁移,出现源数据库部分账号不支持迁移时,需先确保业务不受这些账号的缺失而影响运行。
迁移对象非整库时,不支持 OnlineDDL 操作,且增量迁移不支持自动迁移新增的对象及其相关变更。
迁移对象选择的粒度为库或表。若迁移对象选择的是表,则其他对象例如视图、触发器、函数或存储过程等,不会被迁移至目标库。
为保证数据迁移的性能和迁移任务的稳定性,源端的 TRIGGER 和 EVENT 会在增量迁移结束后才进行迁移。
在预检查时,如果选择忽略告警并启动迁移任务,可能会导致数据不一致,带来业务风险。关于预检查的具体说明,请参见预检查项(MySQL)。
在数据迁移的过程中,若遇到目标库中已存在同主键值或唯一键的情况,DTS 不会保留目标端中冲突的数据,即源端的数据将会覆盖掉目标端的数据。当数据进行冲突覆盖时,如果目标库中存在同名表,可能会导致数据不一致等问题,具体如下所示。建议您通过表名映射的方式、删除或重命名目标库中同名表的方式避免数据不一致等问题降低业务风险。
表结构一致时:迁移的数据将覆盖目标表中与源库主键或唯一键的值相同的记录。
表结构不一致时:可能会导致无法初始化数据,只能迁移部分列数据。
当您想通过专线实现数据迁移时,您可以提交工单联系技术人员。
类型 | 说明 |
---|---|
源库限制 |
|
目标库限制 |
|
其他限制 |
|
在链路创建、库表结构迁移和全量迁移过程,请勿执行库或表结构变更的 DDL 操作否则迁移任务会失败。
当只执行全量迁移时,请勿向源实例写入新的数据,否则会导致源数据库和目标数据库信息不一致。为实时保障数据的一致性,建议您选择结构迁移、全量迁移和增量迁移。
由于使用 gh-ost 或 pt-online-schema-change 等在线 DDL 工具执行 DDL 操作时会生成临时表,在数据迁移过程中,需要注意以下几点:
增量迁移支持的 SQL 操作如下表所示。
操作类型 | SQL 操作语句 |
---|---|
DML | INSERT、UPDATE、DELETE |
DDL |
|
数据库 | 结构迁移 | 全量迁移 | 增量迁移 |
---|---|---|---|
源库 |
|
|
|
目标库 | 读写权限 | 读写权限 | 读写权限 |
登录 DTS 控制台。
在顶部菜单栏,选择项目和地域。
在左侧导航栏,单击数据迁移。
在迁移任务列表页面,单击创建任务。
在创建迁移任务页面的配置源库及目标库配置向导页面,配置以下参数信息。
类别 | 参数 | 说明 |
---|---|---|
无 | 任务名称 | (可选)自定义迁移任务名称。命名规则如下:
|
链路规格 | 按需选择迁移任务的链路规格,当前支持 Compact 和 Standard。 说明 成功创建任务后,不支持修改任务的链路规格。关于链路规格的详细信息,请参见产品规格。 | |
源库配置 | 选择已有数据源 | 您可以按需选择是否使用已录入的实例:
|
实例类型 | 选择 MySQL。 | |
接入方式 | 选择火山引擎版 veDB MySQL。 | |
地域 | 选择目标实例所属地域。 | |
是否跨火山引擎账号 | 按需选择是否跨账号传输数据,取值如下:
| |
跨账号 ID | 输入源库所属的火山引擎账号 ID。 | |
跨账号角色 | 输入已授权 DTS 访问跨账号资源的 IAM 角色。 | |
MySQL 实例 | 在下拉列表中选择火山引擎版 veDB MySQL 的目标实例。 说明 下拉列表中仅展示前 10 个实例。您也可以通过实例 ID 或名称搜索目标实例。 | |
数据库账号 | 输入目标实例的数据库账号。 | |
数据库密码 | 输入目标实例数据库账号对应的密码。 | |
测试链接 | 单击测试链接,验证是否成功连接实例。
| |
目标库配置 | 选择已有数据源 | 您可以按需选择是否使用已录入的实例:
|
实例类型 | 选择 MySQL。 | |
接入方式 | 选择火山引擎版 veDB MySQL。 | |
地域 | 选择目标实例所属地域。 | |
MySQL 实例 | 在下拉列表中选择火山引擎版 veDB MySQL 的目标实例。 说明 下拉列表中仅展示前 10 个实例。您也可以通过实例 ID 或名称搜索目标实例。 | |
数据库账号 | 输入目标实例的数据库账号。 | |
数据库密码 | 输入目标实例数据库账号对应的密码。 | |
测试链接 | 单击测试链接,验证是否成功连接实例。
| |
无 | 项目 | (可选)从下拉列表中选择该任务所属项目,默认在 default(默认项目) 下。您也可以单击创建新项目,创建新的项目。详细操作,请参见新建项目。 |
标签 | (可选)单击添加标签,为实例添加标签,标签可帮您实现云资源的分类、云资源的访问控制、账单与成本分摊等。标签由一个键值对(Key-Value)组成,用于标识云资源,可以帮助您从不同维度(例如用途、所有者等)对具有相同特征的云资源进行分类,便于筛选和聚合,从而轻松管理云上资源。关于标签的详细信息,请参见标签概述。标签的键值对规则如下:
说明
| |
计费方式 | 当前仅支持按量计费,您无需选择。 说明 关于计费的详细信息,请参见计费说明。 |
单击下一步:配置迁移对象。
在配置迁移对象配置向导页面,配置相关参数信息,如下表所示。
说明
若暂时不需要启动迁移任务,您可以在完成迁移对象配置后,单击页面右下角的保存。
保存后会跳转回迁移任务列表页,此时任务状态为待启动,您可以在合适的时候再配置迁移任务。配置方法,请参见配置迁移任务。
参数 | 说明 |
---|---|
迁移类型 | 按需选择迁移类型,当前支持用户迁移、结构迁移、全量迁移和增量迁移。其中:
说明
|
迁移用户 | 按需勾选目标账号,在目标账号的新密码(选填) 列设置新密码。当需迁移多个用户时,可单击批量修改密码,统一修改需要迁移的账号密码,若不修改则目标库账号密码和源库密码一致。 说明 当迁移类型选择用户迁移时,支持此配置。 |
迁移起始点 | 设置从某个指定位点或时间点拉取 Binlog 日志,取值如下:
说明
|
是否开启外键检查 | 按需选择是否开启外键检查,开启外键检查后,支持迁移源库的外键级联更新、删除等操作,从而保证数据迁移的完整性和一致性。 |
迁移对象 | 在迁移对象区域中勾选需要迁移的对象。同时,您可以在已选择对象区域中实现以下操作:
说明
|
过滤条件 | (可选)在开启过滤条件时,可以在全量数据扫描阶段即开始过滤数据,进而提高迁移性能,您可以在目标库、表或视图的过滤条件列,单击笔状图标,设置过滤条件,然后单击校验语句,验证是否满足过滤条件。 说明
|
错误重试时间 | 在迁移任务中,当源库和目标库断连后导致迁移任务失败时,会立即在指定时间内多次重试连接源库和目标库。取值范围:600~86400,单位:秒(s)。默认值为 600 秒。 |
全量迁移速率 | 按需设置全量迁移速率。防止在迁移速率过高时,影响源库的性能,您可以根据源库和目标库的读写压力情况适当调整以下参数:
说明
|
单击预检查。
(可选)当创建的任务已有预检查时,您可以根据以下提示确认是否重新发起预检查,当需要重新发起预检查时,请在是否重新发起预检查对话框,单击确定。
若源端和目标端的数据库实例未做修改,则无需再次发起预检查。
如果修改了源端、目标端的数据库实例信息或迁移任务的参数配置,那么建议您重新发起预检查,否则可能会导致任务启动失败或者任务中断。
在预检查配置向导页面,根据检查结果执行以下操作:
单击预检查结果操作列的详情,查看详细的告警和失败信息,并根据告警或失败信息修改库表后,单击重试。
单击操作列的忽略,忽略本次告警继续启动迁移任务。同时,也可以单击忽略全部,一键忽略全部告警信息。
说明
选择忽略告警并启动迁移任务,可能导致数据不一致,带来业务风险。
关于预检查的具体说明,请参见预检查项。
在预检查页面右下角,单击确认订单。
在确认订单配置向导页面,再次确认配置信息。阅读《数据库产品和服务条款》并勾选我已阅读并同意《数据库产品和服务条款》,然后单击创建并启动任务。
成功创建数据迁移任务后,您可以返回数据库传输服务 DTS 控制台,在数据迁移任务列表查看数据迁移任务的信息。更多信息,请参见查看迁移任务。
API | 描述 |
---|---|
CreateTransmissionTask | 调用 CreateTransmissionTask 接口创建数据库传输服务任务。 |
ModifyTransmissionTask | 调用 ModifyTransmissionTask 接口修改传输任务。 |