有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

本文主要介绍使用 DTS 将自建数据库迁移至腾讯云数据库,DTS 与源库的网络通过云联网方式打通。
云联网可以实现不同 VPC(私有网络间)之间,VPC 与 IDC(本地数据中心间)之间的互联互通。使用云联网接入方式,需要用户提前通过云联网建立各 VPC 之间、VPC 与 IDC 的互通。
这里的云联网,可以选择执行 DTS 任务账号(即目标库所属主账号)名下的云联网,也可以选择其他账号名下的云联网。使用其他账号云联网功能,适用于多个公司之间的资源共享,例如云联网资源归属集团公司的主账号 A,用户使用的 DTS、目标数据库资源都归属子公司主账号 B,账号 B 下没有云联网资源,可以使用账号 A 下的云联网资源打通自建数据库,然后进行 DTS 任务。
说明:
当前使用其他账号下的云联网进行 DTS 数据迁移,需要先 提交工单 进行申请。

同账号云联网网络打通

同账号云联网,即使用 DTS 任务所属的主账号下的云联网对接源数据库。
?
?
?
1. 使用云联网进行网络打通。
1.1 将用户源端数据库接入 VPC1,具体请参考 建立 VPC 到 IDC 的连接
1.2 建立 VPC1 和 VPC2 之间的互通,具体请参考 通过云联网建立同账号下不同网络之间的互通
说明:
云联网仅提供所有地域间 10Kbps 以下的免费带宽,使用 DTS 数据传输时需要更高带宽,所以链接中的配置带宽是必选操作。
2. 后续 DTS 购买任务时,源实例地域选择源库接入 VPC(VPC2) 所属地域,即成都地域。目标实例地域选择目标数据库所属地域,即北京地域。
3. 后续 DTS 任务配置时,源库设置中,接入类型选择“云联网”,云联网实例所属账号选择“我的账号”,云联网关联 VPC选择“VPC2”并选择一个子网“subnet2”;目标库设置中,接入类型选择“云数据库”。
云联网关联 VPC 指的是云联网中接入 DTS 链路的 VPC,需要在云联网打通的所有 VPC 中,选择除源库接入的 VPC 外的其他 VPC。
选择子网时,如果无法拉取,则可能是账号问题,云联网关联 VPC 所属账号和 DTS 任务账号需要一致。例如,要把 A 账号的数据库实例迁到 B 账号下面,使用 B 账号进行任务创建,所以云联网关联 VPC 一定要是 B 账号下的。
VPC 所属地域:无需配置,但要求这个地域与云联网关联 VPC 选择的 VPC 所属地域保持一致,如果用户在 DTS 任务购买时未正确选择,DTS 会自动修改为一致。
?
?
?

跨账号云联网网络打通

跨账号云联网,即使用其他腾讯云账号下的云联网对接源数据库。
?
?
?
1. 云联网网络打通。
1.1 将用户源端数据库接入VPC1,具体请参考 建立 VPC 到 IDC 的连接
1.2 建立 VPC1 和 VPC2 之间的互通,具体请参考 通过云联网建立不同账号下网络之间的互通
说明:
云联网仅提供所有地域间 10Kbps 以下的免费带宽,使用 DTS 数据传输时需要更高带宽,所以链接中的配置带宽是必选操作。
2. 跨账号云联网授权操作。
使用其他账号云联网进行 DTS 任务,需要先授权 DTS 可访问其他腾讯云账号下的云联网,具体请参考 授权 DTS 访问其他腾讯云账号下的云联网
3. 后续 DTS 购买任务时,源实例地域选择源库接入 VPC(VPC2) 所属地域,即成都地域。目标实例地域选择目标数据库所属地域,即北京地域。
4. 后续 DTS 任务配置时,源库设置中,接入类型选择“云联网”,云联网实例所属账号选择“其他账号”,云联网实例关联 VPC 选择“VPC2”并选择一个子网“subnet2”;目标库设置中,接入类型选择“云数据库”。
说明:
当前使用其他账号下的云联网进行 DTS 任务,需要先 提交工单 进行申请。
?
?
?

注意事项

DTS 在执行全量数据迁移时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果您的数据库配置过低,建议您在业务低峰期进行迁移。
默认采用无锁迁移来实现,迁移过程中对源库不加全局锁(FTWRL),仅对无主键的表加表锁,其他不加锁。

前提条件

