目录

elasticsearch和mysql同步

es mysql同步

go-mysql-elasticsearch是用于同步mysql数据到ES集群的一个开源工具。 go-mysql-elasticsearch的基本原理是:如果是第一次启动该程序,首先使用mysqldump工具对源mysql数据库进行一次全量同步,通过elasticsearch client执行操作写入数据到ES;然后实现了一个mysql client,作为slave连接到源mysql,源mysql作为master会将所有数据的更新操作通过binlog event同步给slave, 通过解析binlog event就可以获取到数据的更新内容,之后写入到ES.

我们在启动时的配置的文件中指定数据库地址端口,用户密码,es的地址端口密码,还可以指定同步的库,表对应es的index,type,字段。

启动命令 ./bin/go-mysql-elasticsearch -config=./etc/river.toml

问题

  1. mysql binlog必须是ROW模式。
  2. 要同步的mysql数据表必须包含主键,否则直接忽略,这是因为如果数据表没有主键,UPDATE和DELETE操作就会因为在ES中找不到对应的document而无法进行同步。