Kafka接收mysql binlog日志

一、Kafka 安装

1、上官网下载安装包

安装包文件链接

2、根据文档进行安装

(1)、安装Kafka


# 将下载的安装包移动到安装目录, 解压安装包
tar -xzf kafka_2.13-3.1.0.tgz 
# 进入文件夹
cd kafka_2.13-3.1.0/
# 由于kafka是分布式系统,必须依赖于分布式系统协调服务来各个节点,服务的负载均衡
# 文档提供两种形式来对kafka进行管理

# Kafka with ZooKeeper
# 启动ZooKeeper 服务进程
bin/zookeeper-server-start.sh config/zookeeper.properties
# 启动Kafka 服务端进程
bin/kafka-server-start.sh config/server.properties

# Kafka with KRaft
# 需要生成一个唯一的UUID来格式化日志文件夹
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
# 启动Kafka 服务端进程
bin/kafka-server-start.sh config/kraft/server.properties

(2)、创建事件单元

# 首先,创建一个单元存储事件,这里单元名为quickstart-events,使用端口9092
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
# 使用命令查看单元信息
bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server localhost:9092

(3)、启动生产者进程和消费者进程

# 启动生产者进程
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
# 启动消费者进程
# 消费者进程有 --from-beginning 参数,带上表示从该topic的起始消息进行消费,不带则会从消费者未消费的消息开始消费
bin/kafka-console-consumer.sh --topic quickstart-events --bootstrap-server localhost:9092

在生产者终端输入字符串,消费者终端会进行输出
生产者消费者

二、maxwell 安装

github 下载压缩包,我下载的是1.19.0 版本

# 解压压缩包
tar -xzf maxwell-1.19.0.tar.gz
# 进入文件夹
cd maxwell-1.19.0/
# 启动maxwell,监听mysql binlog 并发送至Kafka 对应的topic
bin/maxwell --user='root' --password='password' --port=3306 --host='localhost' --producer=kafka --kafka.bootstrap.servers=localhost:9092 --kafka_topic=quickstart-events &

三、操作mysql对Kafka进行测试

  • 对mysql进行插入和更新操作
mysql> create table test_kafka(id int, message text);
Query OK, 0 rows affected (0.02 sec)

mysql> 11:55:26,464 INFO  AbstractSchemaStore - storing schema @Position[BinlogPosition[binlog.000407:304182], lastHeartbeat=1690430123169] after applying "create table test_kafka(id int, message text)" to zhidou_cdc, new schema id is 2

mysql> 
mysql> desc test_kafka;
+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| id      | int  | YES  |     | NULL    |       |
| message | text | YES  |     | NULL    |       |
+---------+------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into test_kafka values(1, '测试1');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test_kafka values(2, '测试2');
Query OK, 1 row affected (0.00 sec)

mysql> update test_kafka set message='测试3' where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  • Kafka消费者终端会打印json格式的binlog日志
bin/kafka-console-consumer.sh --topic quickstart-events --bootstrap-server localhost:9092
{"database":"test","table":"test_kafka","type":"insert","ts":1690430162,"xid":1517,"commit":true,"data":{"id":1,"message":"测试1"}}
{"database":"test","table":"test_kafka","type":"insert","ts":1690430174,"xid":1524,"commit":true,"data":{"id":2,"message":"测试2"}}
{"database":"test","table":"test_kafka","type":"update","ts":1690430197,"xid":1534,"commit":true,"data":{"id":2,"message":"测试3"},"old":{"message":"测试2"}}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很好,这是一个关于使用KafkaMySQLBinlog实时同步数据到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、付费专栏及课程。

余额充值