1. 源数据库和目标数据库符合迁移功能和版本要求,请参见 数据迁移支持的数据库 进行核对。
2. 已完成 网络打通准备工作
3. 准备执行 DTS 任务的账号并授权。
3.1 在源数据库需要对账号进行如下授权:
“整个实例”迁移:
CREATE USER '迁移账号'@'%' IDENTIFIED BY '迁移密码';
GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHOW VIEW,PROCESS ON *.* TO '迁移账号'@'%';
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 '迁移账号'@'%';
GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移账号'@'%';
GRANT SELECT ON `mysql`.* TO '迁移账号'@'%';
GRANT SELECT ON 待迁移的库.* TO '迁移账号';
3.2 在目标数据库上需要对账号进行如下权限:
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。

应用限制

支持迁移基础表、视图、函数、触发器、存储过程和事件。不支持迁移系统库表,包括 information_schemasysperformance_schema__cdb_recycle_bin____recycle_bin____tencentdb__mysql
在迁移视图、存储过程和函数时,DTS 会检查源库中 DEFINER 对应的 user1( [DEFINER = user1])和迁移账号 user2 是否一致,如果不一致,迁移后 DTS 会修改 user1 在目标库中的 SQL SECURITY 属性,由 DEFINER 转换为 INVOKER( [INVOKER = user1]),同时设置目标库中 DEFINER 为迁移账号 user2([DEFINER = 迁移账号 user2])。如果源库中视图定义过于复杂,可能会导致任务失败。
源端如果是非 GTID 实例,DTS 不支持源端 HA 切换,一旦源端 MySQL 发生切换可能会导致 DTS 增量同步中断。
只支持迁移 InnoDB、MyISAM、TokuDB 三种数据库引擎,如果存在这三种以外的数据引擎表则默认跳过不进行迁移。
相互关联的数据对象需要同时迁移,否则会导致迁移失败。常见的关联关系:视图引用表、视图引用视图、主外键关联表等。
增量迁移过程中,若源库存在分布式事务或者产生了类型为 STATEMENT 格式的 Binlog 语句,则会导致迁移失败。
无锁迁移场景(源库为阿里云 MySQL 5.6,阿里云 PolarDB MySQL 5.6,AWS MySQL,目标库为腾讯云 MySQL 数据库的场景),全量阶段不支持 DDL 操作。

操作限制

迁移过程中请勿进行如下操作,否则会导致迁移任务失败。
请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
请勿在源库上执行分布式事务。
请勿在源库写入 Binlog 格式为 STATEMENT 的数据。
请勿在源库上执行清除 Binlog 的操作。
在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的 DDL 操作。
在增量迁移阶段,请勿删除系统库表 __tencentdb__
如果仅执行全量数据迁移,请勿在迁移过程中向源实例中写入新的数据,否则会导致源和目标数据不一致。针对有数据写入的场景,为实时保持数据一致性,建议选择全量+增量数据迁移。

操作步骤

一、建立不同网络之间的互通

1. (如已配置请跳过)建立自建 IDC 与 VPC 之间的互通,请参考 建立 VPC 到 IDC 的连接
2. (如已配置请跳过)通过云联网建立不同 VPC 网络之间的互通,可以使用本账号下的云联网,也可以使用其他账号下的云联网。
云联网所属主账号,与执行 DTS 任务所属主账号(即目标库所属主账号)为相同的主账号,请参考 同账号网络互通
云联网所属主账号,与执行 DTS 任务所属主账号(即目标库所属主账号)为不同的主账号,请参考 跨账号网络互通
说明:
云联网仅提供所有地域间 10Kbps 以下的免费带宽,使用 DTS 数据传输时需要更高带宽,所以链接中的配置带宽是必选操作。

二、配置 DTS 迁移任务

