文档章节

Logstash实时同步mysql数据库至elastic

 大东家
发布于 2017/05/09 15:49
字数 391
阅读 341
收藏 2

 

  1. 安装logstash-jdbc-input 插件(教程自己找)
  2. 运行 logstash -f D:\logstash-5.2.2\config\shipper.config
  3. shipper文件中的主要目标,定时刷新最新有变更的(依据update_date)数据至elastic,初始时直接插入,elastic检测到id相同时,则更新自有的数据。
  4. shipper.config 文件内容:
input {
    jdbc{
	 type => "sys_user"
	 #The path to our download jdbc driver
	 jdbc_connection_string => "jdbc:mysql://192.168.133.4:3306/orderproduction_temp?useUnicode=true&characterEncoding=utf-8"
	 jdbc_driver_library => "D:\logstash-5.2.2\driver\mysql-connector-java-5.1.39.jar"
	 jdbc_driver_class => "com.mysql.jdbc.driver"
	 
	 #The user we wish to execute our statement as
	 jdbc_user => "root"
	 jdbc_password => "dbserver666"
	 
	 #last_run_metadata_path => "./logstash_last_run_display"
	 
	 #every 5 minutes execute
	 #schedule => "*/5 * * * *"
	 schedule => "* * * * *"
	 #if clean_run set to true, sql_last_value is set to 19700101
	 #clean_run => true 
	 last_run_metadata_path => "./logstash_jdbc_last_run"
	 #out query
	 #parameters => {"name" => "长沙大东家"}
	 #statement => "select * from sys_user where name = :name"
	 statement => "select * from sys_user where update_date > :sql_last_value"
	 use_column_value => true
	 tracking_column => "update_date"
	 
	 jdbc_paging_enabled => "true"
	 jdbc_page_size => "1000"
	 
	 jdbc_default_timezone =>"Asia/Shanghai"
	}
}

filter {
			#grok{
			                #break on first match ,when there are multiple pattern need to cope
						    #break_on_match=>true
							#extract year and date info from create_date field
							#match => ["create_date","%{YEAR:year}-%{MONTH:month}-dd HH:mm:ss"]
							#add_field =>{
							#	"yearmonth" => "%{year}-%{month}"
							#}
			#}
			ruby {
		          #note 1 ruby need to be put before mutate
			      #note 2 if not run or correctly run ruby ,please install jruby and try it again
			      #in  linux, if hostname is no configured in hosts file, logstash get 0.0.0.0 ,so we add this code to get hostname on linux platform IO.popen('hostname')
			          #init => "require 'time'"
		              code => "
                               # IO.popen('hostname') { |io| while (line = io.gets) do event['host']=line end }
								# get date from path
								event.set('yearmonth',event.get('create_date').to_s[0..6])
                           "
		   }
			#date {
				 #use timezone is to avoid the value subtract timezone,if +8 zone,hours will be -8,in deploy situation ,please check the     hour value is correct, if not try remove timezone
			#	 timezone=>"Asia/Shanghai"
			#	 match => ["create_date","YYYY-MM-dd HH:mm:ss +0800"]
			#	 target => "@timestamp"
			#}
}

output {
   #stdout{ codec => json_lines  }
   stdout { codec => rubydebug }
   elasticsearch{
   "hosts" => "192.168.133.4:9200"
   "index" => "orderproduction_%{yearmonth}"
   "document_type" => "%{type}"
   "document_id" => "%{id}"
   doc_as_upsert => true
   action => "update"
   }
}

 

© 著作权归作者所有

粉丝 22
博文 255
码字总数 111936
作品 0
长沙
项目经理
私信 提问
ES(elasticsearch)搜索引擎

ES(elasticsearch)搜索引擎 0、授人以渔,少走半年弯路! 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! 一、Elasitcsearch基础篇 1.1 Elasitcsearch基础认知 1、Elasticse...

Ocean_K
2018/09/11
1K
6
开源数据同步神器——canal

前言 如今大型的IT系统中,都会使用分布式的方式,同时会有非常多的中间件,如redis、消息队列、大数据存储等,但是实际核心的数据存储依然是存储在数据库,作为使用最广泛的数据库,如何将m...

IT米粉
01/10
0
0
ES 译文之如何使用 Logstash 实现关系型数据库与 ElasticSearch 之间的数据同步

译者前言 近期的主要工作是在为公司的 APP 增加搜索功能。因为也遇到了需要把关系型数据库中的数据同步 ElasticSearch 中的问题,故抽了点时间翻译了这篇官方的博文。最近,在数据同步方面也...

java高并发
07/11
0
0
基于ELK 搭建网站流量可视化监控平台

ELK 组成:: 通过上图我们可以看到,ELK 是由三个Elastic 的产品组合而成, 分别是ElasticSearch、Logstash 和Kibana。 三者之间是的部署关系如下图所示: 基本工作原理如下图所示: Logsta...

Java搬砖工程师
2018/12/21
240
0
CentOS7.3下ELK日志分析系统集群搭建

Elasticsearch是个基于Lucene实现的开源、分布式、restful的全文本搜索引擎,此外他还是一个分布式实时文档存储,其中每个文档的每个filed均是可被索引的数据,且可被搜索,也是一个带实时分...

wujunqi1996
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部