按照我这个步骤,同步不起你捶我
Windows安装
1:官网直接下载ZIP:
Download Logstash Free | Get Started Now | Elastic
下载后直接解压
2:下载mysql的驱动 mysql-connector-java.jar
官网下载:MySQL :: Download Connector/J
3:下载logstash-output-mongodb3.1.5插件
官网最新版本是3.1.6,不管怎么弄都连不上mongdb,百度谷歌了很久都是让降版本到3.1.5 ,后续再看怎么弄3.1.6的吧
https://github.com/logstash-plugins/logstash-output-mongodb
打开后一定要切换版本至3.1.5,然后下载zip包
解压到logstash目录下
修改logstash里的 Gemfile文件
最后一行加上gem "logstash-output-mongodb", :path => "logstash-output-mongodb-master"
用管理员打开CMD
切换到logstash 的bin目录 运行:logstash-plugin install --no-verify
下载完成后查看安装版本:logstash-plugin list --verbose
两个需要插件就安装完成了。
配置
1:logstash的bin目录下新建文件夹logstash_jdbc_mongo
文件夹下新建jdbc_mongo.conf文件和jdbc_mongo.sql文件
最开始下载的mysql-connector-java.jar 放入logstash_jdbc_mongo文件夹
jdbc_mongo.conf文件
input {
stdin {
}
jdbc {
# 源Mysql数据库地址
jdbc_connection_string => "jdbc:mysql://192.XX.XX.XX:5696/cms?zeroDateTimeBehavior=convertToNull"
#源Mysql的用户名和密码
jdbc_user => "XXXX"
jdbc_password => "XXX"
#true代表记录最后存储的关联列值
record_last_run => "true"
use_column_value => "true"
tracking_column => "id"
#只支持这两种 ["numeric"(数字), "timestamp"(日期)]
tracking_column_type => "numeric"
#存储位置(这个地方不要写文件夹路径,会跑出Permission denied错误信息)
last_run_metadata_path => "/logstash-7.15.2-windows-x86_64/logstash-7.15.2/bin/logstash_jdbc_mongo/mongo_info/mongo_info.txt"
clean_run => "false"
#jdbc路径地址
jdbc_driver_library => "D:\logstash-7.15.2-windows-x86_64\logstash-7.15.2\bin\logstash_jdbc_mongo\mysql-connector-java.jar"
# the name of the driver class for mysql
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "500"
#以下对应着要执行的sql的绝对路径。
statement_filepath => "logstash_jdbc_mongo/jdbc_mongo.sql"
#定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
schedule => "* * * * *"
}
}
#输出mongodb的配置
output {
stdout { codec => rubydebug }
mongodb {
#对应mongodb的输出集合
collection => "a"
#对应mongodb的输出数据库名称,有密码用这个: "mongodb://用户名:密码@地址:27017/要认证的数据库"
database => "tyott"
uri => "mongodb://xx.xx.31.192:8292"
}
}
直接复制后,需要把中文注释全删除了,不然有字符编码问题,还需要另存为UTF-8编码
如下:
input {
stdin {
}
jdbc {
jdbc_connection_string => "jdbc:mysql://XX.XX.31.191:XX/cms?zeroDateTimeBehavior=convertToNull"
jdbc_user => "XX"
jdbc_password => "XX"
record_last_run => "true"
use_column_value => "true"
tracking_column => "id"
tracking_column_type => "numeric"
last_run_metadata_path => "/logsta/logstash-7.15.2/bin/logstash_jdbc_mongo/mongo_info/mongo_info.txt"
clean_run => "false"
jdbc_driver_library => "D:/logsta/logstash-7.15.2/bin/logstash_jdbc_mongo/mysql-connector-java-8.0.27.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "500"
statement_filepath => "logstash_jdbc_mongo/jdbc_mongo.sql"
schedule => "* * * * *"
}
}
output {
stdout { codec => rubydebug }
mongodb {
collection => "abc"
database => "tyott"
uri => "mongodb://XX.168.XX.XX:8292"
}
}
jdbc_mongo.sql
select
*
from content_test
where content_test.id>1
启动
1:测试启动:logstash 的bin目录下创建:logstash.conf 文件
内容:
input {
stdin{
}
}
output {
stdout{
}
}
切换到logstash 的bin目录 运行:logstash -f logstash.conf
这样就是启动成功了 ,只是目前没有执行任何东西。
同步数据至mongdb
再次cmd切换到logstash的bin目录运行:
logstash -f logstash_jdbc_mongo/jdbc_mongo.conf
执行后需要等一分钟,因为上面配置的是每分钟同步数据
能看见已经同步数据了,并且mongdb里面已经写入数据了
简单的同步就完成了
Linux安装
linux安装步骤整体和windows是一样的
只是在查看和安装命令前面加上 ./ 如:
windows:logstash-plugin install --no-verify
Linux:./logstash-plugin install --no-verify
如果服务器不能访问外网,可以直接把windows的整个logstash目录复制过去。只需要修改jdbc_mongo.conf里面的配置和服务器的一样。