Elasticsearch 的全量同步和增量同步

(1)全量同步

什么是全量同步:将一个mysql的整个表的所有数据都同步到es中

常用插件是logstash-input-jdbc,logstash通过sql语句分区间对数据进行查询,然后输出到es进行实现。

logstash-input-jdbc同步插件原理:

作用:使用 logstash-input-jdbc 插件读取 mysql 的数据

(2)增量同步(canal)

什么是增量同步:业务场景需要实时性较高并对要求****对数据库的压力比较小

logstash不再适合增量同步,logstash是基于sql来完成的会用一定的延迟性做不到实时性,并且是通过cron表达式来调用。

阿里在做大做强的过程中也遇到过类似的问题,为了达到性能的最优,他们自己通过JAVA代码实现了mysql的数据同步功能,通过解析mysql 的日志进行实现的,并且把这个项目开源——canal 并用它实现的对ES实时同步数据的效果,而且不仅仅可以给ES进行同步。还可以给以下很多第三方软件进行数据同步
在这里插入图片描述
原理:

它里面是通过一个server(服务端)一个client(客户端)来进行实现的

server(服务端)负责mysql的日志监听与收集,然后再传给client(客户端)端server(服务端)与client(客户端)使用的netty(网状的 实现聊天功能)进行数据的tcp通信。
同时canal也有专门的可视化监控界面,方便进行查看,同时也有HA(hadoop集群)的实现方式,通过zookeeper来进行实现和控制的。

(个人理解就是类似于一个管道服务端和客户端就是管道的两端,如何利用netty来进行数据的tcp通信)

使用:

想将数据从mysql同步到es通过canal的一个adapter(适配器)就可以直接实现了

Netty 百度百科:https://baike.baidu.com/item/Netty/10061624?fr=aladdin

Netty 详细博客地址:https://www.sohu.com/a/272879207_463994

Netty
是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

canal优点:

(1)canal实现数据的增量同步性能高,有可视化界面可监控

(2)看canal esAdapter的源码可知,canal esAdater中的etl方法对全量同步的功能已经做了实现可增量可全量同步了

ES数据同步的实战和详细博客地址:https://blog.csdn.net/RuiKe1400360107/article/details/104270421

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值