本文介绍使用 DTS 数据迁移功能从 MySQL 迁移数据至腾讯云数据库 MySQL 的操作指导。
源数据库支持的部署类型如下:
源数据库 | 目标数据库 |
IDC 自建 MySQL/CVM 自建数据库/轻量数据库 MySQL | 腾讯云数据库实例 MySQL |
腾讯云数据库实例 MySQL | 腾讯云数据库实例 MySQL |
第三方云厂商 MySQL:阿里云 RDS、阿里云 PolarDB、AWS RDS、AWS Aurora | 腾讯云数据库实例 MySQL |
业务影响
1. DTS 在执行全量数据迁移时,会将源库的全量数据全部读取一次,所以会增加源库的负载。如果您的数据库规格过低,建议您在业务低峰期进行迁移,或者在任务启动前降低 DTS 的速率。
源库的规格不同,影响也不同,以源库规格为 8 核 16G 为例,DTS 任务默认采用 8 线程并发(可调整),在网络无瓶颈的情况下,DTS 任务对源库的性能影响如下:
DTS 全量导出阶段:占用源库约 18%-45% 的 CPU,增加源库约 40-60MB/s 的查询压力,占用约 8 个活跃 session 连接数。
DTS 增量导出阶段:对源数据库基本无压力,只有一个连接实时监听源库的 binlog 日志。
2. 默认采用无锁迁移来实现,迁移过程中对源库不加全局锁(FTWRL),仅对无主键的表加表锁,其他不加锁。
3. 进行数据一致性校验时,DTS 会使用执行迁移任务的账号在源库中写入系统库
__tencentdb__
,用于记录迁移任务过程中的数据对比信息,请勿删除该系统库。为保证后续数据对比问题可定位,迁移任务结束后不会删除源库中的
__tencentdb__
。__tencentdb__
系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为50GB,则__tencentdb__
系统库约为5MB-50MB) ,并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。准备工作
1. 已准备好源和目标数据库,且源和目标数据库的版本符合要求,具体请参见 数据迁移支持的数据库 进行核对。
2. 请根据您需要使用的接入类型,打通 DTS 与数据库之间的访问通道,具体请参考 网络准备工作。
3. 在源数据库中对执行任务账号进行授权,参考如下:
“整个实例”迁移:
CREATE USER '迁移账号'@'%' IDENTIFIED BY '迁移密码';GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS ON *.* TO '迁移账号'@'%';//源库为阿里云数据库时,不需要授权 SHOW DATABASES,但需要创建至少一个非系统库,否则前置校验任务会失败。其他非阿里云数据库场景则需要授权。阿里云数据库授权,请参考 https://help.aliyun.com/document_detail/96101.html//如果选择迁移触发器和事件,需要同时授权 TRIGGER 和 EVENT 权限GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移账号'@'%';GRANT SELECT ON *.* TO '迁移账号';
“指定对象”迁移:
CREATE USER '迁移账号'@'%' IDENTIFIED BY '迁移密码';GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS ON *.* TO '迁移账号'@'%';//源库为阿里云数据库时,不需要授权 SHOW DATABASES,但需要创建至少一个非系统库,否则前置校验任务会失败。其他非阿里云数据库场景则需要授权。阿里云数据库授权,请参考 https://help.aliyun.com/document_detail/96101.html//如果选择迁移触发器和事件,需要同时授权 TRIGGER 和 EVENT 权限GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移账号'@'%';GRANT SELECT ON `mysql`.* TO '迁移账号'@'%';GRANT SELECT ON 待迁移的库.* TO '迁移账号';
4. 在目标库中对执行任务账号进行授权,需要具备的权限如下。
ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, PROCESS, REFERENCES, RELOAD, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE。
使用说明
迁移对象
1. 支持迁移基础表、视图、函数、触发器、存储过程和事件。不支持迁移系统库表,包括
information_schema
, sys
, performance_schema
,__cdb_recycle_bin__
, __recycle_bin__
, __tencentdb__
, mysql
。2. 相互关联的数据对象需要同时迁移,否则会导致迁移失败。常见的关联关系:视图引用表、视图引用视图、主外键关联表等。
3. 为了避免数据重复,建议迁移有主键或者非空唯一键的表。
4. 在迁移视图、存储过程和函数时,DTS 会检查源库中
DEFINER
对应的 user1( [DEFINER = user1])和迁移账号 user2 是否一致,如果不一致,迁移后 DTS 会修改 user1 在目标库中的 SQL SECURITY
属性,由 DEFINER
转换为 INVOKER
( [INVOKER = user1]),同时设置目标库中 DEFINER
为迁移账号 user2([DEFINER = 迁移账号 user2])。如果源库中视图定义过于复杂,可能会导致任务失败。5. 源数据库为阿里云 RDS,PolarDB 时,由于 RDS,PolarDB 在 Binlog 中为无主键或无非空唯一键的表加上附加主键列,但在表结构中不可见,可能会导致 DTS 无法识别,因此建议用户尽量不要迁移无主键的表。
6. 只支持迁移 InnoDB、MyISAM、TokuDB 三种数据库引擎,如果存在这三种以外的数据引擎表则默认跳过不进行迁移。其中,源库如果存在压缩模式的 TokuDB 引擎数据,需要目标库同步支持压缩模式才可以迁移,否则任务会报错。
7. 目标端为腾讯云 MySQL 数据库实例且为 RocksDB 引擎时,支持源端 InnoDB/TokuDB 引擎转化为目标 RocksDB 引擎,但在 InnoDB 转化为 RocksDB 引擎时存在以下约束。
7.1 如果源库待迁移表的主键或主键的一部分为 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 字段类型,因为目标端上这些字段类型不支持“值判等”,所以相关“值判等”的 SQL (例如 DELETE FROM table_name WHERE primary_key_column = 'some text')同步到目标端后无法生效,最终可能会导致目标端与源端的数据结果不一致。
7.2 进行数据一致性校验时,如果源库待迁移表的主键或主键的一部分为 TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT 字段类型,并且表的行数超过5万行,则该表会被跳过,不进行一致性校验。
7.3 因 RocksDB 引擎和 InnoDB 引擎对于 DOUBLE 数据类型在底层存储有差别,当源端 DOUBLE 数值接近上限(例如 -1.7976931348623157E+308),可能在创建一致性校验任务时出现误报,实际数据是一致的,但是校验结果显示不一致。
7.4 不支持迁移涉及分区(partition)的表。
数据类型
1. 增量迁移过程中,若源库产生了类型为
STATEMENT
格式的 Binlog 语句,则会导致迁移失败。2. 源数据库 Binlog 的 GTID 如果存在空洞,可能会影响迁移任务的性能并导致任务失败。
3. 不支持同时包含 DML 和 DDL 语句在一个事务的场景,遇到该情况任务会报错。
4. 不支持 Geometry 相关的数据类型,遇到该类型数据任务报错。
5. 不支持
ALTER VIEW
语句,遇到该语句任务跳过不迁移。其他说明
1. 源端如果是非 GTID 实例,DTS 不支持源端 HA 切换,一旦源端 MySQL 发生切换可能会导致 DTS 增量迁移中断。
2. 在任务过程中建议不要在目标端进行双写,否则会导致任务异常或者数据同步的结果不一致。
全量同步阶段:DTS 将全量初始数据写入目标端时检测到主键冲突,任务会报错。
增量同步阶段:DTS 将全量阶段的新增数据写入到目标端时,检查到主键冲突,会用源端数据直接覆盖掉目标端;DTS 将增量阶段的新增数据写入到目标端时,检查到主键冲突,任务会报错。
操作限制
迁移过程中请勿进行如下操作,否则会导致迁移任务失败。
1. 选择结构迁移和全量迁移的场景中,当迁移任务步骤为“全量导出”时,不支持 DDL 操作。
2. 请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
3. 请勿在源库上执行清除 Binlog 的操作。
支持的 SQL 操作
操作类型 | 支持的 SQL 操作 |
DML | INSERT、UPDATE、DELETE、REPLACE |
DDL | TABLE:CREATE TABLE、ALTER TABLE、DROP TABLE、TRUNCATE TABLE、RENAME TABLE VIEW:CREATE VIEW、DROP VIEW INDEX:CREATE INDEX、DROP INDEX DATABASE:CREATE DATABASE、ALTER DATABASE、DROP DATABASE 暂不支持 CREATE TABLE 表名 AS SELECT 语句。 |
环境要求
说明:
类型 | 环境要求 |
源数据库要求 | 源库和目标库网络能够连通。 源库所在的服务器需具备足够的出口带宽,否则将影响迁移速率。 实例参数要求: 源库 server_id 参数需要手动设置,且值不能设置为0。 源库表的 row_format 不能设置为 FIXED。 源库和目标库 lower_case_table_names 变量必须设置为一致。 源库变量 connect_timeout 设置数值必须大于10。 建议开启 skip-name-resolve,减少连接超时的可能性。 Binlog 参数要求: 源库 log_bin 变量必须设置为 ON。 源库 binlog_format 变量必须设置为 ROW。 源库 binlog_row_image 变量必须设置为 FULL。 MySQL 5.6 及以上版本 gtid_mode 变量不为 ON 时会报警告,建议打开 gtid_mode。 不允许设置 do_db, ignore_db 过滤条件。 源实例为从库时,log_slave_updates 变量必须设置为 ON。 建议源库 Binlog 日志至少保留3天及以上,否则可能会因任务暂停/中断时间大于 Binlog 日志保留时间,造成任务无法续传,进而导致任务失败。 外键依赖: 外键依赖只能设置为 NO ACTION,RESTRICT 两种类型。 部分库表迁移时,有外键依赖的表必须齐全。 DTS 对数据类型为 FLOAT 的迁移精度为38位,对数据类型为 DOUBLE 的迁移精度为308位,需要确认是否符合预期。 环境变量 innodb_stats_on_metadata 必须设置为 OFF。 |
目标数据库要求 | 目标库的版本必须大于等于源库的版本。 目标库的空间大小须是源库待迁移库表空间的1.2倍以上。(全量数据迁移会并发执行 INSERT 操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间很可能会比源实例的表存储空间大) 目标库不能有和源库同名的表、视图等迁移对象。 目标库 max_allowed_packet 参数设置数值至少为4M。 |
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据迁移页,单击新建迁移任务,进入新建迁移任务页面。
2. 在新建迁移任务页面,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。
配置项 | 说明 |
创建模式 | 选择新建任务。 |
计费模式 | |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。此处选择 MySQL。 |
源实例地域 | 这里指 DTS 数据迁移服务的源端地域,如果源数据库为腾讯云数据库,这里请选择源数据库所属地域,如果源库为自建数据库或其他云厂商数据库,这里请选择离源数据库最近的一个地域,以便 DTS 选择最优迁移路径,降低迁移时长。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。此处选择 MySQL。 |
目标实例地域 | 选择目标数据库所属地域。 |
规格 | |
数量 | 单次购买最多可购买10个迁移任务。 |
3. 购买完成后,页面自动跳转到数据迁移的任务列表,请选择刚才购买的任务进行配置。如果您购买了多个地域,或者跨地域的DTS任务,任务列表按照目标实例的所属地域进行展示,可在上方切换地域后找到已购买的任务。
4. 在设置源和目标数据库页面,完成任务设置、源库设置和目标库设置,测试源库和目标库连通性通过后,单击保存。
说明:
因源数据库部署形态和接入类型的交叉场景较多,各场景迁移步骤类似,如下仅提供典型场景的配置示例,其他场景请用户参考配置。
示例一:本地自建数据库通过专线/VPN 方式迁移至腾讯云数据库
设置类型 | 配置项 | 说明 |
任务设置 | 任务名称 | 设置一个具有业务意义的名称,便于任务识别。 |
| 运行模式 | 立即执行:完成任务校验通过后立即启动任务。 定时执行:需要配置一个任务执行时间,到时间后启动任务。 |
| 自动重试 | 设置后,迁移任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。 支持设置的时间范围为5分钟-720分钟。 |
源库设置 | 源库类型 | 购买时选择的源数据库类型,不可修改。 |
| 服务提供商 | 自建数据库(包括云服务器上的自建)或者腾讯云数据库,请选择“普通”;第三方云厂商数据库,请选择对应的服务商。本场景选择“普通”。 |
| 所属地域 | 购买时选择的地域,不可修改。 |
| 接入类型 | 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 选择原则如下: IDC 自建数据库/其他云厂商数据库:接入方式可选择“公网/专线接入/VPN 接入/云联网”。 CVM 上的自建数据库:接入方式选择“云主机自建”。 腾讯云数据库实例:接入方式选择“云数据库”。 轻量应用服务器上的轻量数据库:接入方式选择“公网”。 |
| 私有网络专线网关/VPN 网关 | 专线接入时只支持私有网络专线网关,请确认网关关联网络类型。VPN 网关,请选择通过 VPN 网关接入的 VPN 网关实例。 |
| 私有网络 | 选择私有网络专线网关和 VPN 网关关联的私有网络和子网。 |
| 主机地址 | 源库 MySQL 访问 IP 地址或域名。 |
| 端口 | 源库 MySQL 访问端口。 |
| 账号 | 源库 MySQL 的数据库账号,账号权限需要满足要求。 |
| 密码 | 源库 MySQL 的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型,不可修改。 |
| 所属地域 | 购买时选择的目标库地域,不可修改。 |
| 接入类型 | 根据您的场景选择,本场景选择“云数据库”。 |
| 数据库实例 | 选择目标库的实例 ID。 |
| 账号 | 目标库的数据库账号,账号权限需要满足要求。 |
| 密码 | 目标库的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 |
示例二:腾讯云数据库迁移至腾讯云数据库
设置类型 | 配置项 | 说明 |
任务设置 | 任务名称 | 设置一个具有业务意义的名称,便于任务识别。 |
| 运行模式 | 立即执行:完成任务校验通过后立即启动任务。 定时执行:需要配置一个任务执行时间,到时间后启动任务。 |
| 自动重试 | 设置后,迁移任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。 支持设置的时间范围为5分钟-720分钟。 |
源库设置 | 源库类型 | 购买时选择的源数据库类型,不可修改。 |
| 服务提供商 | 自建数据库(包括云服务器上的自建)或者腾讯云数据库,请选择“普通”;第三方云厂商数据库,请选择对应的服务商。本场景选择“普通”。 |
| 所属地域 | 购买数据迁移任务时选择的源库地域,不可修改。 |
| 接入类型 | 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 |
| 是否跨账号 | 本账号:源数据库实例和目标数据库实例所属的主账号为同一个腾讯云主账号。 跨账号:源数据库实例和目标数据库实例所属的主账号为不同的腾讯云主账号。如下以同账号之间的迁移为例,跨账号操作指导请参见 云数据库跨账号实例间迁移。 |
| 数据库实例 | 源库 MySQL 实例 ID。 |
| 账号 | 源库 MySQL 的数据库账号,账号权限需要满足要求。 |
| 密码 | 源库 MySQL 的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型,不可修改。 |
| 所属地域 | 购买时选择的目标库地域,不可修改。 |
| 接入类型 | 根据您的场景选择,本场景选择“云数据库”。 |
| 数据库实例 | 选择目标库的实例 ID。 |
| 账号 | 目标库的数据库账号,账号权限需要满足要求。 |
| 密码 | 目标库的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 |
示例三:阿里云 RDS 通过公网方式迁移至腾讯云数据库
设置类型 | 配置项 | 说明 |
任务设置 | 任务名称 | 设置一个具有业务意义的名称,便于任务识别。 |
| 运行模式 | 立即执行:完成任务校验通过后立即启动任务。 定时执行:需要配置一个任务执行时间,到时间后启动任务。 |
| 自动重试 | 设置后,迁移任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。 支持设置的时间范围为5分钟-720分钟。 |
源库设置 | 源库类型 | 购买时选择的源数据库类型,不可修改。 |
| 服务提供商 | 自建数据库(包括云服务器上的自建)或者腾讯云数据库,请选择“普通”;第三方云厂商数据库,请选择对应的服务商。本场景选择“阿里云”。 |
| 所属地域 | 购买时选择的源库地域,不可修改。 |
| 接入类型 | 对于第三方云厂商数据库,一般可以选择公网方式,也可以选择 VPN 接入,专线或者云联网的方式,需要根据实际的网络情况选择。 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 |
| 主机地址 | 源库 MySQL 访问 IP 地址或域名。 |
| 端口 | 源库 MySQL 访问端口。 |
| 账号 | 源库 MySQL 的数据库账号,账号权限需要满足要求。 |
| 密码 | 源库 MySQL 的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 源库为微软 Azure 数据库的场景,暂不支持使用 SSL 安全连接功能。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型,不可修改。 |
| 所属地域 | 购买时选择的目标库地域,不可修改。 |
| 接入类型 | 根据您的场景选择,本场景选择“云数据库”。 |
| 数据库实例 | 选择目标库的实例 ID。 |
| 账号 | 目标库的数据库账号,账号权限需要满足要求。 |
| 密码 | 目标库的数据库账号的密码。 |
| 连接方式 | SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。 选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。 |
5. 在设置迁移选项及选择迁移对象页面,设置迁移类型、对象,单击保存。
说明:
如果用户在迁移过程中确定会对某张表使用 rename 操作(例如将 table A rename 为 table B),则迁移对象需要选择 table A 所在的整个库(或者整个实例),不能仅选择 table A,否则 rename 操作后,table B 的数据不会同步到目标库。
配置项 | 说明 |
迁移类型 | 请根据您的场景选择。 结构迁移:迁移数据库中的库、表等结构化的数据。 全量迁移:迁移整个数据库的库表结构和数据,迁移内容仅针对任务发起时,源数据库已有的内容,不包括任务发起后源库实时新增的数据写入。 全量 + 增量迁移:迁移整个数据库的库表结构和数据,迁移内容包括任务发起时源库的已有内容,也包括任务发起后源库实时新增的数据写入。如果迁移过程中源库有数据写入,需要不停机平滑迁移,请选择此场景。 |
数据一致性检测 | 当选择“全量 + 增量迁移”时,支持进行数据一致性检测,对迁移后源库和目标库的数据进行详细的对比检测。 勾选“全量检测迁移对象”后,迁移任务进行到“同步增量”阶段,目标与源库数据差距为0MB,目标与源库时间延迟也为0秒时,DTS 会自动触发一次一致性校验任务。 未勾选“全量检测迁移对象”,用户也可在任务进行到“同步增量”阶段,手动进行触发,详情可参考 创建数据一致性校验任务。 |
迁移对象 | 整个实例:迁移整个实例,但不包括系统库,如 information_schema、mysql、performance_schema、sys。 指定对象:迁移指定对象。 |
高级迁移对象 | 支持迁移存储过程(Procedure)、函数(Function)、触发器(Trigger)、事件(Event)。 高级对象的迁移是一次性动作,仅支持迁移在任务启动前源库中已有的高级对象,在任务启动后,新增的高级对象不会同步到目标库中。 存储过程和函数,在“源库导出”阶段进行迁移;触发器和事件,没有增量任务,在任务结束时进行迁移,有增量任务,在用户单击完成操作后开始迁移,所以单击完成后,任务的过渡时间会略微增加。 |
已选对象 | 支持库表映射(库表重命名),将鼠标悬浮在库名、表名上即显示编辑按钮,单击后可在弹窗中填写新的名称。 选择高级对象进行迁移时,建议不要进行库表重名操作,否则可能会导致高级对象迁移失败。 |
是否同步 Online DDL 临时表 | 如果使用 gh-ost、pt-osc 工具对源库中的表执行 Online DDL 操作,DTS 支持将 Online DDL 变更产生的临时表迁移到目标库。 勾选 gh-ost,DTS 会将 gh-ost 工具产生的临时表名(_表名_ghc、_表名_gho、_表名_del)迁移到目标库。 勾选 pt-osc, DTS 会将 pt-osc 工具产生的临时表名(_表名_new、 _表名_old)迁移到目标库。 |
请根据您的场景,选择是否配置如下高级操作。
配置项 | 说明 |
是否迁移账号 | |
限制传输速率 |
6. 在校验任务页面,进行校验,校验任务通过后,单击启动任务。
如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。部分检查支持跳过,可在校验失败后进行屏蔽,屏蔽后需要重新进行校验才可以继续任务。
失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
如果勾选了账号迁移,则校验任务会对源库的账号信息进行检查,对满足要求的账号进行迁移,不满足的不迁移或者降权迁移,检查详情请参见迁移账号。
7. 返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。
选择结构迁移或者全量迁移:任务完成后会自动结束,不需要手动结束。
选择全量 + 增量迁移:全量迁移完成后会自动进入增量数据同步阶段,增量数据迁移不会自动结束,需要您手动单击完成结束增量数据迁移。
请选择合适时间手动完成增量数据迁移,并完成业务切换。
观察迁移阶段为增量迁移,并显示无延迟状态,将源库停写几分钟。
目标与源库数据差距为0KB及目标与源库时间延迟为0秒时,手动完成增量迁移。
8. (可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理。
9. 当迁移任务状态变为任务成功时,即可对业务进行正式割接,更多详情可参考 割接说明。