实时同步MySQL数据到ES
前情:经过查询,网上大概有以下三种方式
- 1)elasticsearch-jdbc,独立的第三方工具(只支持es 二点几的版本,不支持5.6.1及更高版本)
- 2)logstash-jdbc,logstash官方插件
- 安装logstash
- 安装logstash-jdbc
- https://gems.ruby-china.com
- 3)go-mysql-elasticsearch第三方开源项目
- 需要安装go
- 需要mysql开启binlog
- 4)mypipe,mysql binlog同步工具
- 功能太少
- 5)mysqlsmom-第三方项目
- 因为我所用的项目,生产环境比较复杂,牵扯多个公司,最终选择了mysqlsmom,且操作很方便
mysqlsmom
1.安装
pip install mysqlmom
- 默认支持elasticsearch的2.4版本,也支持其他版本
2.创建配置文件
mom new 文件夹名/init_config.py -t init --force
- 配置文件init_config.py也可以自己取其他名,运行时运行即可
3.编辑配置文件
- 创建的初始配置文件,注释都有标注好需要改哪些地方
- 主要需要改的几个地方
- es数据库配置
- mysql数据库配置
- redis数据库配置
- 需要同步的表
- sql同步语句
- 同步到es的字段、index
- 其他的按需修改
4. 同步
mom run -c ./文件夹名/init_config.py
同步脚本会一直运行,当有新增或修改的数据,会自动同步到es
也支持安装时间同步数据(修改对应配置文件