1.需求
公司当前有一个系统,后台数据库用的是SqlServer2008;当前系统已经运行8个月,数据库是ECS服务器上自己安装的SqlServer2008;
整个系统大概有50多张表,有100多个存储过程,以及函数、视图、作业计划;整个系统大概有100万条数据。为了数据库的安全性,
公司要求将数据库迁移到阿里云RDS for SqlServer2008,尽可能减少服务暂停时间。
2.思路分析
2.1传统数据库迁移
2.1.1备份
2.1.2
传统数据库迁移可以先备份,再还原。经过尝试,rds fro sqlserver2008,或者说阿里云rds,并没有直接还原的功能。所以第一种方案走不通。
2.2逻辑备份和导入
逻辑上是行的通的,只要导出文件,然后在RDS上执行即可。实际操作中,却遇到了各种各样的问题,
sqlServer2008生成脚本工具生成的脚本,在RDS中不是100%兼容,执行过程有可能报各种错误,试图根据脚本提示找到错误提示的规律,
因为文件特别大,解决了几个之后,问题处理起来特别慢,处理了几个,也没有发现明显的规律。
2.3结构脚本和数据脚本分开
尝试先迁移结构,根据测试,结构迁移成功。第二步,单独迁移数据时,还是发生脚本错误。
也曾经试图将错误范围缩小,最终因为个别单表数据量大,问题很难排查。
解决这个问题也曾陷入迷茫,不知道接下来如何处理。也曾忽略错误,个别表会少导入几十条数据。
2.4不忘初心
每当陷入解决问题瓶颈的时候,我都告诫自己,不忘初心,回到原点思考问题。我们的目的有两个:一是尽可能减少服务暂停时间;
二是保证数据安全的情况下,成功迁移数据。
通过先迁移结构,再迁移数据,可以减少服务暂停时间;rds是阿里云的产品,查看其官方文档,看看有没有解决方案。
看到“数据迁移同步”字样,我想我接近答案了。重新整理思路,
创建迁移任务界面
有了思路,就是测试了,经过一步一步测试,最终成功迁移数据库。我使用的是全量迁移,该工具还支持增量迁移。
该工具还是非常好用的,特此整理,以备查阅。