同步方案: Mysql——>Canal——>RabbitMQ——>ES
canal 可以直接将数据进行转发到消息中间件,同步程序消费消息,es 分词创建索引
同步细节
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
同步程序的实现
注意:同步程序并不会去做分词和存储操作,在项目配置文件中指定了 es 的地址和端口,引入依赖调度队列信息给 es,分词存储到自己内部的索引库中