ES同步Mysql資料庫(包括出現問題怎麼處理哦)

一個不會重複的暱稱發表於2020-10-12

1、下載logstash(找到和Elasticssearch對應的版本)
下載連結:
https://www.elastic.co/fr/downloads/logstash
進入bin目錄下新建一個資料夾(命名隨意),jdbc.sql和logstash.conf
在這裡插入圖片描述
下載一個資料庫連線包放在bin資料夾下
在這裡插入圖片描述
(資料庫連線包最好下載和mysql版本對應的)
下載地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java
jdbc.sql寫要查詢的程式碼:

select id,username,sex,birthday,address from user;

logstash.conf寫入配置資訊:
input { stdin { } jdbc { # mysql 資料庫連結,mybatis為資料庫名 jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/TESTDB?useUnicode=true&characterEncoding=utf8" # 使用者名稱和密碼 jdbc_user => "root" jdbc_password => "root" # 驅動 修改為mysql連線包位置 jdbc_driver_library => "D:\gj\logstash-7.9.0\logstash-7.9.0\bin\bin/mysql-connector-java-5.1.7-bin.jar" # 驅動類名 jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_paging_enabled => "true" jdbc_page_size => "50000" # 執行的sql 檔案路徑+名稱 statement_filepath => "jdbc.sql" # 設定監聽間隔 各欄位含義(由左至右)分、時、天、月、年,全部為*預設含義為每分鐘都更新 schedule => "* * * * *" } } output { elasticsearch { # ES的IP地址及埠 hosts => ["localhost:9200"] # 索引名稱 可自定義 index => "test" # 需要關聯的資料庫中有有一個id欄位,對應型別中的id document_id => "%{id}" document_type => "test" } stdout { # JSON格式輸出 codec => json_lines } }

連線資料庫時,出現Unknown character set index for field ‘255’ received from server.
這由於資料庫連線包和資料庫版本不一致,MySQL版本高,mysql的jar版本低造成mysql與jar的編碼錯亂引起的

處理:
1、升級資料庫連線包
2、修改logstash.conf,新增字符集說明
在這裡插入圖片描述
Mysql資料庫建表:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
啟動程式:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
顯示以上資訊,表示成功。
瀏覽器中再次輸入:http://localhost:9100
在這裡插入圖片描述
檢視資料:
在這裡插入圖片描述

相關文章