ElasticSearch5+logstash的logstash-input-jdbc實現mysql數據同步

 

在實現的路上遇到了各類坑,再次驗證官方文檔只能產考不能全信!php

ElasticSearch安裝就不說了上一篇有說!html

安裝logstashjava

官方:https://www.elastic.co/guide/en/logstash/current/installing-logstash.htmlmysql

1.下載公共密鑰git

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

2.添加yum源github

vim  /etc/yum.repos.d/logstash.repo

文件中寫入sql

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

保存退出數據庫

3.使用yum安裝json

yum install logstash

4.驗證是否安裝成功vim

進入 logstash 安裝目錄

cd /usr/share/logstash

運行

bin/logstash -e 'input { stdin { } } output { stdout {} }'

等待幾秒鐘 出現  

The stdin plugin is now waiting for input:

而後輸入 

hello world

獲得相似的結果

2016-11-24T08:01:55.949Z bogon hello world

安裝logstash-input-jdbc插件

1.修改ruby倉庫鏡像

若是沒有安裝 gem 的話 安裝gem 

yum install gem

替換國內的鏡像

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

驗證是否成功

gem sources -l

修改Gemfile的數據源地址

whereis logstash # 查看logstash安裝的位置, 個人在 /usr/share/logstash目錄

cd /usr/share/logstash
vim Gemfile
修改 source 的值 爲: "https://gems.ruby-china.org/"
vim  Gemfile.jruby-1.9.lock # 找到 remote 修改它的值爲:
https://gems.ruby-china.org/

或者直接替換源這樣你不用改你的 Gemfile 的 source。

gem install bundler


$ bundle config mirror.https://rubygems.org https://gems.ruby-china.org/
 

而後開始安裝

bin/logstash-plugin  install logstash-input-jdbc

若是鏡像地址沒有改錯的話應該能夠直接安裝

或者  進入源碼地址的release頁面logstash-input-jdbc

2.開始同步 mysql 數據

須要創建 兩個文件  一個  .conf後綴的 一個 .sql 後綴

 一個 mysql 的Java 驅動包  : mysql-connector-java-5.1.40-bin.jar

filename.conf 內容:

裏面的參數能夠參考 logstash-input-jdbc官方參考文檔

input {
    stdin {
    }
    jdbc {
    # 數據庫地址  端口  數據庫名
      jdbc_connection_string => "jdbc:mysql://localhost:3306/shen"
    # 數據庫用戶名      
    jdbc_user => "root"
    # 數據庫密碼
      jdbc_password => "rootroot"
    # mysql java驅動地址 
      jdbc_driver_library => "/usr/share/logstash/mysql-connector-java-5.1.40-bin.jar"
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # sql 語句文件
      statement_filepath => "filename.sql"
      schedule => "* * * * *"
      type => "jdbc"
    }
}
output {
 stdout {
        codec => json_lines
    }
   elasticsearch {
        hosts  => "localhost:9200"
        index => "contacts"
     document_type => "contact"
        document_id => "%{id}"
    }
}

filename.sql

select * from a

注意: 在你的數據庫裏 要有一個數據庫名字和filename.conf 裏的對應就能夠了   代表 和 filename.sql 裏的對應就能夠了   在表中  有一個id字段是爲了和filename.conf  中document_id => "%{id}" 這個參數對應 能夠執行修改

而後開始執行

bin/logstash -f fielname.conf

若是出現錯誤 或者沒有結果 能夠進入 logs 目錄中查看日誌

出現相似這樣的內容  就能夠了

能夠經過地址 http://192.168.199.115:9200/contacts/contact/1?pretty=true

查看

url 參數說明  contacts 是對應 filename.conf 中 index => "contacts"  contact 對應document_type => "contact"   1表示id爲1 的數據

 

 轉載請註明來源http://www.cnblogs.com/phpshen/p/6098333.html

相關文章
相關標籤/搜索