mysql數據同步到Elasticsearch


1、版本介紹


Elasticsearch:
版本:2.4.0
 
Logstash:
版本:2.4.0
所需要的安裝文件,到官網下載即可。
 
還需要對應的數據庫JDBC,這里使用的是 mysql-connector-java-5.1.39.jar
 
2、 Logstash安裝配置
 
Logstash直接下載后解壓即可,主要是配置文件的內容編寫。
 
安裝logstash-input-jdbc的Logstash插件,用來進行mysql、oracle等的數據同步。
 
[zsz@VS-zsz logstash-2.4.0]$ bin/plugin install logstash-input-jdbc
The use of bin/plugin is deprecated and will be removed in a feature release. Please use bin/logstash-plugin.
Validating logstash-input-jdbc
Installing logstash-input-jdbc
Installation successful
 
配置文件(自行指定文件名,這里命名為logstash-mysql.conf  ):
[zsz@VS-zsz conf]$ vi logstash-mysql.conf 
input {
  jdbc {
    jdbc_driver_library => "/usr/local/logstash-2.4.0/mysql-connector-java-5.1.39.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.****:3306/******?characterEncoding=UTF-8&useSSL=false"
    jdbc_user => "*****"
    jdbc_password => "*********"
    statement => "SELECT * FROM news limit 0,1"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
    schedule => "* * * * *"
  }
}

filter {
   json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => "192.168.****"  //所有同步elasticsearch的集群信息
    index => "myindex"
  }        
 
啟動Logstash
[zsz@VS-zsz conf]$ /usr/local/logstash-2.4.0/bin/logstash -f /usr/local/logstash-2.4.0/conf/ logstash-mysql.conf 
Settings: Default pipeline workers: 2
Pipeline main started
{
                  "pk" => 8,
             "user_pk" => 11,
            "media_pk" => 5,
            "topic_pk" => 0
}
{
                  "pk" => 8,
             "user_pk" => 11,
            "media_pk" => 5,
            "topic_pk" => 0
}
........
 
這個進程會一直執行下去,因為設置的schedule => "* * * * *"(每分鍾執行一次),如果想結束進程需要kill掉進程。
 
 
查看elasticsearch是否同步數據成功
[root@VS-zsz conf]# curl '192.168.31.79:9200/_cat/indices?v'
health status index   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test      5   1          0            0      1.5kb           795b
green  open   myindex   5   1        494            0    924.7kb        457.6kb
[root@VS-zsz conf]# curl '192.168.31.78:9200/_cat/indices?v'
health status index   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test      5   1          0            0      1.5kb           795b
green  open   myindex   5   1        494            0      925kb        457.8kb
[root@VS-zsz conf]# curl '192.168.31.79:9200/_cat/indices?v'
health status index   pri rep docs.count docs.deleted store.size pri.store.size
green  open   test      5   1          0            0      1.5kb           795b
green  open   myindex   5   1        494            0      925kb        457.8kb 
 
說明數據成功導入,而且在設置了定時任務的情況下, myindex索引的容量不斷增加。
 
5、常見錯誤:
(1)Pipeline aborted due to error {:exception=>"LogStash::ConfigurationError", :backtrace=>..................stopping pipeline {:id=>"main"}
原因: logstash-mysql.conf 文件配置錯誤,對於>=2.*的版本, elasticsearch 的參數名應為hosts,如果設置為host則會報錯。此處應該是可以配置多個數據源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM