阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。

作者:洪鹏飞(鸿冥)



阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。

点击立即体验DTS SQL Server迁移、同步链路




一、导读

SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。


二、DTS SQL Server逻辑增量能力介绍

为了满足各种数据源和数据结构要求和限制,DTS 提供了如下三种模式来实现逻辑增量能力:

1)基于原生日志解析模式。

2)混合式日志解析模式。

3)轮询查询CDC模式。

基于原生日志解析模式

架构

基于原生日志解析模式中,主要包含四大组件,详细架构设计如下:

1)meta引擎:通过系统基表初始化和实时跟新结构信息。

2)日志抓取引擎:使用 fn_dblog、fn_dump_dblog 抓取日志。

3)事务引擎:聚合相同事务变更,对提交事务进行预处理。

4)日志解析引擎:对 DML 事务解析成通用增量记录;对DDL事务通过meta引擎更新结构信息。

image.png

限制

1)需要借助 fn_dblog、fn_dump_dblog 函数抓取日志。

2)需要 sysadmin 角色执行 fn_dblog 函数。

3)不支持堆表、压缩表、计算列表等等属性表。


混合式日志解析模式

在基于原生日志解析模式基础上,混合式日志解析模式增加了 CDC 反差引擎。DTS对抓取到的增量变更和对应变更表结构,自适应选择日志解析引擎和 CDC 反差引擎,实现增量数据捕获,详细设计架构如下:

image.png

限制

1)需要源库支持开启 CDC 能力。

2)需要提供 fn_dblog、 fn_dump_dblog函数。

2)需要 sysadmin 角色执行 fn_dblog 函数和开启库级别CDC。


轮询查询CDC模式

轮询查询 CDC 模式中,主要包含三大组件:

1)增量事件驱动:捕获源库变更事务信息来驱动 CDC Instance 获取增量变更。

2)增量数据获取:CDC Instance 反差获取指定表的范围增量数据。

3)事务引擎:CDC Instance 反差结果进行事务聚合和事务排序。

限制

1)需要源库支持开启 CDC 的能力。

2)待迁移表不建议超过 1000 张表。

3)增量延迟在10秒左右波动,数据同步实时性较差。


三、常见问题解答

  1. SQL Server中基于原生日志解析、混合式日志解析、轮询查询CDC三种获取增量的模式有什么区别?

基于原生日志解析模式:使用 fn_dblog 抓取、解析原生日志实现增量数据捕获。该模式不依赖源库CDC能力,对源库侵入较小,但是不支持堆表、计算列表等属性表。

混合式日志解析模式:使用 fn_dblog 抓取原生日志作为增量数据捕获驱动,根据表属性不同,自适应驱动日志解析引擎和 CDC 反差引擎。该模式需要开启源库库级 CDC 和部分表 CDC,对源库有一定侵入。

轮询查询CDC模式:该模式需要开启 DTS 待同步所有表的 CDC,通过轮询查询的方式获取源库增量数据。该模式依赖原生 CDC 组件能力,对源库有较大侵入,但是能移除对原生日志解析和混合式日志解析模式对 sysadmin 角色要求和对 fn_dblog 函数依赖等问题,能支持 Azure SQL 和 AWS RDS SQL Server数据库的增量数据捕获。


  1. DTS是否支持 Azure SQL DB、Azure SQL MI、Azure SQL VM、AWS RDS SQL Server 等数据源?

DTS 提供了轮询查询 CDC 模式来获取增量,它通过源库 CDC 组件能力来实现增量数据捕获,能支持Azure SQL DB、Azure SQL MI、Azure SQL VM、AWS RDS SQL Server 等数据源接入。


  1. SQL Server 到 PolarDB-MySQL、ADB-MySQL、ADB-PG 等异构数据库是否支持DDL?

DTS增量支持异构数据库常见 DDL 同步。如上三种增量模式,DTS都会在源库创建 trigger 来捕获原生 DDL,通过语法文件解析原始 DDL语句并映射到目标语法结构,实现异构数据库的 DDL 同步。详细支持语法类型见:

  1. SQL Server -> PolarDB-MySQL:https://help.aliyun.com/zh/dts/user-guide/synchronize-data-from-a-self-managed-sql-server-database-to-a-polardb-for-mysql-cluster
  2. SQL Server -> ADB-MySQL:https://help.aliyun.com/zh/dts/user-guide/synchronize-data-from-an-apsaradb-rds-for-sql-server-instance-to-an-analyticdb-for-mysql-v3-0-cluster


  1. DTS是否支持 AlwaysOn 架构只读节点接入?

