kafka实时读取sqlserver数据_SQLServer CDC 数据通过 Kafka connect 实时同步至分析型数据库 AnalyticDB For PostgreSQL 及 OSS...

该博客介绍了如何使用SQLServer的CDC功能配合Kafka Connect,实现实时从SQLServer同步数据到AnalyticDB For PostgreSQL和OSS。详细步骤包括SQLServer CDC的开启、ADB4PG的目标表创建、Kafka环境的配置以及Kafka Connect的安装和配置。最后,展示了在ADB4PG和OSS中查看同步数据的方法。
摘要由CSDN通过智能技术生成

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

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好,这是一个关于使用Kafka和MySQL的Binlog实时同步数据到SQL Server的指南。以下是我对此的简要概述: 首先,你需要在MySQL数据库中启用Binlog日志。这可以通过修改MySQL配置文件来完成。确保在MySQL的配置文件(my.cnf)中添加以下行: ``` log-bin=mysql-bin binlog-format=ROW ``` 接下来,你需要编写一个Java程序,它将监听MySQL Binlog,并使用Kafka数据发送到另一个应用程序,该应用程序将数据写入SQL Server。你可以使用Debezium来监听MySQL Binlog,并将数据发送到Kafka。 在你的Spring Boot项目中添加Debezium依赖: ```xml <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-core</artifactId> <version>1.5.0.Final</version> </dependency> ``` 然后配置Debezium连接到MySQL: ```properties debezium.connector.name=mysql-connector debezium.connector.class=io.debezium.connector.mysql.MySqlConnector debezium.tasks.max=1 debezium.offset.storage=org.apache.kafka.connect.storage.FileOffsetBackingStore debezium.offset.storage.file.filename=/path/to/offset/file.dat debezium.offset.flush.interval.ms=60000 debezium.database.hostname=localhost debezium.database.port=3306 debezium.database.user=mysqluser debezium.database.password=mysqlpassword debezium.database.server.id=1 debezium.database.server.name=mysql1 debezium.database.history.kafka.bootstrap.servers=localhost:9092 debezium.database.history.kafka.topic=schema-changes.mysql debezium.table.whitelist=mydatabase.* ``` 这将使Debezium监听MySQL数据库中的所有表更改,并将更改发送到Kafka主题“mydatabase”。你可以在你的应用程序中消费主题,将数据写入SQL Server。 希望这能帮助到你开始实现这个功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值