操作场景
本文介绍使用 DTS 数据迁移功能从 TiDB 迁移数据至腾讯云数据库 TDSQL Boundless 的操作指导。
源数据库支持的部署类型如下:
源数据库 | 目标数据库 |
TiDB 4.0~8.0(IDC 自建/CVM 上自建) | 腾讯云数据库 TDSQL Boundless |
业务影响
1. DTS 在执行全量数据迁移时,会将源库的全量数据全部读取一次,所以会增加源库的负载。如果源数据库规格较低,建议您在业务低峰期进行迁移。
2. 默认采用无锁迁移来实现,迁移过程中对源库不加全局锁。
3. 进行数据一致性校验时,DTS 会使用执行迁移任务的账号在源库中写入系统库
__tencentdb__,用于记录迁移任务过程中的数据对比信息,请勿删除该系统库。为保证后续数据对比问题可定位,迁移任务结束后不会删除源库中的
__tencentdb__。__tencentdb__ 系统库占用空间非常小,约为源库存储空间的千分之一到万分之一(例如源库为 50GB,则 __tencentdb__ 系统库约为 5 MB-50 MB),并且采用单线程,等待连接机制,所以对源库的性能几乎无影响,也不会抢占资源。准备工作
1. 请根据您需要使用的接入类型,打通 DTS 与数据库之间的访问通道,具体请参考 网络准备工作。
2. 在源数据库中对执行任务账号进行授权,参考如下:
GRANT SELECT, SHOW DATABASES, SHOW CREATE TABLE ON *.* TO '迁移账号'@'%';GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO '迁移账号'@'%';
3. 在目标库中对执行任务账号进行授权,需要具备的权限如下:
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、mysql、metrics_schema。2. 相互关联的数据对象需要同时迁移,否则会导致迁移失败。常见的关联关系:视图引用表、视图引用视图、主外键关联表等。
3. 为了避免数据重复,建议迁移有主键或者非空唯一键的表。
4. 在迁移视图、存储过程和函数时,DTS 会检查源库中
DEFINER 对应的 user1([DEFINER = user1])和迁移账号 user2 是否一致,如果不一致,迁移后 DTS 会修改 user1 在目标库中的 SQL SECURITY 属性,由 DEFINER 转换为 INVOKER([INVOKER = user1]),同时设置目标库中 DEFINER 为迁移账号 user2([DEFINER = 迁移账号 user2])。5. 只支持迁移 InnoDB、MyISAM、TokuDB 三种数据库引擎,如果存在这三种以外的数据引擎表则默认跳过不进行迁移。
TiDB 特有语法处理
TiDB 特性 | 处理方式 |
AUTO_RANDOM 主键 | 目标端字段定义转换为 BIGINT,保留源端原始值写入(不重新生成),保证切换后数据一致性。 |
CLUSTERED/NONCLUSTERED INDEX | 目标端不支持则忽略该关键字。 |
PLACEMENT POLICY | 忽略,目标端不支持。 |
SEQUENCE 对象 | 不支持迁移,预检查阶段报错提示用户。 |
TiDB 特有系统表 | 过滤,不迁移。 |
其他 TiDB 特有 DDL 语法 | 增量阶段遇到不支持语法直接报错,任务暂停,需用户手动处理后恢复。 |
说明:
AUTO_RANDOM 字段迁移到目标端时定义调整为 BIGINT(或 BIGINT UNSIGNED),全量及增量阶段均保留源端原始值写入。切换后需注意目标端不会自动生成 ID,需由应用层统一生成后同步。
其他说明
1. 在任务过程中建议不要在目标端进行双写,否则会导致任务异常或者数据同步的结果不一致。
全量同步阶段:DTS 将全量初始数据写入目标端时检测到主键冲突,任务会报错。
增量同步阶段:DTS 将全量阶段的新增数据写入到目标端时,检查到主键冲突,会用源端数据直接覆盖目标端;DTS 将增量阶段的新增数据写入到目标端时,检查到主键冲突,任务会报错。
操作限制
迁移过程中请勿进行如下操作,否则会导致迁移任务失败。
1. 选择结构迁移和全量迁移的场景中,当迁移任务步骤为"全量导出"时,不支持 DDL 操作。
2. 请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号。
3. 请勿在源库上执行清除 Binlog 的操作。
支持的 SQL 操作
操作类型 | 支持的 SQL 操作 |
DML | INSERT、UPDATE、DELETE |
DDL | CREATE DATABASE、DROP DATABASE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN |
操作步骤
1. 登录 DTS 控制台,在左侧导航选择数据迁移页,单击新建迁移任务,进入新建迁移任务页面。
2. 在新建迁移任务页面,选择迁移的源实例类型和所属地域,目标实例类型和所属地域,规格等,然后单击立即购买。
配置项 | 说明 |
创建模式 | 选择新建任务。 |
计费模式 | |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。此处选择 TiDB。 |
源实例地域 | 选择离源数据库最近的一个地域,以便 DTS 选择最优迁移路径,降低迁移时长。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。此处选择 TDSQL Boundless。 |
目标实例地域 | 选择目标数据库所属地域。 |
规格 | |
数量 | 单次购买最多可购买 10 个迁移任务。 |
3. 购买完成后,页面自动跳转到数据迁移的任务列表,请选择刚才购买的任务进行配置。如果您购买了多个地域,或者跨地域的 DTS 任务,任务列表按照目标实例的所属地域进行展示,可在上方切换地域后找到已购买的任务。
4. 在设置源和目标数据库页面,完成任务设置、源库设置和目标库设置,测试源库和目标库连通性通过后,单击保存。
说明:
任务设置
配置项 | 说明 |
任务名称 | DTS 会自动生成一个任务名称,建议用户修改为一个具有业务意义的名称,便于任务识别。 |
运行模式 | 立即执行:前置校验通过后会立即启动任务。定时执行:设置一个任务开始执行的时间,前置校验通过后不启动任务,到设定的时间再启动。 |
自动重试 | 设置后,同步任务因网络异常等引起的任务临时中断,DTS 将在设置的时间范围内自动重试和恢复任务,不需要用户手动操作。支持设置的时间范围为 5 分钟 - 720 分钟。 |
源库设置
配置项 | 说明 |
源实例类型 | 购买时所选择的源实例类型,不可修改。 |
源实例地域 | 购买时选择的源实例所在地域,不可修改。 |
接入类型 | 源库为 IDC 自建数据库/其他云厂商数据库:接入类型可选择“公网/专线接入/VPN 接入/云联网”。 公网:源数据库可以通过公网 IP 访问。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 源库为 CVM 上的自建数据库:接入类型选择“云服务器自建”。 源库为轻量应用服务器上的轻量数据库:接入类型选择“公网”。 |
公网 | 接入类型选择“公网”时,需要配置如下参数。 主机地址:源数据库 IP 地址或域名。 端口:源数据库使用的端口。 |
云服务器自建 | 接入类型选择“云服务器自建”时,需要配置如下参数。 云服务器实例:云服务器 CVM 的实例 ID。 端口:源数据库使用的端口。 |
专线接入 | 接入类型选择“专线接入”时,需要配置如下参数。 私有网络专线网关:专线接入时只支持私有网络专线网关,请确认网关关联的网络类型。 私有网络:选择私有网络和子网。 主机地址:源数据库 IP 地址。 端口:源数据库使用的端口。 |
VPN 接入 | 接入类型选择“VPN 接入”时,需要配置如下参数。 VPN 网关:VPN 网关,请选择 VPN 网关 ID。 私有网络:选择 VPN 网关关联的私有网络和子网。 主机地址:源数据库 IP 地址。 端口:源数据库使用的端口。 |
云联网 | 接入类型选择“云联网”时,需要配置如下参数。 主机所在网络环境:请根据实际情况选择。例如源库为腾讯云数据库实例,选择“腾讯云”;源库为 IDC 自建数据库,选择“自建 IDC”;源库为其他云厂商数据库,则选择对应的网络。 主机地址:源数据库的主机 IP 地址。 端口:源数据库使用的端口。 |
账号/密码 | 账号/密码:源数据库的账号、密码。 |
是否同步增量 | 选择是否启用增量同步,开启时任务执行全量 + 增量迁移,关闭时仅执行全量迁移。开启后展示 TiCDC 信息配置区,用于采集 TiDB 增量数据变更的 Kafka 配置,具体配置项请参考TICDC 设置。 |
TICDC 设置
配置项 | 说明 |
Kafka Broker 地址 | Kafka Broker 主机地址及端口,多个地址以逗号分隔。 |
Topic | TiCDC 投递变更数据的目标 Kafka Topic 名称。请确保 TiCDC 投递到该 Topic 的数据格式与数据格式保持一致。 |
数据格式 | 支持 Canal JSON 和 Open Protocol 两种格式。 |
安全协议 | 支持 SASL_PLAINTEXT、PLAINTEXT、SASL_SSL 三种协议。默认为 SASL_PLAINTEXT。 |
安全机制 | 安全协议为 SASL_PLAINTEXT 或 SASL_SSL 时可选,支持 SCRAM-SHA-256 和 SCRAM-SHA-512。 |
Kafka 账号 | 用于 SASL 鉴权的 Kafka 账号。安全协议为 SASL_PLAINTEXT 或 SASL_SSL 时需填写。 |
Kafka 密码 | 用于 SASL 鉴权的 Kafka 密码。安全协议为 SASL_PLAINTEXT 或 SASL_SSL 时需填写。 |
CA 证书 | 用于 SSL 通道建立的 CA 证书文件(.pem/.crt),仅安全协议为 SASL_SSL 时展示并必填,文件大小不超过 64KB。 |
目标库设置
配置项 | 说明 |
目标实例类型 | 购买时选择的目标实例类型,不可修改。 |
目标实例地域 | 购买时选择的目标实例所在地域,不可修改。 |
接入类型 | 目标库为腾讯云数据库实例时,选择"云数据库"。 |
数据库实例 | 目标数据库的实例 ID。 |
账号 | 目标数据库的账号。 |
密码 | 目标数据库的密码。 |
5. 在设置迁移选项及选择迁移对象页面,设置迁移类型、对象,单击保存。
说明:
如果用户在迁移过程中确定会对某张表使用 rename 操作(例如将 table A rename 为 table B),则迁移对象需要选择 table A 所在的整个库(或者整个实例),不能仅选择 table A,否则 rename 操作后,table B 的数据不会同步到目标库。
配置项 | 说明 |
迁移类型 | 请根据您的场景选择。 结构迁移:迁移数据库中的库、表等结构化的数据。 全量迁移:迁移整个数据库的库表结构和数据,迁移内容仅针对任务发起时,源数据库已有的内容,不包括任务发起后源库实时新增的数据写入。 全量 + 增量迁移:迁移整个数据库的库表结构和数据,迁移内容包括任务发起时源库的已有内容,也包括任务发起后源库实时新增的数据写入。如果迁移过程中源库有数据写入,需要不停机平滑迁移,请选择此场景(需开启增量同步开关)。 |
数据一致性检测 | 当选择“全量 + 增量迁移”时,支持进行数据一致性检测,对迁移后源库和目标库的数据进行详细的对比检测。 勾选“全量检测迁移对象”后,迁移任务进行到“同步增量”阶段,目标与源库数据差距为0 MB,目标与源库时间延迟也为0秒时,DTS 会自动触发一次一致性校验任务。 未勾选“全量检测迁移对象”,用户也可在任务进行到“同步增量”阶段,手动进行触发,详情可参考 创建数据一致性校验任务。 |
迁移对象 | 整个实例:迁移整个实例,但不包括系统库,如 information_schema、mysql、performance_schema、sys、metrics_schema。 指定对象:迁移指定对象。 |
高级迁移对象 | 支持迁移存储过程(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. 当迁移任务状态变为任务成功时,即可对业务进行正式割接,更多详情可参考 割接说明。