支持的源和目标数据库
支持的源和目标数据库如下表:
源数据库 | 目标数据库 |
---|---|
自建SQL Server、RDS for SQL Server 2016 标准版/2016 企业版 /2019 标准版/2019 企业版 /2022 标准版/2022 企业版 |
RDS for SQL Server 2016 标准版/2016 企业版 /2019 标准版/2019 企业版 /2022 标准版/2022 企业版 |
说明
源数据库版本不得高于目标数据库版本。
支持的迁移对象及SQL
迁移对象
-
结构迁移支持的对象:
- 数据库、模式、分区表、索引、约束(外键、唯一、排他)、视图、存储过程、函数、触发器。
-
支持的字段类型:
- TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、SMALLDATETIME、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。
-
不支持的字段类型:
- SQL_VARIANT、GEOMETRY、GEOGRAPHY。
-
不支持用户自定义列。
注意事项
- 每次至多迁移一个库(DATABASE),迁移多个库需要创建多个DTS任务。
- 模式:不支持系统模式的迁移。
- 表:不支持临时表的迁移,表的索引、约束会一起迁移,表的触发器,历史表关系等在全量完成之后迁移。
- 映射规则:暂不支持名称映射。
- 迁移对象中如果存在包含text、image类型大字段的表,建议创建大规格及以上规格的DTS实例进行迁移,否则可能会导致 OOM。
- 如需进行增量迁移,请先禁用目标数据库中已启用的触发器和外键,否则可能会导致迁移任务失败或数据不一致。
增量数据迁移支持的SQL操作
- DML
INSERT、UPDATE、DELETE。 - DDL
暂不支持DDL。
数据库账号及权限
数据库 所需权限 参考赋权语句 源库
全量迁移:
需要具备sysadmin、db_owner、db_datareader、db_datawriter的其中一个角色权限。
增量迁移:
需要具备sysadmin角色的权限。
授予用户sysadmin角色权限:
ALTER SERVER ROLE sysadmin ADD MEMBER 用户名;
授予用户db_datareader角色权限:
ALTER SERVER ROLE db_datareader ADD MEMBER 用户名;
授予用户db_datawriter角色权限:
ALTER SERVER ROLE db_datawriter ADD MEMBER 用户名;
目标库
目标库为天翼云RDS for SQL Server
客户配置迁移实例的目标库连接时只需要填入普通用户即可,DTS会自动创建数据库并将该数据库的db_owner权限授予配置的用户。
目标库为自建库或其他云数据库
需要具备sysadmin角色权限。
目标库为天翼云RDS for SQL Server
无需额外进行赋权,DTS会自动创建数据库并将该数据库的db_owner权限授予配置的连接目标库的普通用户。
目标库为自建库或其他云数据库时,授予用户sysadmin角色权限:
ALTER SERVER ROLE sysadmin ADD MEMBER 用户名;
注意当目标库为天翼云RDS SQL Server时,客户配置迁移实例的目标数据库连接时只需要填入普通用户即可,DTS会自动创建数据库并将该数据库的db owner权限授予配置的用户。
操作须知
DTS迁移过程一般包含四个阶段:预检查阶段、结构迁移阶段、全量阶段、增量阶段。为了确保数据迁移各个阶段的平顺,在创建迁移任务前,请务必阅读以下使用须知。
- 如迁移对象为表级别,则单次迁移任务仅支持迁移最多3000张表。当超出数量限制,任务会在提交后会请求报错。如果遇到这种情形,建议您拆分待迁移的表,分批配置成多个任务,或者配置为整库迁移。
- 目标库关联RDS数据库的字符集必须与源数据库一致。
- 目标库若已存在行数据,DTS在增量迁移过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在迁移前需要用户自行判断数据是否需要清除,建议用户在迁移前自行清空目标库。
- 目标实例及关联RDS实例的运行状态必须正常,若关联RDS实例是主备实例,复制状态也必须正常。
- 目标库关联RDS实例必须有足够的磁盘空间,建议至少为待迁移数据量的2.5倍。(全量数据迁移会并发执行 INSERT 操作,导致目标数据库的表产生碎片,因此全量迁移完成后目标数据库的表存储空间会比源实例的表存储空间大)。
- SQL Server的TIMESTAMP类型字段不能显式赋值,只能自动生成,所以目标库库的TIMESTAMP值自动生成,跟源库的字段值存在差异。
- 增量迁移时,cdc机制会在源库的cdc这个schema下产生一些数据库对象,请勿操作,否则影响增量迁移/同步。
- 在任务启动、任务全量迁移阶段,不建议对源数据库做删除类型的DDL操作,这样可能会引起任务迁移失败。
- 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
- 迁移过程中,不允许对源库需要迁移的表结构进行修改。
- 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
- 增量迁移场景下,不支持源数据库进行恢复操作。
- 增量迁移场景下,不支持无主键表的数据增量迁移,因为无主键表的增量迁移性能远低于有主键的表,而且不能保证数据的一致性。
操作步骤
1、购买DTS数据迁移实例。
在管理控制台点击“创建实例”进入订购页面,“实例类型”选择“数据迁移”,“目标库实例”的“数据库类型”选择SQLSERVER,选择实例或输入IP地址、端口,完成其他信息的填写并完成购买。
说明迁移前请您详细阅读快速入门-准备工作概览-网络准备章节内容,了解并做好网络方面的准备工作。
2、进入实例配置页面。
DTS实例购买成功后,进入【数据迁移】实例列表页面,上一步骤购买成功的实例在实例列表中显示状态为“待配置”,进入实例配置页面的操作分两种情况:
- 当DTS实例的网络接入类型为“公网EIP”时,请先点击“绑定弹性IP”按钮完成公网弹性IP的绑定,然后点击该实例操作列的“实例配置”按钮。
- 当DTS实例网络接入类型为“VPC网络”时,直接点击该实例操作列的“实例配置”按钮。
3、配置源库及目标库信息。
进入实例配置第一个步骤的【配置源库及目标库信息】页面,填入源库与目标库的相关配置信息,包括数据库类型、IP地址端口、数据库账号、数据库密码等信息。
完成上述信息的填写后,点击源数据库和目标数据库的“测试连接”按钮进行数据库连接测试,检查数据库能否正常连接。
4、配置迁移对象及高级配置。
源库和目标库连通性测试成功后,点下一步按钮,进入实例配置第二个步骤的【配置迁移对象及高级配置】页面,在“源库对象”中选择要迁移的源库对象,包含:库、TABLE、VIEW、FUNCTION等,选中后点击“>”按钮,将待迁移对象移动到“已选择对象”中。
说明关于配置迁移对象及高级配置页面的详细说明,请参考数据传输服务 - 用户指南 - 数据迁移 - 实例配置和实例编辑 - 配置迁移实例文档中配置迁移对象及高级配置详细说明。
5、预检查和启动迁移。
完成迁移对象和高级配置后,点击“下一步预检查”,进入实例配置第三个步骤的【预检查】页面。预检查会检查如下列表信息,并给出检查结果,用户可以依据检查结果进行下一步操作。
检查项 检查内容 目标库用户权限检查 检查目标库用于DTS任务的用户是否具有相应的权限。
源库用户权限检查 检查源库用于DTS任务的用户是否具有相应的权限。 SQLSERVER版本检查 检查源库和目标库的SQLSERVER版本是不是符合要求。 源库迁移对象依赖检查 检查源库中的视图、函数、存储过程、触发器依赖对象是否被选中。 SQLSERVER源库数据库名称校验 校验源数据库迁移对象的库名、架构名、表名是否只包含如下字符:字母、数字、下划线和中划线。 SQLSERVER源数据库特殊字符检查 校验源数据库对象名是否存在不支持的特殊字符:非ASCII字符、“. ”、 “>”、 “<”、 “\\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “\"”和 “'”"。 SQLSERVER源库库名长度校验 校验源数据库库名是否超过64位。 历史表检查 源库中是否存在未勾选的历史表。 SQLSERVER代理运行状态检查 校验源数据库代理是否启动。 数据库服务器名称和所在操作系统的名称是否一致 检查SQLSERVER的数据库服务器名称和所在操作系统的名称是否一致。 源库字段类型检查 检查源库中是否包含SQL_VARIANT、GEOMETRY、GEOGRAPHY字段类型。 同名对象存在性检查 检查目标库中是否存在和待迁移库同名的库,若存在,再检查目标库中是否存在和待迁移库同名的架构,若存在,检查该库下面是否存在同名的表、视图、函数和存储过程等。 SQLSERVER源数据库恢复模式检查 校验源数据库是否存在备份恢复模式不是FULL的数据库。 SQLSERVER源数据库是否是否存在被禁用的聚集索引 校验源数据库是否存在被禁用的聚集索引。 循环表检查 检查待迁移对象中是否存在外键循环依赖表。 待迁移表主键检查 检查待迁移表是否都存在主键。 SQLSERVER源数据库是否存在加密的数据库对象 校验源数据库是否存在加密的数据库对象。 源库对象存在性检查 检查源库中是否存在已勾选的对象。 约束完整性检查 检查待迁移对象中所有表的约束外键所属对象是否被选中。 循环依赖检查 检查待迁移对象中是否存在外键循环依赖表。
如果预检查通过,可点击【预检查】页面底部的“启动迁移”按钮,开始迁移任务。