前提条件
- 源端
- 账号权限要求:
- 对MySQL库的查询权限。
- 对待迁移库的查询权限。
- 部分全局权限:RELOAD、LOCK TABLES、REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW、PROCESS。
- 如果是整实例迁移,需要对所有数据库的查询权限。
- 其他要求:
- 已开通公网访问,并能获取外网连接地址。
- 账号权限要求:
- 目标端
- 账号权限要求:
- 需要以下全局权限:ALTER、ALTER ROUTINE、CREATE、CREATE ROUTINE、CREATE TEMPORARY TABLES、CREATE USER、CREATE VIEW、DELETE、DROP、EVENT、EXECUTE、INDEX、INSERT、LOCK TABLES、PROCESS、RELOAD、SELECT、SHOW DATABASES、SHOW VIEW、TRIGGER、UPDATE。
- 其他要求:
- 已创建关系数据库MySQL版。
- 已绑定弹性公网IP。
- 账号权限要求:
约束限制
- 如迁移对象为表级别,则单次迁移任务仅支持迁移最多600张表。当超出数量限制,任务会在提交后会请求报错。如果遇到这种情形,建议您拆分待迁移的表,分批配置成多个任务,或者配置为整库迁移。
- 源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下DTS不支持主备HA切换,因为DTS任务会因为位点不续接而中断导致无法恢复。
- 目标库关联RDS数据库的字符集必须与源数据库一致。
- 目标库若已存在行数据,DTS在增量迁移过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在迁移前需要用户自行判断数据是否需要清除,建议用户在迁移前自行清空目标库。
- MySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。
- 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为7天。否则DTS在增量迁移时可能因无法获取Binlog而导致任务失败。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。
- 目标实例及关联RDS实例的运行状态必须正常,若关联RDS实例是主备实例,复制状态也必须正常。
- 目标库关联RDS实例必须有足够的磁盘空间。(全量数据迁移会并发执行 INSERT 操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大,且会产生大量的BINLOG,占用大量空间)。
- 目标库实例若选择将时间戳类型(TIMESTAMP,DATETIME)的列作为分片键,则源库数据在迁移到目标库之后,作为分片键的该时间戳类型列的秒精度将被丢弃。
- 由于DTS不迁移USER信息,因此在调用目标库的视图、存储过程和函数时需要对调用者授予读写权限。
- 在任务启动、任务全量迁移阶段,不建议对源数据库做删除类型的DDL操作,这样可能会引起任务迁移失败。
- 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
- 迁移过程中,不允许对源库需要迁移的表结构进行修改。
- 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
- 增量迁移场景下,不支持源数据库进行恢复操作。
- 增量迁移场景下,不支持无主键表的数据增量迁移,因为无主键表的增量迁移性能远低于有主键的表,而且不能保证数据的一致性。
说明详细信息请参考DTS文档。
操作步骤
- 登录管理控制台。
- 单击管理控制台左上角的位置图标,然后在下拉列表中选择目标区域和项目。
- 选择“数据库 > 数据传输服务DTS”,进入DTS控制台。
- 单击左侧菜单栏“数据迁移”。
- 点击“创建实例”按钮创建DTS迁移实例。
- 在“信息配置”栏中,网络接入类型选择“公网EIP”,公网IP任意选择一个可用的公网IP即可。
说明如果在天翼云已有可用的公网IP,则可以直接使用,否则需要先购买一个公网IP用于实现DTS实例的公网访问。
- 选择您需要导入的目标数据库实例。
- 填写完信息后点击“下一步 > 立即创建”,开始创建DTS实例。
- 回到DTS控制台,等待DTS实例创建成功后,找到对应实例,点击“实例配置”。
- 填写源库(其他云的数据库)的IP地址、端口号、数据库账号和密码,填写目标库的数据库账号和密码,点击“检测连通性并下一步”。
- 在“源库对象”处选择需要迁移的数据库,点击箭头移动到“已选择对象”。
- 单击“下一步预检查”,等待预检查完成。
说明如果预检查没有通过,可根据提示进行修改,然后重新执行预检查。
- 单击“启动迁移”开始进行数据迁移。
- 等待DTS实例状态由“运行中”变成“已完成”即完成迁移。