Logstash同步Mysql数据至ES

这篇具有很好参考价值的文章主要介绍了Logstash同步Mysql数据至ES。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、安装logstash

官方文档

注意版本要和自己的es版本一致

下载地址:logstash

上传至服务器并进行解压。

二、下载mysql连接jar包

1、通过官网下载mysql连接jar包

下载地址:mysql 连接jar包

根据自己mysql版本和系统进行选择

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎​ 

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

2、在IDEA中复制msyql连接jar包

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

三、移动jar包位置

将jar包移动至/logstash/logstash-core/lib/jars/下

四、创建mysql表

1、建表

CREATE TABLE `test` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '名称',
  `num` int DEFAULT NULL COMMENT '数量',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `create_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建者',
  `update_by` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改者',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

3、添加数据

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 五、创建es索引

PUT test_logstash
{
  "mappings": {
    "properties": {
      "id":{
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "standard"
      },
      "num":{
        "type": "keyword"
      },
       "createTime":{
        "type": "date",
         "format": "yyyy-MM-dd HH:mm:ss"
      },
      "updateTime":{
        "type": "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
      "creat_by":{
        "type": "keyword"
      },
      "update_by":{
        "type": "keyword"
      }
    }
  }
}

六、编写.conf文件

1、进入logstash的bin目录下,创建文件testlogstash.conf,编辑文件。

input {
	stdin {}
	jdbc {
		type => "jdbc"
		 # 数据库连接地址
		jdbc_connection_string => "jdbc:mysql://xxxxx:3306/TestDB?characterEncoding=UTF-8&autoReconnect=true"
		 # 数据库连接账号密码;
		jdbc_user => "root"
		jdbc_password => "xxxxx"
		 # MySQL依赖包路径;
		jdbc_driver_library => "/usr/local/logstash/logstash-core/lib/jars/mysql-connector-java-8.0.29.jar"
		 # the name of the driver class for mysql
		jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
		 # 数据库重连尝试次数
		connection_retry_attempts => "3"
		 # 判断数据库连接是否可用,默认false不开启
		jdbc_validate_connection => "true"
		 # 数据库连接可用校验超时时间,默认3600S
		jdbc_validation_timeout => "3600"
		 # 开启分页查询(默认false不开启);
		jdbc_paging_enabled => "true"
		 # 单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值);
		jdbc_page_size => "500"
		 # statement为查询数据sql,如果sql较复杂,建议配通过statement_filepath配置sql文件的存放路径;
		 # sql_last_value为内置的变量,存放上次查询结果中最后一条数据tracking_column的值,此处即为ModifyTime;
		 # statement_filepath => "mysql/jdbc.sql"
		statement => "SELECT t.id as id,t.`name` as name,t.num as num,t.create_by as createBy,DATE_FORMAT(t.create_time,'%Y-%m-%d %H:%i:%s') as createTime,t.update_by as updateBy,DATE_FORMAT(t.update_time,'%Y-%m-%d %H:%i:%s') as updateTime  FROM product as t WHERE DATE_FORMAT(t.update_time,'%Y-%m-%d %H:%i:%s') >= DATE_FORMAT(:sql_last_value,'%Y-%m-%d %H:%i:%s') order by t.update_time asc"
		 # 是否将字段名转换为小写,默认true(如果有数据序列化、反序列化需求,建议改为false);
		lowercase_column_names => false
		 # Value can be any of: fatal,error,warn,info,debug,默认info;
		sql_log_level => warn
		 #
		 # 是否记录上次执行结果,true表示会将上次执行结果的tracking_column字段的值保存到last_run_metadata_path指定的文件中;
		record_last_run => true
		 # 需要记录查询结果某字段的值时,此字段为true,否则默认tracking_column为timestamp的值;
		use_column_value => true
		 # 需要记录的字段,用于增量同步,需是数据库字段
		tracking_column => "updateTime"
		 # Value can be any of: numeric,timestamp,Default value is "numeric"
		tracking_column_type => timestamp
		 # record_last_run上次数据存放位置;
		last_run_metadata_path => "/data/last_time.txt"
		 # 是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false;
		clean_run => false
		 #
		 # 同步频率(分 时 天 月 年),默认每分钟同步一次;
		schedule => "* * * * *"
	}
}
 

output {
	elasticsearch {
		 # host => "localhost"
		 # port => "9200"
		 # 配置ES集群地址
		hosts => ["xxxx:9200"]
		 # 索引名字,必须小写
		index => "test_logstash"
		 # 数据唯一索引(建议使用数据库KeyID)
		document_id => "%{id}"
	}
	stdout {
		codec => json_lines
	}
}

2、建立缓存

用于记录上次同步的位置:last_time.txt

七、启动logstash

1、执行启动命令

进入安装logstash的bin目录,执行命令:

./logstash -f testlogstash.conf

 

2、结果

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

3、修改mysql数据库数据

在.conf文件中配置了定时同步的任务

logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎

 logstash同步mysql数据到es,elasticsearch,大数据,搜索引擎文章来源地址https://www.toymoban.com/news/detail-693823.html

到了这里,关于Logstash同步Mysql数据至ES的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Logstash同步MySQL数据到ElasticSearch

    当MySQL数据到一定的数量级,而且索引不能实现时,查询就会变得非常缓慢,所以使用ElasticSearch来查询数据。本篇博客介绍使用Logstash同步MySQL数据到ElasticSearch,再进行查询。 测试环境 Windows系统 MySQL 5.7 Logstash 7.0.1 ElasticSearch 7.0.1 Kibana 7.0.1 ELK工具下载可访问:https://www.elastic

    2024年02月01日
    浏览(11)
  • Docker部署Logstash同步Mysql数据到ES

    Docker部署Logstash同步Mysql数据到ES

    页面访问 ip:9200端口,出现下面页面部署成功 成功日志

    2024年04月13日
    浏览(10)
  • 通过logstash实现mysql与es的双向数据同步

    通过logstash实现mysql与es的双向数据同步

    参考题目 一种基于MySQL和Elasticsearch的数据同步方法及系统 基于MySQL和Elasticsearch的数据同步方法 一种基于MySQL和Elasticsearch的数据同步系统 基于MySQL和Elasticsearch的数据同步技术 目录 1【理论调研】 方案1:使用Logstash实现数据同步 方案2:使用Canal实现数据同步 方案3:使用Debe

    2024年02月15日
    浏览(12)
  • 【elasticsearch专题】:Logstash从入门到同步MySQL数据

    【elasticsearch专题】:Logstash从入门到同步MySQL数据

      Elasticsearch是在数据处理生态系统中担任一个开源的分布式 搜索 和 分析 引擎的角色,专为 存储 、 检索 和分析大量的数据而打造。与此相伴的是Kibana,一个开源数据可视化平台,用于以优雅的方式展示Elasticsearch中的数据,并赋予用户创建仪表盘、图表和报告的能力。然

    2024年02月04日
    浏览(11)
  • 使用Logstash同步mysql数据到Elasticsearch(亲自踩坑)

    使用Logstash同步mysql数据到Elasticsearch(亲自踩坑)

    这篇文章主要介绍了如何使用Logstash同步mysql数据到Elasticsearch(亲自踩坑),如果帮助到了大家,希望用你毛茸茸的小手点个赞🤗;如有错误或未考虑周全的地方,希望在评论区留言🫡 Logstash官方文档提供了解决方案 一. 安装Logstash Logstash下载地址 下载版本一定要和Elastics

    2024年04月09日
    浏览(11)
  • Logstash 同步MySQL数据 至 开启HTTPS的ElasticSearch

    最近因为一些原因被迫学习了一周多的ElasticSearch,记录一下遇到的小问题。 此文件我理解为是Logstash的 * 可编译文件 *,我们通过编写此文件然后运行logstash去编译执行来让我们的数据按照自身期望的去传输。该文件主要包括input、filter和output三个部分,其中input和output是必要

    2024年02月01日
    浏览(11)
  • Lostash同步Mysql数据到ElasticSearch(二)logstash脚本配置和常见坑点

    Lostash同步Mysql数据到ElasticSearch(二)logstash脚本配置和常见坑点

    新建脚本文件夹 cd /usr/local/logstash mkdir sql cd sql vim 表名称.conf #如: znyw_data_gkb_logstash.conf 建立文件夹,保存资源文件更新Id mkdir -p /data/logstash/data/last_run_metadata 脚本JDBC插件参数说明: 第一步要做的事情,配置logstasht同步脚本文件,内容如下: 第二部要做的事情,根据_mapping.

    2024年02月07日
    浏览(15)
  • 使用Logstash和JDBC将MySQL的数据导入到Elasticsearch(ES)的过程

    使用Logstash和JDBC将MySQL的数据导入到Elasticsearch(ES)的过程包含多个步骤。请注意,首先你需要准备好的JDBC驱动,Logstash实例,Elasticsearch实例,以及你希望导入的MySQL数据。 安装Logstash JDBC Input Plugin :Logstash包含大量插件,其中一个就是JDBC Input Plugin,可以用于从JDBC兼容的数据库

    2024年02月15日
    浏览(11)
  • DataX实现Mysql与ElasticSearch(ES)数据同步

    DataX实现Mysql与ElasticSearch(ES)数据同步

    jdk1.8及以上 python2 查看是否安装成功 查看python版本号,判断是否安装成功 在datax/job下,json格式,具体内容及主要配置含义如下 mysqlreader为读取mysql数据部分,配置mysql相关信息 username,password为数据库账号密码 querySql:需要查询数据的sql,也可通过colums指定需要查找的字段(

    2024年02月05日
    浏览(12)
  • 使用logstash把mysql同步到es,Kibana可视化查看

    使用logstash把mysql同步到es,Kibana可视化查看

    Logstash下载地址:https://www.elastic.co/cn/downloads/logstash

    2024年02月02日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包