云数据库RDS(ApsaraDB for RDS,简称RDS)是一种稳定可靠、可弹性伸缩的在线数据库服务。基于飞天分布式系统和全SSD盘高性能存储,支持MySQL、SQL Server、PostgreSQL和PPAS(高度兼容Oracle)引擎,默认部署主备架构且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。
在使用阿里云提供的RDS数据库产品时,在多个阶段使用数据迁移功能都提供了失败在线修复功能。主要包括的是:
结构迁移和全量迁移。下面我们将看下在这两个迁移过程中,如何进行数据库在线修复功能的。
结构迁移—失败修复
如果结构迁移失败了,那么任务的状态会显示迁移失败,具体的状态及进度如下:
当出现失败时,点击“立即修复”进入修复页面。
对于每个对象,如果失败了,点击修复,进入对象修复页面
根据失败原因提示,修改结构定义语法,修改完成后点击修复,将修改后的语法重新导入到目标实例。 如果点击修复,失败原因变成修复失败,且显示修复失败原因,那么说明没有修复彻底。需要根据修复失败原因继续修复,直至修复成功。
如果修复成功,那么会回到结构迁移详情页,且刚才修复的对象的状态变成完成。 当所有的对象全部修复成功后,这个任务就会继续往下执行,例如进入全量迁移阶段。
全量迁移—失败修复
对于下列几种失败原因,DTS提供了修复重试的功能:
1) 源或目标数据库连接失败,确认连接没有问题后,重试任务
2) 源或目标数据库连接超时,确认连接没有问题后,重试任务
3) 目标RDS实例空间满,实例被锁定,需要升级RDS实例规格或清理实例日志空间后,重试任务
4) 源数据库中部分Myisam被损坏,需要repair后,重试任务
其他情况下,如果全量迁移失败,DTS只提供忽略操作,只能忽略失败对象后,进行其他正常对象的迁移。
如果全量迁移失败了,那么迁移任务的状态会显示“迁移失败”,具体的状态及进度如下:
当出现失败时,点击“立即修复”进入修复页面。
如果遇到上面可以重试的错误,那么根据错误提示修复问题后,点击全量迁移详情页面的重试按钮,触发任务断点续传
对于其他失败原因,DTS只提供“忽略”操作,即忽略掉这个对象的全量数据迁移。一旦点击忽略,那么这个对象的数据不会迁移,但是其他正常对象的数据会迁移到目标实例。