debezium mysql_Debezium 实现 MySQL 到 Elasticsearch 高效实时同步

本文介绍了如何使用Debezium通过MySQL binlog实现实时增量数据同步到Elasticsearch,解决了在没有自增ID或时间戳字段时的同步问题。文章详细阐述了binlog的概念、Debezium的工作原理、同步架构以及配置和实施过程,强调了该方案的稳定性和实时性。
摘要由CSDN通过智能技术生成

题记

来自Elasticsearch中文社区的问题——

MySQL中表无唯一递增字段,也无唯一递增时间字段,该怎么使用logstash实现 MySQL 实时增量导数据到es中?

logstash和kafka_connector都仅支持基于自增id或者时间戳更新的方式 增量 同步数据。

回到问题本身:如果库表里没有相关字段,该如何处理呢?

本文给出相关探讨和解决方案。

1、 binlog认知

1.1 啥是 binlog?

binlog是Mysql sever层维护的一种 二进制日志 ,与innodb引擎中的redo/undo log是完全不同的日志; 其主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以"事务"的形式保存在磁盘中。

作用主要有:

1)复制:达到master-slave数据一致的目的。

2)数据恢复:通过mysqlbinlog工具恢复数据。

3) 增量备份 。

1.2 阿里的Canal实现了增量Mysql同步

347f1c99baa4e41d40e7f1c617c6cc0f.png

一图胜千言,canal是用 java 开发的基于 数据库 增量日志解析、提供增量数据订阅&消费的中间件。

目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client 用来处理获得的相关数据。目的: 增量数据订阅&消费 。

综上,使用binlog可以突破logstash或者kafka-connector没有自增id或者没有时间戳字段的限制,实现增量同步。

2、基于binlog的同步方式

1)基于kafka Connect的Debezium 开源工程,地址:. https://debezium.io/

2)不依赖第三方的独立应用: Maxwell开源项目, 地址:http://maxwells-daemon.io/

由于已经部署过conluent(kafka的企业版本,自带zookeeper、kafka、ksql、kafka-connector等),本文仅针对Debezium展开。

3、Debezium介绍

Debezium是捕获数据实时动态变化的开源的分布式同步平台。能实时捕获到数据源(Mysql、Mongo、PostgreSql)的:新增(inserts)、更新(updates)、删除(deletes)操作,实时同步到Kafka,稳定性强且速度非常快。

特点:

1)简单。无需修改应用程序。可对外提供服务。

2)稳定。持续跟踪每一行的每一处变动。

3)快速。构建于kaf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值