同步方案:
- 同步读写:最为简单的方式在将数据写到mysql时,同时将数据写到ES,实现数据的双写。
- 异步双写(MQ方式):MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高。
- 定时器程序:相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化,原来程序中的CURD操作不做任何变化;增加一个定时器程序,让该程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来;逐条写入到ES中。
- binlog日志:读取mysql的binlog日志,获取指定表的日志信息。将读取的信息转为MQ,编写一个MQ消费程序,不断消费MQ,每消费完一条消息,将消息写入到ES中。
- logstash全量、增量同步解决方案:
logstash-input-jdbc
插件,能实现mysql数据全量和增量的数据同步,且能实现定时同步,版本更新迭代快,相对稳定。作为ES固有插件logstash一部分,易用 - go-mysql-elasticsearch:其由go语言开发