1、前言
在上一篇文章中,我们使用Logstash把mysql中的数据全量导入到了ElasticSearch,并且有定时任务,每隔特定的时间然后又会重新导入一遍,如何ElasticSearch中的数据和mysql中的数据一致,则不会更改。虽然这样也能实现增量数据的同步,但是效率极低,浪费资源。接下来,我们将实现如何增量数据的导入。
2、修改mysql.conf文件
# 执行的sql 文件路径+名称
- #statement_filepath => "/home/dcs/soft/logstash-6.4.0/mysqltest/test.sql"
+ record_last_run => true
+ use_column_value => true
+ tracking_column => "id"
+ tracking_column_type => "numeric"
+ statement =>"select id,name,dcs from persons where id > :sql_last_value"
-:代表删除的行,+代表新增的行。
record_last_run => true
use_column_value => true 这两行代表开启增量导入
tracking_column:使用表中那一列作为参照。
tracking_column_type:该列的类型,之前的填的是 int,启动报错,提示使用numeric
sql_last_value:代表目前保存的最新的id的值。
3、重新使用配置文件启动
./logstash -f ../mysqltest/mysql.conf
插入一条数据。
注意where条件判断,id值大小的变化。
此方案适合主键自动递增。