云数据库 SQL Server 使用说明(数据同步 DTS )

这篇说说腾讯云DTS对SQL Server的数据同步能力,涵盖源/目标端类型、支持的数据类型、同步限制及权限要求,并说明同步会占用源库资源,建议在业务低峰期执行。 同步类型:支持结构、全量、增量同步,不支持DDL、触发器及外键迁移。 数据类型:支持整数、精确/近似数值、字符串、二进制、日期时间等类型,不支持sql_variant等特殊类型。 限制与影响:开启CDC会锁表并占用存储,表超1000或库超10个建议改用迁移。

相关产品
云数据库 SQL Server 产品页,含版本规格、价格与购买入口。

一、数据同步可行性

类别 说明
源端/目标端类型 源端类型:自建数据库(IDC 自建、CVM 自建)SQL Server 2008R2、2012、2014、2016、2017、2019、2022、2025。说明:若你需要将自建数据库迁移上云,推荐使用 DTS 迁移功能,会更加稳定,操作请参见 迁移操作指导。第三方云厂商 SQL Server 2008R2、2012、2014、2016、2017、2019、2022、2025。云数据库 (同账号、跨账号)SQL Server 2008R2、2012、2014、2016、2017、2019、2022、2025。目标端类型:云数据库 (同账号、跨账号)SQL Server 2008R2、2012、2014、2016、2017、2019、2022、2025。
同步类型 支持结构、全量、增量的同步。
同步对象 支持库级别数据、表级别(用户表)数据、库表结构、主键、索引的同步。支持视图、存储过程、自定义函数、自定义数据类型、计划指南、架构的同步。支持分区函数、分区方案、分区表的全量迁移,保留分区边界值(含高精度小数、纳秒级时间戳等极端边界)、RANGE LEFT/RIGHT 方向、参数类型与精度。不支持以下参数作为分区键:time、datetimeoffset、float、real、bit、uniqueidentifier、binary、varbinary。不支持触发器的同步。
数据类型 支持的数据类型:请参见这篇中的 支持数据类型列表。不支持的数据类型:特殊类型:sql_variant,hierarchyid,geometry,geography。
源库影响 DTS 在执行数据同步时,会占用一定源端实例资源,可能会导致源实例负载上升,增加数据库自身压力。如果你的数据库配置过低,建议你在业务低峰期进行同步。开启 CDC 的相关影响:开启 CDC 过程中会短暂锁表:在系统中创建 CDC 相关表、SQL Agent 作业创建,会造成一定资源占用。长时间开启 CDC 时需注意,CDC 组件存储的增量数据默认保留3天,可能占用大量存储空间,建议使用 exec console.sys.sp_cdc_change_job @job_type = 'cleanup', @retention= <time>; 来设置保留时间。长时间开启 CDC 也会对事务日志截断造成一定影响。由于 CDC 的限制,如果表的数量大于1000,数据库的数量大于10,建议使用 数据迁移,或者备份恢复能力。CDC 作业默认最大能处理的单字段长度为64KB,若开启 CDC 的表需要写入的单字段数据超过64KB,则必须提前使用 exec sp_configure 'max text repl size', -1; 命令调整源库的配置。
目标库影响 在执行数据同步时,建议不要对目标库进行数据写入,否则可能会影响同步任务的进行,出现数据不一致风险。
权限 源端:具体云环境及权限要求请参见 多云环境支持说明。目标端:dbcreator。如果源端和目标端使用的是腾讯云的 SQL Server 实例,则可忽略此权限要求。
支持的 SQL DML:INSERT、UPDATE、DELETE。
限制 短时间内有大数据量 DML 操作的场景,因为会有延迟,所以不适合本数据同步功能。不支持外键迁移。若表里存在外键,则不会迁移到目标实例,建议在迁移后重新创建。不支持 DDL,请勿修改表结构、删除表,否则可能会导致同步任务报错。不支持单独进行结构迁移,需结构与数据一起迁移。同步过程中,请勿修改、删除源数据库和目标数据库中用户信息(包括用户名、密码和权限)和端口号,否则会导致同步任务失败。如果源表较大,全量阶段进行长时间的事务,建议打开 READ_COMMITTED_SNAPSHOT。开启 SSL 加密的实例,不能作为源实例和目标实例进行数据同步。对实例进行跨可用区迁移 / 调整实例规格 / 升级实例版本等操作,在触发了涉及数据迁移的场景时,系统库是不会迁移的,请勿在系统库下创建业务库相关数据,以免迁移后数据丢失。此外,在上述操作场景下,非标建立的系统库操作和实例级别操作不会一起进行迁移,迁移完成后需要手动处理。

二、整数类型

数据类型 说明 全量同步 增量同步
tinyint 1字节整数 (0 – 255) ✅ ✅
smallint 2字节整数 (-32,768到32,767) ✅ ✅
int 4字节整数 (-231到231-1) ✅ ✅
bigint 8字节整数 (-263到263-1) ✅ ✅

三、精确数值类型

数据类型 说明 全量同步 增量同步
decimal(p,s) 精确小数 ✅ ✅
numeric(p,s) 精确小数 (同 decimal) ✅ ✅
money 货币类型 (8字节) ✅ ✅
smallmoney 货币类型 (4字节) ✅ ✅
bit 布尔类型 (0/1/NULL) ✅ ✅

