准备工作:logstash
- 下载logstash: https://www.elastic.co/cn/downloads/past-releases#logstash ,版本要与安装的ES版本一致;
- 下载mysql-connector-java-5.1.41.jar: 版本根据实际情况选择;
添加mysql驱动jar包
- 解压下载好的logstash
- 添加mysql驱动:,将下载好的mysql-connector-java-5.1.41.jar添加到logstash目录中,与logstash的config目录同级;
- **(单表同步)配置mysql.conf文件:**进入config目录,创建mysql.conf文件,配置模板如下:
input {
jdbc {
# jdbc 驱动包位置
jdbc_driver_library => "D:\\java\\Software\\es\\logstash-6.3.2\\mysql-connector-java-5.1.41.jar"
# 要使用的驱动包类
jdbc_driver_class => "com.mysql.jdbc.Driver"
# mysql数据库的连接信息
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
# mysql 用户
jdbc_user => "root"
# mysql 用户密码
jdbc_password => "root"
# 定时任务,多久执行一次查询,默认一分钟,如果想要没有延迟,可以使用"* * * * *"
schedule => "* * * * *"
# 清空上次的sql——last_value的记录
clean_run => true
# 要执行的sql 重点
statement => "select * FROM t_blog WHERE update_time > :sql_last_value AND update_time < NOW() ORDER BY update_time desc"
}
}
output {
elasticsearch{
# es host : host
hosts => ["127.0.0.1:9200"]
# 索引
index => "blog"
# _id
document_id => "%{id}"
}
}
- **(多表同步)配置mysql.conf文件:**进入config目录,创建mysql.conf文件,配置模板如下:
input {
jdbc {
#索引的类型
type => "blogInfo"
# jdbc 驱动包位置
jdbc_driver_library => "D:\\java\\Software\\es\\logstash-6.3.2\\mysql-connector-java-5.1.41.jar"
# 要使用的驱动包类
jdbc_driver_class => "com.mysql.jdbc.Driver"
# mysql数据库的连接信息(mysql8.0以上版本:一定要把serverTimezone=UTC天加上)
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
# mysql 用户
jdbc_user => "root"
# mysql 用户密码
jdbc_password => "root"
# 定时任务,多久执行一次查询,默认一分钟,如果想要没有延迟,可以使用"* * * * *"
schedule => "* * * * *"
# 清空上次的sql——last_value的记录
clean_run => true
# 要执行的sql
statement => "select * FROM t_blog WHERE update_time > :sql_last_value AND update_time < NOW() ORDER BY update_time desc"
}
jdbc {
#索引的类型
type => "userInfo"
# jdbc 驱动包位置
jdbc_driver_library => "D:\\java\\Software\\es\\logstash-6.3.2\\mysql-connector-java-5.1.41.jar"
# 要使用的驱动包类
jdbc_driver_class => "com.mysql.jdbc.Driver"
# mysql数据库的连接信息(mysql8.0以上版本:一定要把serverTimezone=UTC天加上)
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
# mysql 用户
jdbc_user => "root"
# mysql 用户密码
jdbc_password => "root"
# 定时任务,多久执行一次查询,默认一分钟,如果想要没有延迟,可以使用"* * * * *"
schedule => "* * * * *"
# 清空上次的sql——last_value的记录
clean_run => true
# 要执行的sql
statement => "select * FROM u_user WHERE update_time > :sql_last_value AND update_time < NOW() ORDER BY update_time desc"
}
}
output {
if[type] == "blogInfo"{
elasticsearch{
# es host : host,如果是集群,就用“,”分开,例如["10.127.92.212:9200", "10.127.92.111:9200"]
hosts => ["127.0.0.1:9200"]
# 索引
index => "blog"
# _id
document_id => "%{id}"
}
}
if[type] == "userInfo"{
elasticsearch{
# es host : host
hosts => ["127.0.0.1:9200"]
# 索引
index => "user"
# _id
document_id => "%{id}"
}
}
}
解释:
1、mysql.conf配置文件中的同步sql语句更具实际情况来定,一般改变表名就可以了;
2、output中的索引可以和表明同名
启动同步命令
- 启动命令:
#在logstash的lib目录下打开cmd命令行输入下面的命令,启动数据同步,注意mysql.conf目录位置
logstash -f ../config/mysql.conf