SQLServer CDC 数据通过 Kafka connect 实时同步至分析型数据库 AnalyticDB For PostgreSQL 及 OSS
背景
SQLServer 为实时更新数据同步提供了 CDC 机制, 类似于 MySQL 的 binlog, 将数据更新操作维护到一张 CDC 表中.
开启 cdc 的源表在插入 INSERT, 更新 UPDATE 和删除 DELETE 活动时会插入数据到日志表中. cdc 通过捕获进程将变更数据捕获到变更表中, 通过 cdc 提供的查询函数, 可以捕获这部分数据.
CDC 的使用条件
1.SQL server 2008 及以上的企业版, 开发版和评估版;
2. 需要开启代理服务 (作业).
3.CDC 需要业务库之外的额外的磁盘空间.
4.CDC 的表需要主键或者唯一主键.
图 1:Sqlserver CDC 原理
ADB4PG Sink 使用条件
需要提前使用建表语句, 在 ADB4PG 端建表, 系统不会自动创建 (如果有需要可以加这部分功能)
每张表需要有主键或唯一主键
当前支持的数据格式: INTEGER,BIGINT,SMALLINT,NUMERIC,DECIMAL,REAL,DOUBLEPERICISION,BOOLEAN,DATE,TIMESTAMP,VARCHAR
环境准备
SQLServer 环境准备
已有自建 SQLServer 或云上 RDS 实例 (示例使用云上 RDS SQLServer 实例)
已有 Windows 环境, 并安装 SSMS(SQL Server Management Studio), 部分命令需要在 SSMS 执行
SQLServer 环境建表
-- 创建源表create database connect
GO
useconnect
GO
create table t1
(
aintNOT NULL PRIMARY KEY,
b BIGINT,
c SMALLINT,
d REAL,
e FLOAT,
f DATETIME,
g VARCHAR
);
-- 开启 db 级的 cdc
sp_rds_cdc_enable_db
-- 验证数据库是否开启 cdc 成功
select * from sys.databases where is_cdc_enabled = 1
-- 对源表开启 cdc
exec sp_cdc_enable_table @source_schema='dbo', @source_name='t1', @role_name=null;
ADB4PG 端创建目标表CREATE DATABASE connect;
create table t1
(
aintNOT NULL PRIMARY KEY,
b BIGINT,
c SMALLINT,
d REAL,
e FLOAT,
f TIMESTAMP,
g VARCHAR
<