Mysql数据同步elasticsearch-canal实战

2020-04-28  本文已影响0人  AlanSun2

最近我们项目需要使用到 elasticsearch(以下称 es),需要对商品数据进行索引。那这里就会有一个数据同步的问题,就是当修改数据库的数据时,数据如何导入到 es 中。一般会有这几种方案:

优缺点

同步写入,很明显代码侵入行最高,并且会增大业务服务器的开销。消息队列其实已经是非常好的方案,代码侵入性较低,几乎不影响效率。当然我个人最喜欢的还是使用 binlog,因为完全和业务无耦合。

1. canal(管道)介绍

canal 就是一个 alibaba 出品的一个 mysql binlog 同步工具。

工作原理

具体的操作

使用 canal 完成同步操作,你必须部署两个服务:

  1. canal-server:与 mysql 通讯,对数据进行解析,把数据传给下游
  2. canal-adapter:和 canal-server 通讯,目前支持把数据导入到 es,RDB,Hbase

上面提到的下游不仅仅可以是 canal-adapter 还可以是 Kafka/RocketMQClientAdapterjava 客户端
此外 canal-server 也支持 Prometheus 监控。

canal-server docker 部署
  1. 启动文件
    canal-server github
canal-adapter docker 部署
  1. dockerfile 地址
    canal-adapter Dockerfile

  2. 启动文件
    canal-adapter start

  3. 使用 canal-adapter 填坑

`status`
上一篇下一篇

猜你喜欢

热点阅读