Mysql数据全量同步到Elasticsearch

最近学习elastic stack,学习的过程中有数据全量同步的需要,在这期间我接触到了几种同步工具,分别是Logstash、go-MySQL-elasticsearch、Canal、Bboss。其中我有尝试成功的有Logstash、go-mysql-elasticsearch。由于我在测试期间发现go-mysql-elasticsearch显示不太友好如果数据量大不好定位问题,且此库个人维护精力有限不建议使用,这里推荐使用Logstash。

Logstash是elastic官方工具,在使用期间建议与elasticsearch版本一致,这里建议不使用docker启动,不好操作。

在Logstash根目录conf文件夹下新建一个mysql文件夹,在新建一个配置文件名字可自定义,这里文件命名为mysql.conf,以下是我的配置内容
然后在Logstash根目录下执行bin/logstash -f 配置路径(bin/logstash -f conf/mysql/mysql.conf),就会开始执行同步操作,耐心等待即可

input {
jdbc {
jdbc_driver_library => “/tmp/logstash/logstash-7.9.3/mysql/mysql-connector-java-8.0.16.jar”
jdbc_driver_class => “com.mysql.cj.jdbc.Driver”
jdbc_connection_string => “jdbc:mysql://192.168.50.254:33066/kuzi?serverTimezone=Asia/Shanghai”
jdbc_user => cc
jdbc_password => cccc
jdbc_paging_enabled => true
tracking_column_type => “numeric”
# schedule => “0 0 0 1/1 * ?”
statement => “SELECT * from weibo_ where id >= 359499999”
}
}

output {
# stdout { codec => “rubydebug”}
elasticsearch {
index => “weibo”
hosts => [“127.0.0.1:9200”]
document_id => “%{id}”
}
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注