四、近似数值类型

数据类型 说明 全量同步 增量同步
float(n) 浮点数 ✅ ✅
real 单精度浮点数 ✅ ✅

五、字符串类型

数据类型 说明 全量同步 增量同步
char(n) 定长非 Unicode 字符串 ✅ ✅
varchar(n) 变长非 Unicode 字符串 ✅ ✅
varchar(max) 大文本 (最多2GB) ✅ ✅说明:CDC 作业默认最大能处理的单字段长度为64KB,若开启 CDC 的表需要写入的单字段数据超过64KB,则必须提前使用 exec sp_configure 'max text repl size', -1; 命令调整源库的配置。
text 大文本 ✅ ✅
nchar(n) 定长 Unicode 字符串 ✅ ✅
nvarchar(n) 变长 Unicode 字符串 ✅ ✅
nvarchar(max) 大 Unicode 文本 (最多2GB) ✅ ✅说明:CDC 作业默认最大能处理的单字段长度为64KB,若开启 CDC 的表需要写入的单字段数据超过64KB,则必须提前使用 exec sp_configure 'max text repl size', -1; 命令调整源库的配置。
ntext 大 Unicode 文本 ✅ ✅

六、二进制类型

数据类型 说明 全量同步 增量同步
binary(n) 定长二进制 ✅ ✅
varbinary(n) 变长二进制 ✅ ✅
varbinary(max) 大二进制 (最多2GB) ✅ ✅说明:CDC 作业默认最大能处理的单字段长度为64KB,若开启 CDC 的表需要写入的单字段数据超过64KB,则必须提前使用 exec sp_configure 'max text repl size', -1; 命令调整源库的配置。
image 大二进制 ✅ ✅说明:CDC 作业默认最大能处理的单字段长度为64KB,若开启 CDC 的表需要写入的单字段数据超过64KB,则必须提前使用 exec sp_configure 'max text repl size', -1; 命令调整源库的配置。

七、日期时间类型

数据类型 说明 全量同步 增量同步
date 日期 (0001-01-01到9999-12-31) ✅ ✅
time 时间 ✅ ✅
datetime 日期时间 (1753-01-01到9999-12-31) ✅ ✅
datetime2 高精度日期时间 ✅ ✅
smalldatetime 小型日期时间 (1900-01-01到2079-06-06) ✅ ✅
datetimeoffset 带时区的日期时间 ✅ ✅
timestamp/ rowversion 行版本控制 ⚠️ 跳过 ⚠️ 跳过

注意:说明:

注意:关于 timestamp:SQL Server 的 timestamp (即 rowversion) 是自动生成的行版本列,不允许显式 INSERT/UPDATE。DTS 在全量导出和增量同步时自动跳过该列,由目标端自行生成新值。表结构中的 timestamp 列会被正常迁移(即目标端会创建该列)。

八、特殊类型

数据类型 说明 全量同步 增量同步
uniqueidentifier GUID/UUID ✅ ✅
xml XML 数据 ✅ ✅

九、用户自定义类型

数据类型 说明 全量同步 增量同步
用户自定义数据类型 基于系统类型的别名类型 ✅ ✅

十、多云环境 CDC 支持说明

适用场景

从第三方云厂商迁移。

功能说明

·自动识别云环境。

·使用对应云厂商的 CDC 开启存储过程。

·降低权限要求,部分云环境无需 sysadmin 权限。

支持的云环境

云环境 CDC 开启方式 最低权限要求
自建 SQL Server EXEC sys.sp_cdc_enable_db 如果未开启 CDC,则最低权限要求为 sysadmin如果开启了 CDC,则最低权限要求为 db_owner
第三方云厂商 EXEC msdb.dbo.rds_cdc_db db_owner
 EXEC sp_rds_cdc_enable_db db_owner

十一、支持能力

功能大类 功能子项或说明 支持能力
断点续传 – 全量导出部分支持(结构导出、无主键表导出阶段不支持续传)。全量导入、增量支持。
同步方向 一对一 支持
 多对一(多实例合一/多表合一) 不支持
 一对多 不支持
 双向同步 不支持
 同实例内同步(仅支持一对一) 不支持

十二、HA 切换

源端 SQL Server 发生切换会导致 DTS 同步任务失败。

十三、业务影响

DTS 在执行全量数据同步时,会将源库的全量数据全部读取一次,所以会增加源库的负载。如果你的数据库规格过低,建议你在业务低峰期进行同步任务,或者在任务启动前降低 DTS 的速率。

源库的规格不同,影响也不同,以源库规格为8核16G为例,DTS 任务默认采用8线程并发(可调整),在网络无瓶颈的情况下,DTS 任务对源库的性能影响如下:

·DTS 全量导出阶段:占用源库约18% – 45%的 CPU,增加源库约40 – 60MB/s的查询压力,占用约8个活跃 session 连接数。

·DTS 增量导出阶段:对源数据库基本无压力,默认使用8个并发连接同时查询 CDC 数据。

十四、数据同步切割

DTS 在数据同步功能中提供了数据一致性校验功能,其采用静态的数据一致性校验,可帮助用户检验数据的一致性,以便更稳妥的进行业务切换。详情请参见 数据同步切割说明。

赞 (0)
上一篇 4天前
下一篇 4天前