Debezium SQL server 2017同步到kafka

本文介绍如何使用Kafka Connect与Debezium连接器实现SQL Server变更数据捕获(CDC),包括配置教程、启动流程及操作示例,如DML与DDL操作验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--启动kafka:
kafka-server-start.sh  /usr/local/kafka/config/server.properties  &
配置文件:
# vim mssql.properties
name=mssql
connector.class=io.debezium.connector.sqlserver.SqlServerConnector
tasks.max=1
database.hostname=10.19.166.249
database.port=1433
database.user=sa
database.password=Yijiupi123
database.dbname=TestDB
database.server.name=MS
database.history.kafka.topic=history.ms
database.history.kafka.bootstrap.servers=10.19.166.249:9092
table.whitelist=dbo.orders,dbo.users
#table.blacklist=
#column.blacklist=
#column.propagate.source.type=

#advanced:
#options: initial(default)initial_schema_only
snapshot.mode=initial
snapshot.locking.mode=none
poll.interval.ms=1000
max.queue.size=8192
max.batch.size=2048
heartbeat.interval.ms=0
#format:<heartbeat.topics.prefix>.<server.name>
heartbeat.topics.prefix=__debezium-heartbeat

--启动:
#connect-standalone.sh connect-standalone.properties mssql.properties &
--查看topic:
 kafka-topics.sh --list --zookeeper 10.19.166.249:2181
--在SQL的操作
DML:

EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'orders', @role_name = NULL, @supports_net_changes = 1;
insert into orders(id,orderno,product_name,product_id,product_num,order_amount,lastmodifytime)values(9,'LL001','productL',900,99.9,99.55,'2019-04-09 17:09:09');
update orders set orderno='L' where id=9;
delete from orders where id=9;

--查看JSON数据:


DDL操作验证:
新增字段:
alter table orders add isa bit not null default 1;
EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'orders', @role_name = NULL, @supports_net_changes = 0, @capture_instance = 'dbo_orders_v2';
GO

insert into orders(id,orderno,product_name,product_id,product_num,order_amount,lastmodifytime)values(10,'MM010','productM',990,10.9,10.10,'2019-04-10 19:10:10');

--查看JSON格式的数据:


参考信息:
http://www.tracefact.net/tech/087.html
https://github.com/VenuMeda/kafka-connect-cdc-mssql
https://docs.confluent.io/current/connect/kafka-connect-cdc-mssql/index.html
https://github.com/debezium/debezium-examples/tree/master/tutorial#using-sql-server

https://blog.csdn.net/singgel/article/details/86162990

 

### 配置 Debezium 连接 SQL Server 并将数据同步Kafka #### 安装必备组件 为了成功部署并运行 Debezium SQL Server Connector,需确保已安装如下软件环境[^3]: - JDK 1.8 或更高版本 - Zookeeper 版本 3.4.14 - Kafka 版本 2.12-2.2.0 及以上 - Debezium Connector for SQL Server - Confluent-Kafka-Connect-JDBC (可选) #### 启用 SQL Server 的 CDC 功能 在配置连接器之前,必须先启用 SQL Server 数据库及其目标表上的变更数据捕获(CDC): ```sql -- 启用数据库级别的 CDC USE master; GO EXEC sys.sp_cdc_enable_db; GO -- 对特定表格启用 CDC USE YourDatabaseName; GO EXEC sys.sp_cdc_enable_table @source_schema = N'dbo', @source_name = N'YourTableName', @role_name = NULL; GO ``` 确认用于访问这些资源的账户具有足够的权限来执行上述命令以及后续的数据读取操作。 #### 下载与安装 Debezium SQL Server Connector 获取最新版的 Debezium SQL Server 插件包,并按照官方文档指示完成其向 Kafka Connect 环境下的集成工作[^1]。 #### 创建并配置 Debezium SQL Server Connector 创建一个新的 JSON 文件定义连接器的具体参数设置: ```json { "name": "sqlserver-connector", "config": { "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", "database.hostname": "<hostname>", "database.port": "1433", // 默认端口 "database.user": "<username>", "database.password": "<password>", "database.dbname": "<dbname>", "table.whitelist": "dbo.YourTableName", // 白名单指定要监控哪些表 "database.server.name": "your_server_id", // 自定义服务器ID前缀 "database.history.kafka.bootstrap.servers": "localhost:9092", "database.history.kafka.topic": "schema-changes.your_topic" } } ``` 利用此文件作为输入提交给 Kafka Connect REST API 接口以激活新的连接实例[^2]。 #### 提交并管理 Debezium Connector 实例 一旦完成了所有必要的前期准备工作之后,则可以通过 POST 请求的方式把上面构建好的 JSON 文档发送到 `/connectors` 路径下启动该连接器;也可以借助于 `curl` 工具来进行远程调用: ```bash curl -X POST http://<kafka_connect_host>:8083/connectors \ -H 'Content-Type: application/json' \ -d @path_to_your_config_file.json ``` 随后可以定期查询连接的状态信息以便及时发现潜在问题并作出相应调整. #### 测试数据流传输过程 最后,在源端(SQL Server)插入几条测试记录观察它们能否顺利抵达目的地——Kafka Topic 中去。如果一切正常的话,那么就意味着整个链路已经搭建完毕并且处于良好运作之中了.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值