ES,Mysql数据同步

数据同步中间件
Mysql、ES数据同步
全量、增量
几种实现方式
开源中间件
1)binlog订阅(alibaba/canal)

2)Go语言中间件(不支持es6以上的版本)

3)logstash(mysql设计中有id createtime才可以使用)
binlog是mysql记录数据变化的日志:logstash ES官方的同步组件
数据同步
增量 全量
几种实现方式
开源中间件
binlog的订阅
logstash

binlog 同步mysql数据到中间件进行解耦
binlog 有阿里canal
官方 有 logstash
一、数据同步
1、全量:MySQL数据一次性导入
2、增加:MySQL后续数据的CRUD操作,对应的同步到ES,ES更新数据过程为先删除再插入、
在代码中为CRUD分别配置切面(AOP)也可以实现,但是会造成业务和数据高耦合。
二、中间件
1、MySQL的binlog订阅:实时记录数据变化,通过MySQL的主从复制协议实现客户端,实现数据同步。
2、中间件可以解耦。
3、go语言实现,基于MySQL binlog订阅,不支持ES6.X及以上版本和MySQL8.X及以上版本,且出现数据混乱bug、进程不退出、多表同步到一个index问题。

4、ES官方中间件,logstash
输入源:log4j、MySQL等
必须条件:
id:必须来自MySQL中的id字段,提供了ES和MySQL数据之间的数据对应关系。
time:MySQL表中要有标识创建/修改时间的字段,通过时间比较完成增量同步。
logstash
# Mysql、ES 数据同步
---
## 全量、增量
## 实现方式
* 使用 `SpringAOP` 进行 同步
* 中间件
* binlog 订阅
* go-mysql-elasticsearch
* logstash
* mysql 表,需要 id、time 相应字段
ELK logsatsh
数据同步到REDIS
mysql、es数据同步
es提供的官方同步组件:logstash
使用条件:1.mysql中的id要和es中的_id对应
2.mysql中要有创建时间或者更新时间字段,便于后续增量的同步
数据同步中间件
刚好在数据同步的时候,mysql有新的数据插入,可采用createtime时间,每次增量同步上次时间到现在最新时间段内的数据
- 如何把mysql同步到es - 全量和增量 - 方案: binlog 订阅
logstash数据同步
alibaba/canal
binlog同步组件
同步mysql数据到es:canal(阿里巴巴,通过定于mysql的binlog实现)或者logstash