欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > MySQL Binlog 监听方案

MySQL Binlog 监听方案

2025/1/8 12:13:55 来源:https://blog.csdn.net/WithCYwind/article/details/144930634  浏览:    关键词:MySQL Binlog 监听方案

如果 EmbeddedEngine 类在 debezium-connector-mysql 中不可用,原因是 Debezium 的新版本移除了 EmbeddedEngine。这是因为 Debezium 的架构变更,它现在鼓励使用 Kafka ConnectDebezium Server 来处理数据变更事件。

下面是几种替代方法来实现 MySQL Binlog 监听,你可以根据项目需求选择合适的方案。


替代方案 1:使用 Debezium Server 监听 Binlog

Debezium Server 是一个独立的服务,可以将 MySQL Binlog 的变更事件发送到目标系统,如 KafkaPulsarGoogle Pub/Sub 等。你可以将它作为一个独立服务运行,并将结果集成到 Spring Boot 中。


🔧 步骤:

1️⃣ 下载 Debezium Server

从官方 GitHub 下载最新的 Debezium Server:

👉 Debezium Server Releases


2️⃣ 配置 application.properties

在 Debezium Server 的配置文件中配置 MySQL 连接目标系统(如 Kafka)。

debezium.sink.type=kafka
debezium.sink.kafka.bootstrap.servers=localhost:9092debezium.source.connector.class=io.debezium.connector.mysql.MySqlConnector
debezium.source.database.hostname=localhost
debezium.source.database.port=3306
debezium.source.database.user=root
debezium.source.database.password=your_password
debezium.source.database.server.id=85744
debezium.source.database.include.list=your_database
debezium.source.database.history.kafka.bootstrap.servers=localhost:9092
debezium.source.database.history.kafka.topic=schema-changes.your_database

3️⃣ 运行 Debezium Server

java -jar debezium-server-<version>.jar

4️⃣ 在 Spring Boot 中消费 Kafka 消息

你可以在 Spring Boot 中使用 Kafka 监听来自 Debezium 的事件。

添加依赖:
<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId>
</dependency>
创建 Kafka 消费者:
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;@Service
public class KafkaBinlogConsumer {@KafkaListener(topics = "your_database.your_table", groupId = "binlog-group")public void listen(String message) {System.out.println("Received: " + message);// 解析并处理 Binlog 数据}
}

替代方案 2:使用 Kafka Connect

如果你已经使用 Kafka,可以通过 Kafka Connect 部署 Debezium MySQL Connector 来监听 MySQL Binlog


🔧 配置步骤:

1️⃣ 启动 Kafka Connect

确保 Kafka Connect 已启动:

./bin/connect-distributed.sh config/connect-distributed.properties

2️⃣ 配置 MySQL Connector

创建一个 Debezium MySQL Connector 的 JSON 文件:

{"name": "mysql-connector","config": {"connector.class": "io.debezium.connector.mysql.MySqlConnector","database.hostname": "localhost","database.port": "3306","database.user": "root","database.password": "your_password","database.server.id": "1","database.include.list": "your_database","database.history.kafka.bootstrap.servers": "localhost:9092","database.history.kafka.topic": "schema-changes.your_database"}
}

将该配置文件 POST 到 Kafka Connect 的 REST API:

curl -X POST -H "Content-Type: application/json" --data @mysql-connector.json http://localhost:8083/connectors

替代方案 3:使用 Maxwell for Binlog 监听

Maxwell 是一个轻量级的工具,用于将 MySQL Binlog 转换成 JSON 格式 并发送到 Kafka、Pulsar、Redis、Elasticsearch 等系统。

👉 Maxwell GitHub


🔧 步骤:

1️⃣ 下载并配置 Maxwell

wget https://github.com/zendesk/maxwell/releases/download/v1.40.0/maxwell-1.40.0.tar.gz
tar -xvf maxwell-1.40.0.tar.gz

2️⃣ 运行 Maxwell

bin/maxwell --user='root' --password='your_password' --host='localhost' --producer=kafka

替代方案 4:使用 Canal for Binlog 监听

Alibaba Canal 是一个用于监听 MySQL Binlog 的工具,支持将变更数据发送到 KafkaRabbitMQ 等消息队列中。

👉 Canal GitHub


总结对比

工具使用场景优势备注
Debezium Server不依赖 Kafka直接将数据推送到目标系统官方推荐的架构变更方式
Kafka Connect使用 Kafka 的场景生态系统丰富,支持多种数据源适合大规模数据同步
Maxwell轻量级 JSON Binlog 监听器简单易用,配置方便适合小型项目
Canal高性能、支持多种目标系统支持多种 MQ,性能较高需要更多配置

如果你不想引入 Kafka,可以使用 Debezium Server,它支持直接将 MySQL Binlog 同步到 文件、Pulsar、Google Pub/Sub 等多种目标。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com