windows 安装logstach进行同步mysql到Elasticsearch
工作需要,要同步mysql数据到Elasticsearch,比较好的方案是使用logstach,还需要安装一个logstash-input-jdbc插件来进行同步
先从官网下载logstach,注意版本一定要一致,不然不支持
下载后解压,进入bin目录
新建一个logstash.conf文件,文件名随意取,启动正确到自己文件名就行。我这里是新建了一个mysql文件夹,再新建的一个mysql.conf
注意这个mysql.cnf文件编码格式很严格,必须是UTF-8无BOM模式编码的,而且内容对空格等要求也很严格,换行后的文件内容必须是tab的空格,键盘空格键不行(自己测试的)
如果新建的文件不是,可以使用notpad++进行转换
mysql.conf配置:
input {
jdbc {
jdbc_driver_library => "D:\repository\mysql\mysql-connector-java\5.1.40\mysql-connector-java-5.1.40.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://211.149.199.68:3306/mypinyu?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false"
jdbc_user => "root"
jdbc_password => "[email protected]"
# 定时器 多久执行一次SQL,默认是一分钟
schedule => "* * * * *"
#是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
clean_run => "false"
#或者以下方式指定sql文件 :sql_last_value为1970-01-01 00:00:00
statement => "SELECT * FROM sys_user"
# 执行的sql 文件路径+名称
#statement_filepath => "C:\Users\admin\Desktop\logstash-5.0.2\bin\mysql\jdbc.sql"
jdbc_paging_enabled => "true"
jdbc_page_size => "100000"
# 索引类型
type => "jdbc"
}
stdin{
}
}
#filter { json { source => "message" remove_field => ["message"] } }
output {
elasticsearch {
hosts => "localhost:9200"
index=> "mypinyu"
document_id => "%{id}"
}
stdout{
# JSON格式输出
codec => "json_lines"
}
}
hosts:elasticsearch的地址
index:同步数据过来的索引名称
安装logstash-input-jdbc:
进入logstach/bin目录
命令:.\logstash-plugin.bat install logstash-input-jdbc
出现以下内容标识安装成功
启动logstach:
可以直接输入命令,也可以创建文件的方式
命令输入:logstash -f C:\Users\admin\Desktop\logstash-5.0.2\bin\mysql\mysql.conf
我是新建了一个run.bat文件来启动,方便点
run.bat文件内容就是 logstash -f C:\Users\admin\Desktop\logstash-5.0.2\bin\mysql\mysql.conf
双击run.bat
数据同步:
同步方式可以增量同步,也可以全量
自己配置即可。
到此完成mysql和elasticsearch的数据同步