mysql与elasticsearch数据同步

准备工作:logstash

  1. 下载logstash: https://www.elastic.co/cn/downloads/past-releases#logstash ,版本要与安装的ES版本一致;
  2. 下载mysql-connector-java-5.1.41.jar: 版本根据实际情况选择;

添加mysql驱动jar包

  1. 解压下载好的logstash
  2. 添加mysql驱动:,将下载好的mysql-connector-java-5.1.41.jar添加到logstash目录中,与logstash的config目录同级;
  3. **(单表同步)配置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}"    
		}
	}
  1. **(多表同步)配置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中的索引可以和表明同名

启动同步命令

  1. 启动命令:
#在logstash的lib目录下打开cmd命令行输入下面的命令,启动数据同步,注意mysql.conf目录位置
logstash -f ../config/mysql.conf

这样就可以通过logstash实现mysql与es的数据同步问题了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值