热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用Logstash实现ES和MySQL同步

2019独角兽企业重金招聘Python工程师标准利用logstash实现ES和MySQL同步1.ES和MySQL同步方法编程式使用之前的elasticdump,

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

利用logstash实现ES和MySQL同步

1. ES和MySQL同步方法


  1. 编程式

    • 使用之前的elasticdump,手动变成生成json文件,编写shellscript导入ES。后续的数据新增使用PHP或kava客户端进行编程触发同步。
  2. 使用插件(没有什么特别好的插件)

    • 国人编写的go-mysql-elasticsearch(go开发)
    • 官方推荐基于logstash的插件logstash-input-jdbc
  3. 自己写

    • 采用阿里巴巴的一个开源项目canal,可以模拟mysql从服务器。封装了bin-log分析,我们可以自己开发一个客户端可以更好地控制数据同步。

2. logstash-input-jdbc同步方法


  1. 下载mysql+java驱动包:https://dev.mysql.com/downloads/connector/j/

  2. 配置文件

    input {jdbc {jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"jdbc_user => "mysql"parameters => { "favorite_artist" => "Beethoven" }schedule => "* * * * *"statement => "SELECT * from songs where artist = :favorite_artist"}}

    • 文档:https://www.elastic.co/guide/en/logstash/master/plugins-inputs-jdbc.html
    • 关于 schedule => "* * * * *"
      • 类似于Linux的crond的配置
      • 从左往右 分 时 日 月 年 (最小单位:分)
      • 全部写*表示每分钟都更新
        • 5 * * * 表示每天5点钟更新
        • 5 * 1 * 表示一月份每天5点更新
  3. 准备数据,创建mysql表jt_news

    CREATE TABLE `jt_news` (`news_id` int(11) NOT NULL AUTO_INCREMENT,`news_title` varchar(64) DEFAULT NULL,`news_abstract` varchar(64) DEFAULT NULL,`news_updatetime` datetime DEFAULT NULL,`news_clicknum` int(3) DEFAULT NULL,`news_class` varchar(64) DEFAULT NULL,PRIMARY KEY (`news_id`)) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

    INSERT INTO `jt_news` VALUES (1,'Java开发新闻','Java新闻摘要','2017-09-28 11:14:49',11,'编程语言'),(2,'PHP开发新闻','PHP新闻摘要','2017-09-28 11:15:13',13,'web开发'),(3,'js前后端分离','Javascript','2017-09-28 11:15:38',1,'web开发');

  4. 创建索引(mapping)

    PUT jtthink-test{"mappings": {"jt_news": {"properties": {"news_title": {"type": "text","analyzer": "ik_max_word"},"news_abstract": {"type": "text","analyzer": "ik_max_word"},"news_updatetime": {"type": "date"},"news_clicknum": {"type": "integer"},"news_class": {"type": "keyword"}}}}}

  5. 创建配置文件 mysql.conf

    • 在logstash/bin下创建(该目录可变)

    • 文件内容

      input {jdbc {jdbc_driver_library => "/usr/local/drivers/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_connection_string => "jdbc:mysql://localhost:3306/jtthink"jdbc_user => "root"jdbc_password => "shadowolf1995."statement => "SELECT * from jt_news order by news_id desc"tracking_column => "news_updatetime"tracking_column_type => "timestamp"schedule => "* * * * *"}}filter {}output {stdout {codec => rubydebug}elasticsearch {hosts => ["127.0.0.1:9201"]index => "jtthink-test"document_id => "%{news_id}"}}

  6. 启动logstash

    ./logstash -f mysql.conf

  7. 使用kibana创建index jtthink-test,查看数据。


转:https://my.oschina.net/shadowolf/blog/1586193



推荐阅读
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
author-avatar
爱在运动-666_517
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有