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值大小的變化。
此方案適合主鍵自動遞增。