跳到主要内容

SQLServer

支持的对端数据源及功能

请选择对端数据源,文档相关内容会根据对端数据源不同而调整。

选择对端:

核心能力

功能SQLServer
结构迁移

全量数据迁移

增量实时同步

数据校验

数据订正

DDL实时同步

增/减列

使用限制与注意点

说明
迁移与同步

待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据,例如无主键表的迁移与同步

CDC表磁盘占用

CDC 表也是一张普通的表它和用户共享同一个数据空间。为了防止 CDC 表数据无限膨胀 SQL Server 会每天定时执行清理作业,清理过期的数据(具体时间视数据库配置而定)

大字段类型

如果 TEXT、NTEXT、VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX)、XML、IMAGE 类型字段中内容大小超过 65536 将会引发 CDC 分析报错。此时需要执行下面 SQL 设置为不限制大小

  • exec sp_configure 'max text repl size', -1;
CDC表数据保留时间

如果需要位点回溯,需要确保当时时刻的变更事件关联的CDC表存在。可以执行这条 SQL 来增加 CDC 数据的保存时间,代价是这些数据需要存放到数据库表中,如果每日数据变更很多对磁盘开销会有额外的要求。

  • execute sys.sp_cdc_change_job @job_type = n'cleanup', @retention = 4320
  • msdb.dbo.cdc_jobs 表中保存了具体 捕获任务的数据保存时间
SQL SERVER 代理作业

SQL SERVER 代理执行作业出现异常导致 CDC 分析中断

  • SQL SERVER 日志文件是循环利用长时间中断可能导致 ldf 日志被覆盖,可能造成变更记录丢失
任务异常/暂停

长时间暂停未同步的数据在 CDC 表中被清理也可造成数据丢失,参考:CDC表数据保留时间

同步 DDL 模式下
  • 源端 TABLE 只能被订阅一次,判定依据为待同步的表不能存有任何 CDC 捕获
  • CloudCanal 当检测到 DDL 变化后会重建 CDC 表,因此不能和其它工具共享 CDC 捕获表
  • 若想实现 1 对多订阅需要借助类似 MySQL / Kafka 进行数据中转
同步 DDL 支持性

对列进行改名或者删除重新添加列会有中断 CDC 的风险

字段类型与映射

SQLServerSQLServer
BIGINTBIGINT
BINARYBINARY
BITBIT
CHARCHAR
DATEDATE
DATETIMEDATETIME
DATETIME2DATETIME2
DATETIMEOFFSETDATETIMEOFFSET
DECIMALDECIMAL
FLOATFLOAT
IMAGEIMAGE
INTINT
MONEYMONEY
NCHARNCHAR
NTEXTNTEXT
NUMERICNUMERIC
NVARCHARNVARCHAR
REALREAL
ROWVERSIONROWVERSION
SMALLDATETIMESMALLDATETIME
SMALLINTSMALLINT
SMALLMONEYSMALLMONEY
TEXTTEXT
TIMETIME
TIMESTAMPTIMESTAMP
TINYINTTINYINT
UNIQUEIDENTIFIERUNIQUEIDENTIFIER
VARBINARYVARBINARY
VARCHARVARCHAR
XMLXML
sysnamesysname
SQL_VARIANTSQL_VARIANT
GEOGRAPHYGEOGRAPHY
GEOMETRYGEOMETRY
HIERARCHYIDHIERARCHYID

必要条件

必要条件说明
账号权限见:SQLserver需要的权限
SQLServer CDC
  • 增量需要开启SQLServer CDC代理
  • 例如:exec console.sys.sp_cdc_enable_db

数据源添加参数说明

项名称说明
网络地址类型分为内网地址和外网地址。一个数据源可以包含一个内网地址和一个外网地址。网络地址格式为ip地址和port。默认添加的为内网地址,需要添加外网地址可以点击右侧+号
认证方式支持选择不同的认证方式,例如有账号无密码或者无账号无密码
账号数据库服务端账号
密码数据库服务端密码
描述非必填项,填写描述信息,方便管理数据源
物理位置物理位置仅仅是一个标记,在管理多地域数据库时方便识别

常用源端任务参数

参数名称说明
filterDDL设置为 true 时将不会同步源端产生的DDL SQL
scanParallel全量阶段:源端并发扫描表数量、增量阶段:源端并发扫描 CDC 表的数量
maxTxsPerIteration增量单次最大获取多少事务数
iterateIntervalMs单次循环最大等待时间(设置为 true 时有效)

Tips: 所有数据源均有的通用参数配置请参考 通用参数配置

参考资料

链路创建示例