最近有一个需求,需要将SQL Server rds从阿里云香港区域迁移到杭州区,整理一下迁移可行方案及优缺点对比。
迁移方案 | 主要操作方法 | 优点 | 缺点 |
---|---|---|---|
SQL Server自带导入导出工具 | 找一台能连通源和目标环境的客户端环境,利用SQL Server自带导入导出工具迁移 | 1. 适合只需要迁移表,表数量不多且数据量较小的环境。 2. 操作简单且不依赖其他工具。 | 1. 不适合对象类型多,表多或表数据量比较大的环境 2. 停机时间长 3. 逻辑迁移经常会遇到奇奇怪怪的报错 |
阿里云跨区域备份 | 备份 如何使用RDS的跨地域备份数据功能_关系型数据库-阿里云帮助中心 恢复 | 1. 物理备份和恢复,速度比逻辑迁移快,且不容易出错。 2. 可直接将备份文件落在指定区域oss,不需额外申请oss权限并手动传输数据文件 | 1. 该功能额外收费,且备份文件至少要保留7天,关闭不会自动删除备份文件。一旦开启并备份必须至少要付7天的备份文件保留费用 2. 目前只能用跨区域备份文件还原出新实例,不支持还原到已有实例(虽然界面上可以选,但是后端还没开发完),使用场景有限 3. 数据库较大时停机时间较长 |
通过OSS手动迁移 | 1. 阿里云目前支持免费下载rds备份文件,可以下载至本机 2. 在目标区域创建私有oss,将备份文件上传至oss 3. 在目标rds通过oss中的备份文件还原数据库 | 1. 物理备份和恢复,不容易出错 2. 思路和操作都简单,与平常备份恢复数据库相同 | 1. 备份文件上传下载相当耗时(测试香港区域下载2G备份文件需1小时,上传至杭州oss也将近1小时),对生产环境迁移基本不可接受。 2. 还原前阿里云需要将备份文件从我们的oss再复制到rds对应oss,然后才开始还原。如果备份文件较大,这步也会相当耗时(测试2G备份文件约复制5分钟) 3. 还原后阿里云设置必须进行DBCC CHECK,如果数据库大,这步也会相当耗时 4. 综上,停机时间相当长 |
阿里云DTS | 1. 支持增量迁移,停机时间短 2. 支持rds跨区域迁移 | 1. DTS是数据迁移而不是数据库迁移,在迁移序列/标识列、触发器等对象时不够友好 2. rds跨区域迁移需要源库有外网ip,可能有安全隐患 3. 速度慢,亿级表全量同步需要超过1天,单表不支持并行同步数据,对于大库难以接受。 4. 全量迁移期间报错万一需要重启任务,只能从头开始,对于大库简直是噩梦。 5. 全量迁移期间不可备份日志文件,可能会导致日志文件非常大。 6. DTS不支持Alwayson、FCI实例作为源库,目前只能支持通过手动增量备份上云。 7. DTS总有奇奇怪怪的bug,而且每次相同的操作可能还会遇到不同的报错 |