仅基于原生日志解析模式支持 AlwaysOn 架构主节点和只读节点接入。但是针对只读节点,DTS无法在源库创建 trigger 和维护心跳表。其中无法创建 trigger 可能会影响 DDL 同步的准确性,无法维护心跳表会影响 DTS 位点汇报。建议使用可写节点接入。


  1. 如果源库 VLF 备份截断了,DTS是否支持通过抓取备份日志实现断点续传?
  1. 针对自建SQL Server,如果备份日志在源实例本地有保存,DTS支持使用 fn_dump_dblog 函数抓取、解析备份日志。
  2. 针对阿里云 RDS SQL Server,DTS 支持从阿里云 OSS 上抓取、解析备份日志。
  3. 其他数据源不支持备份日志抓取和解析。


  1. DTS什么时间在源库创建的资源?什么时间释放这些资源?

客户配置任务,预检查启动任务通过后,DTS 会启动前置模块在源库创建资源。等待客户完成或释放该任务,且没有同源在运行的任务,DTS会启动后置模块来释放资源。


四、快来关注

  1. 数据传输服务(Data Transmission Service,简称DTS)支持关系型数据库、NoSQL、大数据(OLAP)等数据源,集数据迁移、订阅、实时同步、校验功能于一体,能够解决公共云、混合云场景下,远距离、秒级异步数据传输难题。其底层基础设施采用阿里双11异地多活架构,为数千下游应用提供实时数据流,已在线上稳定运行7年之久,是一款沉淀了丰富实践经验的可靠产品。点击了解更多DTS相关信息
  2. 欢迎加入钉群讨论交流:

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
阿里云DTS踩坑经验分享系列|DTS SelectDB链路最佳实践
大数据时代背景下,高效的数据流转与实时分析能力对于企业的竞争力至关重要。阿里云数据传输服务DTS与SelectDB联合,为用户提供了简单、实时、极速且低成本的事务数据分析方案。用户可以通过 DTS 数据传输服务,一键将自建 MySQL/PostgreSQL、RDS MySQL/PostgreSQL、PolarDB for MySQL/PostgreSQL 数据库,迁移或同步至阿里云数据库 SelectDB 的实例中,帮助企业在短时间内完成数据迁移或同步,并即时获得深度洞察。
271 3
|
4月前
|
存储 数据采集 监控
阿里云DTS踩坑经验分享系列|SLS同步至ClickHouse集群
作为强大的日志服务引擎,SLS 积累了用户海量的数据。为了实现数据的自由流通,DTS 开发了以 SLS 为源的数据同步插件。目前,该插件已经支持将数据从 SLS 同步到 ClickHouse。通过这条高效的同步链路,客户不仅能够利用 SLS 卓越的数据采集和处理能力,还能够充分发挥 ClickHouse 在数据分析和查询性能方面的优势,帮助企业显著提高数据查询速度,同时有效降低存储成本,从而在数据驱动决策和资源优化配置上取得更大成效。
237 9
|
5月前
|
弹性计算 安全 容灾
阿里云DTS踩坑经验分享系列|使用VPC数据通道解决网络冲突问题
阿里云DTS作为数据世界高速传输通道的建造者,每周为您分享一个避坑技巧,助力数据之旅更加快捷、便利、安全。本文介绍如何使用VPC数据通道解决网络冲突问题。
233 0
|
7月前
|
SQL 机器学习/深度学习 自然语言处理
Text-to-SQL技术演进 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法剖析
本文主要介绍了阿里云OpenSearch在Text-to-SQL任务中的最新进展和技术细节。
|
7月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
535 2
|
9月前
|
SQL JSON 数据库
influxdb 端点使用http进行sql查询,写数据
influxdb 端点使用http进行sql查询,写数据
350 0
|
6月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
6月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
6月前
|
SQL
使用SQL进行集合查询和数据维护
使用SQL进行集合查询和数据维护
72 0
|
8月前
|
SQL 存储 分布式计算