DTS数据迁移功能在多个阶段都提供了失败在线修复功能。主要包括:
- 结构迁移 由于DTS支持异构数据源之间的迁移,例如对于Oracle->MySQL,对于一些不支持的数据类型,在结构迁移时,直接导入到目标实例,会导致迁移失败。
- 全量迁移 全量迁移过程中,可能因为目标RDS实例空间满、RDS实例白名单被删除等问题导致迁移失败,这些失败任务都可以通过用户手动修改后,重启任务来自助恢复任务。
为了解决这些问题,DTS提供了在线修复功能,当用户在迁移过程遇到这些问题时,可以修复续传。下面简单介绍结构迁移和全量迁移过程中的失败修复流程。
结构迁移—失败修复
如果结构迁移失败了,任务状态会显示迁移失败,同时状态后,提供立即修复入口。
此时,点击 [backcolor=transparent]立即修复 ,进入结构对象修复界面。
对于每个对象,如果失败了,点击修复,进入对象修复页面。
根据失败原因提示,修改结构定义语法,修改完成后点击修复,将修改后的语法重新导入到目标实例。
如果点击修复,失败原因变成修复失败,且显示修复失败原因,那么说明没有修复彻底。需要根据修复失败原因继续修复,直至修复成功。
如果修复成功,那么会回到结构迁移详情页,且刚才修复的对象的状态变成完成。
当所有的对象全部修复成功后,这个任务就会继续往下执行,例如进入全量迁移阶段。
全量迁移—失败修复
对于下列几种失败原因,DTS提供了修复重试的功能:
- 源或目标数据库连接失败,确认连接没有问题后,重试任务。
- 源或目标数据库连接超时,确认连接没有问题后,重试任务。
- 目标RDS实例空间满,实例被锁定,需要升级RDS实例规格或清理实例日志空间后,重试任务。
- 源数据库中部分Myisam被损坏,需要repair后,重试任务。
其他情况下,如果全量迁移失败,DTS只提供忽略操作,只能忽略失败对象后,进行其他正常对象的迁移。
如果全量迁移失败了,那么迁移任务的状态为 迁移失败,状态后面提供立即修复入口。
当出现失败时,点击“立即修复”进入修复页面。
如果遇到上面可以重试的错误,那么根据错误提示修复问题后,点击全量迁移详情页面的重试按钮,触发任务断点续传。
对于其他失败原因,DTS只提供“忽略”操作,即忽略掉这个对象的全量数据迁移。一旦点击忽略,那么这个对象的数据不会迁移,但是其他正常对象的数据会迁移到目标实例。