新增SQL Server实时采集

本节介绍如何在实时计算中配置SQL Server实时采集任务。

当前实时开发中目前区分为「SQLServer」和「SQLServer JDBC」两种数据源,当用户选择「SQLServer」时,支持通过间隔轮询方式进行实时采集;当用户选择「SQLServer JDBC」时,支持通过CDC日志进行实时采集。

实时采集-参数配置

image.png
配置 说明

数据源

选择对应数据类型的已有数据源

Schema

选择数据源下指定Schema

是否分表

勾选,可以设置多对多分表写入;

选择数据源表,支持多表合并写入一张表;
多表合并写入时,无法保证完全根据业务顺序写入;

采集起点

用户可选择从任务运行时开始、按时间选择、按文件选择三种采集起点
从任务运行时开始:任务提交处于"运行中"时,开始实时采集;
按时间选择:以用户选择的时间作为采集起点(非完全精准);
从指定的LSN开始采集:用户需手动查询SQL Server数据库中LSN信息并进行填入,系统自动以该点开始进行实时采集

数据操作

支持Insert、Update、Delete三种数据操作类型选择,当发生insert、update等操作时,实时采集组件可根据Binlog等信息立即获取其操作,并实时将变更信息同步至目标数据源

格式转换

勾选后,系统将会多层嵌套格式的JSON分解为单层结构,例如:{"a":1, "b": {"c":3}},将会被分解为:{"a":1,"b_c":3}

操作步骤

具体操作可参考快速开始中的 实时采集

SQL Server 如何开启CDC

SQL Server自2008版本开始支持CDC(变更数据捕获)功能,但若想使用SQL Server CDC实时采集插件需SQL Server版本为2017及以上,本文基于SQL Server 2017编写。
  1. 查询SQL Server数据库版本
    SQL:SELECT @@VERSION
    结果:
    2020 08 19 09 54 19

  2. 查询当前用户权限,必须为 sysadmin 固定服务器角色的成员才允许对数据库启用CDC(变更数据捕获)功能
    SQL:exec sp_helpsrvrolemember 'sysadmin
    结果:
    2020 08 19 09 59 04

  3. 查询数据库是否已经启用CDC(变更数据捕获)功能
    SQL:select is_cdc_enabled, name from sys.databases where name = 'tudou'
    结果:
    2020 08 19 10 00 13
    0:未启用;1:启用

  4. 对数据库数据库启用CDC(变更数据捕获)功能

USE tudou
GO
EXEC sys.sp_cdc_enable_db
GO
  1. 重复第三步操作,确认数据库已经启用CDC(变更数据捕获)功能。

  2. 查询表是否已经启用CDC(变更数据捕获)功能
    SQL:select name,is_tracked_by_cdc from sys.tables where name = 'test'
    结果:
    2020 08 19 10 04 20
    0:未启用;1:启用

  3. 对表启用CDC(变更数据捕获)功能

EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'test',
@role_name = NULL,
@supports_net_changes = 0;

source_schema:表所在的schema名称
source_name:表名
role_name:访问控制角色名称,此处为null不设置访问控制
supports_net_changes:是否为捕获实例生成一个净更改函数,0:否;1:是

重复第五步操作,确认表已经启用CDC(变更数据捕获)功能。
至此,表 test 启动CDC(变更数据捕获)功能配置完成。

参考阅读:https://docs.microsoft.com/zh-cn/sql/relational-databases/track-changes/enable-and-disable-change-data-capture-sql-server?view=sql-server-2017s