logstashインストールに関するします。https://www.cnblogs.com/toov5/p/10301727.html
Logstashは、リアルタイムのパイプライン機能を、オープンソースのデータ収集エンジンです。Logstashは、動的に異なるデータソースからのデータは、お好みの宛先にデータを標準化、統一することができます
設定以下にさらに詳細:
jdbc_driver_library:JDBCのmysqlの駆動型のパス、前のステップでダウンロードされた ドライバクラスの名前、MySQLのようにはcom.mysql.jdbc.Driverを埋める:jdbc_driver_class jdbc_connection_stringは:mysqlのアドレス jdbc_userを:mysqlのユーザー jdbc_password:mysqlのパスワードの スケジュール:SQLの実行のタイミングを同様のcrontabのスケジューリング 声明:SQLが実行される、A「:」変数の定義の冒頭で、パラメータ、変数を設定することができ、ここでsql_last_valueを表す実行UPDATE_TIME値がSQLたら、変数に建設され、UPDATE_TIME条件> =時間が等しいがあるかもしれないので、ない等号は、いくつかの増分逃すかもしれないです インクリメントされた列の値を使用して:use_column_value タイムスタンプは、タイムスタンプの種類を表す、タイプフィールドをインクリメントし、数値型を表す:tracking_column_typeを 、フィールド名を増分:tracking_columnをこのカラムをUPDATE_TIME本明細書で使用される場合、この列は、型タイムスタンプである last_run_metadata_path:最後の同期ポイントを記録する同期点ファイルは、ファイルの再起動を読み取り、このファイルを手動で変更することができます
注意:
クローンタブ:公式サイト https://tool.lu/crontab/の 注:単位に分割するのcrontab表現
./bin/logstash -f mysql.conf開始
原理:
Logstash - > MySQLへクエリを送信し、
Logstash - > ESにクエリ結果を送信します
(1970年時点に基づいて)すべての最初のクエリデータ、この最後のレコード番号UPDATE_TIMEは、次回のクエリとして条件値を変更します。新しいデータベースまたは変更、時間が記録されます際に削除します。
どこUPDATE_TIME> = XXXX-XXXX
毎週一回のクエリインチ 表には、内部に持っている必要があります。UPDATE_TIMEフィールドを
同期:
1.新しい主キーの方法
2. UPDATE_TIMEの道
比較:
logstash入力-JDBCのMySQLリードデータプラグを使用し、プラグイン原理は、比較的単純であり、SQLの実行結果は、その後、元バイナリログによって同期されていない増分方法を取得し、ストリームに書き込まれたSQLを実行するための時間であり、しかし、クエリ、クエリによる増加プロパティに現在のレコード位置は現在のレコードのみより大きい内のすべてのこの時間増分を取得するためにチェックする必要があるたびに条件として増分フィールドで、一般的なインクリメントフィールドが存在します2つの主キーのIDのとUPDATE_TIMEのAUTO_INCREMENTフィールドの更新CURRENT_TIMESTAMP ONタイプ、idフィールドのみが更新されないテーブルを挿入のみに適用され、より一般的なUPDATE_TIMEいくつかの提案mysqlのテーブルのデザインはUPDATE_TIMEフィールドを増加しています。
コンフィギュレーションを総括するには:
CDの/home/elasticsearch/logstash-6.4.3/config
入力{
JDBC {
jdbc_driver_library => "/home/mysql5.7/mysqlDriver/mysql-connector-java-8.0.13.jar"
jdbc_driver_class => "はcom.mysql.jdbc.Driver"
#8.0以上版本:一定要把serverTimezone = UTC天加上
jdbc_connection_stringは=> "JDBCます。mysql://192.168.124.8:?3306 /テストcharacterEncoding = UTF8&useSslオプション=偽&serverTimezone = UTC&rewriteBatchedStatements = true"を
jdbc_user => "ルート"
jdbc_password => "ルート"
スケジュール=>「* * * * *」
声明=> "SELECT * FROMユーザーUPDATE_TIME> =:sql_last_value"
use_column_value =>真
tracking_column_type => "タイムスタンプ"
tracking_column => "UPDATE_TIME"
last_run_metadata_path => "syncpoint_table"
}
}
出力{
Elasticsearch {
のIPアドレスとポート#のES
ホスト=> [「192.168.91.66:9200」]
#名インデックスがカスタマイズすることができ
、インデックス=>「ユーザ」
の種類に対応する、idフィールド#を有することが必要に関連付けられているデータベースID
DOCUMENT_ID => "%{ID}"
DOCUMENT_TYPE => "ユーザー"
}
STDOUT {
#はJSON形式を出力
CODEC => json_lines
}
}
mysql.confの名前を、何気なく演奏:ダウン投げ、設定ファイルの設定
開始:./bin/logstash ./config/mysql.conf
注意:私は、最新のドライバのMySQL 8.多くのバージョンを使用し、そのため、構成データベースのURLがプラスタイムserverTimezone = UTCの日を取る必要があります!
一方、MySQLデータベース:
*上のすべての権限を付与*「ルート」@「%」を付与オプションで「ルート」で識別します。
FLUSH PRIVILEGES;
ログを見てのプロセスを開始することは非常に遅いです。
kinbana: