ほとんどの場合、我々のデータはデータベースに保存されているが、我々は検索を行う場合は、我々はlogstashを使用elasticsearchする同期して、データベース内のデータを、必要な時であるので、それは、独自のインデックスデータベースを持っているelasticsearchデータベースの同期、データベースの同期とlogstashのために、私たちは時間を設定することができますelasticsearchデータベースと同期してlogstash-JDBC-入力プラグイン、同期にこのアプローチを使用することは、まだ非常に便利です。
logstash 1.ダウンロードしてインストールし
、ダウンロードしたバージョンと一貫性のある、あなたのelasticsearchのバージョン番号に私のバージョンelasticsearch6.3.0の注意を
:logstashダウンロードhttps://www.elastic.co/downloads/logstashを
ダウンロードしたら、直接解凍します
2. logstashを設定
logstash5.xため以降、それはプラグイン自体を統合した、我々は別途インストールする必要はありません、直接使用することができます。私は、logstashファイルディレクトリに、シンプルな構成と同期のMySQLの話を(自由に名前の)新しいフォルダを作成するためにここにいます。以下のような:mysqlの
2.1。このフォルダへの最初のJDBCドライバは、MySQLデータベースの接続に使用される
の.conf設定ファイル(ランダム名)を作成し2.2、データベースESに関連付けるために使用され、ここでmysql.confであります
{INPUTの
JDBC {
タイプ=> "tb_user"の
#MySQLデータベースへのリンク、データベース名の店
jdbc_connection_stringは=> ":MySQLの://192.168.1.231:JDBC 3306 / dcp_test"
#ユーザ名とパスワード
jdbc_user => "gyadmin"
jdbc_password => "!!グレイ(DJZ 159"
#ドライバ
jdbc_driver_library => "F:/elkStudy/logstash/logstash-6.2.3/mysql/mysql-connector-java-5.1.42.jar" #
ドライバクラス名
jdbc_driver_class =>「COM .mysql.jdbc.Driver "
jdbc_paging_enabled =>"真の"
jdbc_page_size =>" 50000 "
SQLファイルパス#実行+名前
statement_filepath =>" F:/elkStudy/logstash/logstash-6.2。3 / MySQLの/ jdbc.sql」
(左から右へ)#、時間、日、月、年は各フィールドの意味ポイントのリスニング間隔を設定し、すべて*デフォルトではすべての更新毎分であります
=スケジュール> "* * * * *"
}
JDBC {
タイプの=> "tb_tree"
#MySQLデータベースへのリンク、データベース名の店
jdbc_connection_stringは=> "JDBC:MySQLの://192.168.1.231:3306 / dcp_test"
#ユーザ名とパスワード
= jdbc_user> "gyadmin"
jdbc_password => "!!グレイ(DJZ 159"
#ドライバ
jdbc_driver_library => "F:/elkStudy/logstash/logstash-6.2.3/mysql/mysql-connector-java-5.1.42.jar"
#ドライバのクラス名
jdbc_driver_class => "はcom.mysql.jdbc.Driver"
jdbc_paging_enabled => "真の"
jdbc_page_size => "50000"
実行+名前の#SQLファイルパス
statement_filepath => "F:/elkStudy/logstash/logstash-6.2.3/mysql/jdbc_tree.sql"
#セットポイント(左から右へ)間隔、時間、日、月、年、すべて*デフォルトは毎分更新されているリスニングフィールドの説明を
スケジュール=>「* * * * *」
}
}
フィルタ{
JSON {
ソース=> "メッセージ"
remove_field => [ "メッセージ"]
}
}
の出力{
IF [タイプ] == "tb_user" {
elasticsearch {
のIPアドレスとポート#のES
ホスト=> [ "192.168.3.94:9200"]
#インデックス名前
インデックス=>「mysql_tb_user」
データベース位IDがの種類に対応する、idフィールドを相関させる必要が
DOCUMENT_ID =>「%{ID}」
#文書タイプ
DOCUMENT_TYPE =>「ユーザ」
}
}
もし[タイプ] == "tb_tree" {
{elasticsearch
位ES IPアドレスとポート
のホストを=> [ "192.168.3.94:9200"]
#インデックス名
インデックス=> "mysql_tb_tree"
データベース関連必要#IDフィールドは、IDの対応する型を持っている
"DOCUMENT_ID => {ID}% "
#文書型
DOCUMENT_TYPE =>"木"
}
}
STDOUT {
#は、JSON形式を出力
CODEC => json_lines
}
}
2.3本実施形態とjdbc.sql jdbc_tree.sqlのように、SQLファイル(ランダムな名前)を作成します。注意:SQLは最後にすることはできません、それ以外の時間は、(理由については、後述する)エラーを実行します
jdbc.sql:
tb_user SELECT * FROM
jdbc_tree.sql
tb_tree SELECT * FROM
3. [スタート] logstash
CMDを使用して、binディレクトリのlogstashでは、コマンドを実行します。logstash -f ../mysql/mysql.conf、次の情報が表示されます
このスクリプトの実行、同期プロセスで見ることができ、それがラップされ、それは、SQLスクリプトのターミネータを持つことはできません。道のうちJSON文字列(デフォルトのフィールド名すべて小文字のa)は、印刷データを同期させるためにドロップします
4.チェックデータelasticsearchヘッド
あなたは、すべてのデータがelasticsearchに同期されています見ることができます。ただし、デフォルトのインデックスに@versionを増加させ、二つのフィールド@timestamp
5.ピットステップ
を参照して、メッセージはメインクラスのソリューションを見つけることができません開始logstashを:https://www.cnblogs.com/sbj-dawn/p/8549369 .HTML
6.Q&
1、新規または更新されたデータベースのデータを、私たちは、自動的に最新のデータESに同期する(ここでは、私は毎分を設定し、最小周波数である)logstashが設定時間に基づいて行われることがわかります。
2、logstashは現在、増分データのみ、インクリメンタルテーブルをサポートし、その同期は物理的にデータやテーブルを削除できません。この問題を解決するには、参照することがhttps://blog.csdn.net/laoyang360/article/details/51747266