一、 注意事项
- 自建SQL Server版本为2008、2008 R2、2012、2014、2016或2017
- 待迁移的表需有主键或唯一非空索引,否则预检查会报错
- RDS SQL Server的存储空间须大于自建SQL Server占用的存储空间
- 需要双向开通自建SQL Server到DTS服务器的防火墙1433端口策略,rds SqlServer需添加对应DTS服务器网段白名单策略(RDS → RDS不需要),DTS服务器网段参考 https://help.aliyun.com/document_detail/84900.htm?spm=a2c4g.11186623.2.15.306364f2QNXyYr#concept-1340353
- 源库设置为full模式,需要先做过一次全备及日志备份
- DTS会在目标库创建心跳表 dts_log_heart_beat,保证增量数据迁移延迟显示的准确性
- 目前DTS支持结构迁移的对象为表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、plan guide、自定义类型、rule和default。
- 迁移前需要禁用目标库外键,因为迁移时插入顺序不固定,可能会导致子表插入报错,丢失数据
- 全量迁移期间停日志备份,必须注意全量迁移所需时间,避免日志过大
- 全量迁移期间禁止ddl操作
- 增量迁移不支持迁移触发器
二、 数据迁移限制
- DTS不支持Alwayson、FCI实例作为源库,目前只能支持通过手动增量备份上云(实测支持)
- 不支持assemblies、service broker、全文索引、全文目录、分布式schema、分布式函数、CLR存储过程、CLR标量函数、CLR表值函数、内部表、系统、聚合函数的结构迁移
- 不支持迁移数据类型为sql_variant的数据
- 不支持迁移含有计算列的表
三、 迁移步骤
1. 准备工作
自建SQL Server版本、配置、使用功能、业务所需权限等RDS是否能满足,RDS价格如何
自建SQL Server数据量有多大、表有多大
梳理库中的待迁移对象,是否有不支持的类型,是否存在无主键表,是否存在有外键表
源库设置为full模式,先做过一次全备及日志备份
申请防火墙策略,添加白名单策略
2. 数据迁移
- 如果存在有外键表,第一次只迁移表结构,迁移后禁用目标库外键
- 如果存在触发器,不利用DTS迁移,切换后手动创建
- 全量迁移期间停日志备份,禁止ddl操作
- 执行全量+增量迁移,增量迁移基本无延迟后启用日志备份
- 重要业务应该进行功能及性能测试验证
3. 业务切换至新库
- 业务方停应用
- 杀数据库中残留的用户进程,把源库改成只读模式
- 再次检查一遍数据库中的进程,确认dts同步状态没有延迟
- 业务方切应用到新库,验证功能
参考
https://help.aliyun.com/document_detail/34357.htm?spm=a2c4g.11186623.2.9.1538578e2WPwJm#concept-287101
https://help.aliyun.com/document_detail/95736.html?spm=a2c4g.11186623.6.880.a3084621ZVytbo