功能概述
数据迁移功能指不同数据源之间的数据复制,它以整体数据库搬迁为目的,属于短期的一次性任务,迁移完成后用户一般会进行手动割接,将业务对接到新的数据库上。腾讯云 DTS 支持数据库不停机无锁迁移,可以最小化迁移过程引起的数据库宕机对业务造成的影响。
腾讯云 DTS 支持源数据库为自建数据库、腾讯云数据库和第三方云厂商数据库等的迁移。
自建数据库迁移上云:将本地 IDC 自建数据库、CVM 上的自建数据库、轻量应用服务器上的轻量数据库等,迁移到腾讯云数据库。
腾讯云数据库跨实例间迁移:如数据库版本升级,跨地域迁移(包括国内国外跨地域),不同腾讯云账号下的数据库实例迁移等。
第三方厂商迁移:从其他云厂商(如阿里云、AWS 等)迁移到腾讯云。
实现原理
如下以 MySQL 为例进行介绍。数据迁移的过程如下:
源库导出:将源库的存量数据全部导出。
数据导入:将存量数据导入目标库。
同步增量&校验数据:在迁移任务启动的同时,Binlog 接管也会启动,源库在迁移过程中发生的 SQL 操作会写入 Binlog 中,DTS 根据 Binlog 解析,将存量数据迁移过程中产生的增量数据,再次写入目标库中。
典型应用场景
数据迁移上云
DTS 提供的数据迁移仅需几步设置,即可帮助您完成数据从本地迁移上云的一系列繁琐工作。迁移过程并不影响源数据库继续对外提供服务,最小化上云过程对您业务的影响。
约束限制
当前支持迁移基础表、视图、函数、触发器、存储过程和事件(未支持的迁移对象后续会持续开发上线)。
相互关联的数据对象需要同时迁移,否则会导致迁移失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。
支持的迁移类型
DTS 支持如下三种迁移类型:
结构迁移:将源库中迁移对象的结构迁移至目标数据库。
全量迁移:将源库中除系统数据库表外的其他数据一次性迁移至目标数据库。全量迁移为一次性迁移,适用于源实例无数据写入的场景。
全量 + 增量迁移:先进行全量迁移,完成目标数据库的初始化,再进行增量迁移,通过解析日志等技术手段保持源库和目标库数据库的数据一致性。全量 + 增量迁移适用于源实例有数据写入的场景。
说明
如果选择全量数据迁移,请勿在迁移过程中向源实例中写入新的数据,否则会导致源和目标数据不一致。针对有数据写入的场景,为实时保持数据一致性,建议选择全量 + 增量迁移。
支持的数据库类型
支持的高级功能
|
| 支持不同类型的数据库之间的迁移,如 MySQL 迁移到 TDSQL-C。第三方厂商目前支持阿里云和 AWS 数据的迁移。 | |
| | |
| 目标库版本大于等于源库即可,如5.5.x版本支持迁移到5.5.x、5.6.x及更高版本,最后一位属于小版本,小版本不限制。 | |
| 支持迁移用户信息、视图、存储过程、函数、触发器和事件。 | |
| | |
| | |
| 支持对数据迁移的各项指标进行监控。 支持对数据迁移事件的监控进行默认配置,事件异常时自动通知用户。 | |
| 无锁迁移指不加全局锁(FTWRL),仅对无主键的表加表锁,其他不加锁。 | |
| | |
| | |
| 支持源实例(开启 GTID 的前提下)和目标实例 HA 切换。 | |
| 操作用户不需要具备源实例账号的 Super 权限(部分数据库已支持)。 | |
本页内容是否解决了您的问题?