ElasticSearch数据同步

169 阅读1分钟

同步方案: Mysql——>Canal——>RabbitMQ——>ES

image.png

canal 可以直接将数据进行转发到消息中间件,同步程序消费消息,es 分词创建索引

image.png

同步细节

1、mysql 和 canal 数据同步

(1)mysql 数据库创建用户并授权为 mysql salve,用于同步给从库。

(2)canal 使用用户账号伪装成 MySQL salve,配置监听数据库的 binlog 文件,通过 dump 协议进行数据同步。

2、binlog 解析

(3)canal 发送请求获取到 binlog 文件并进行解析。

3、通知 MQ 异步转发

(4)将解析好的 binlog 发送给消息中间(rabbitMQ,提前配置 好 转发的交换机 topic)

(5)MQ 异步转发到订阅的需要同步数据的程序的消息队列中

4、ES 数据同步

(6)同步程序请求Elasticsearch添加、更新、删除索引文档。

(7)Elasticsearch 分词之后存储到自己的索引库中

最终实现了将MySQL中的serve_sync表的数据同步至Elasticsearch

同步程序的实现

image.png

注意:同步程序并不会去做分词和存储操作,在项目配置文件中指定了 es 的地址和端口,引入依赖调度队列信息给 es,分词存储到自己内部的索引库中