實時同步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
也支持安裝時間同步數據(修改對應配置文件