1. 登录 DTS 控制台,在左侧导航选择数据迁移页,单击新建迁移任务,进入新建迁移任务页面。
2. 在新建迁移任务页面,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买
配置项
说明
源实例类型
请根据您的源数据库类型选择,购买后不可修改。此处选择“MySQL”。
源实例地域
选择源数据库所属地域。如果源库为自建数据库,选择离自建数据库最近的一个地域即可。
目标实例类型
请根据您的目标数据库类型选择,购买后不可修改。此处选择“MySQL”。
目标实例地域
选择目标数据库所属地域。
规格
根据业务情况选择迁移链路的规格,不同规格的性能和计费详情请参考 计费概述
3. 在设置源和目标数据库页面,完成任务设置、源库设置和目标库设置,测试源库和目标库连通性通过后,单击新建
说明:
如果连通性测试失败,请根据提示和 修复指导 进行排查和解决,然后再次重试。
设置类型
配置项
说明
任务设置
任务名称
设置一个具有业务意义的名称,便于任务识别。
运行模式
支持立即执行和定时执行:立即执行,则完成任务校验通过后立即启动任务;定时执行,需要配置一个任务执行时间则到时间后启动任务。
标签
标签用于从不同维度对资源分类管理。如现有标签不符合您的要求,请前往控制台管理标签。
源库设置
源库类型
购买时选择的源库类型,不可修改。
服务提供商
选择“普通”。
所属地域
购买时选择的源库所属地域,不可修改。
接入类型
选择“云联网”。更多接入类型的详情介绍请参考 准备工作概述
主机所在网络环境
请根据您的场景选择,此处选择”自建 IDC“。
主机地址
源库 MySQL 访问 IP 地址或域名。
端口
源库 MySQL 访问端口。
账号
源库 MySQL 的数据库账号。
密码
源库 MySQL 的数据库账号的密码。
云联网实例所属账号
我的账号:云联网所属主账号,与执行 DTS 任务所属主账号为相同的主账号。
其他账号:云联网所属主账号,与执行 DTS 任务所属主账号为不同的主账号。使用其他账号云联网需要先进行相关授权,否则这里无法拉取到其他账号的云联网 ID,请参考 授权 DTS 访问其他腾讯云账号下的云联网。使用其他账号下的云联网进行 DTS 任务,还需要 提交工单 进行申请。
私有网络云联网
云联网实例 ID。
云联网接入时只支持私有网络云联网,请确认云联网关联网络类型。
云联网实例关联 VPC
请在云联网关联的所有 VPC 中,选择除了源数据库所属 VPC 外的其他 VPC。
为确保网络的连通性,请务必核对以下重要事项:
选择的云联网关联 VPC 与源库接入 VPC 不能在同一地域。
选择的云联网关联 VPC 与源库接入 VPC 不能在同一 VPC。
例如,源数据库接入了 VPC1,这里不能选择 VPC1,也不能选择与 VPC1 同地域的其他 VPC。
子网
已选择 VPC 网络的子网名称。
同账号云联网场景,如果遇到无法拉取子网,则可能是账号问题,“接入 VPC”所属账号和迁移账号需要一致。例如:要把 A 账号的实例迁到 B 账号下面,使用B账号进行任务创建,所以“接入 VPC”一定要是B账号下的。
VPC 所属地域
购买任务时选择的源实例地域与上述“云联网实例关联 VPC”中选择的 VPC 地域要保持一致,如果不一致,DTS 会将地域修改为一致。
连接方式
当前如果用户需要体验 SSL 安全连接功能,请 提交工单 进行申请。
SSL 安全连接指 DTS 与数据库通过 SSL(Secure socket layer)安全连接,对传输链路进行加密。
选择 SSL 安全连接可能会增加数据库的连接响应时间,一般腾讯云内网链路相对较安全,无需开启 SSL 安全连接,采用公网/专线等传输方式,并且对数据安全要求较高的场景,需要开启 SSL 安全连接。选择 SSL 安全连接前,需要先在数据库中开启 SSL 加密。
目标库设置
目标库类型
购买时选择的目标库类型,不可修改。
所属地域
购买时选择的目标库所属地域,不可修改。
接入类型
选择“云数据库”。
数据库实例
选择目标端云数据库实例 ID。
账号
目标端云数据库的数据库账号。
密码
目标端云数据库的数据库账号的密码。
4. 在设置迁移选项及选择迁移对象页面,设置迁移类型、对象,单击保存
说明:
如果用户在迁移过程中确定会对某张表使用 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)迁移到目标库。
更多详情请参考 迁移 Online DDL 临时表
5. 在校验任务页面,进行校验,校验任务通过后,单击启动任务。 如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
?
?
6. 返回数据迁移任务列表,任务进入创建中状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。
选择结构迁移或者全量迁移:任务完成后会自动结束,不需要手动结束。
选择全量 + 增量迁移:全量迁移完成后会自动进入增量数据同步阶段,增量数据同步不会自动结束,需要您手动单击完成结束增量数据同步。
请选择合适时间手动完成增量数据同步,并完成业务切换。
观察迁移阶段为增量同步,并显示无延迟状态,将源库停写几分钟。
目标与源库数据差距为0MB及目标与源库时间延迟为0秒时,手动完成增量同步。
?
?
7. (可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理

三、业务割接

当迁移任务状态变为任务成功时,即可对业务进行正式割接,更多详情可参考 割接说明


http://www.vxiaotou.com