背景
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
use connect
GO
create table t1
(
a int NOT 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
(
a int NOT NULL PRIMARY KEY,
b BIGINT,
c SMALLINT,
d REAL,
e FLOAT,
f TI