使用logstash同步mysql数据到elasticsearch实现

目录
  • mysql建表test;
    • 安装logstash(跟es版本一致)
    • 新建es索引test
    • 编辑配置文件
    • 启动任务

mysql建表test;

安装logstash(跟es版本一致)

# 下载
wget https://repo.huaweicloud.com/logstash/7.14.2/logstash-7.14.2-linux-x86_64.tar.gz
# 解压
tar -zxvf logstash-7.14.2-linux-x86_64.tar.gz
# 需要mysql-connector-java-5.1.40.jar,随便放到比如目录
# /var/lib/hadoop-hdfs/logstash-7.14.2/lib/mysql-connector-java-5.1.40.jar

新建es索引test

curl -u elastic:changeme -X PUT  http://192.168.20.130:9200/test -H 'Content-Type: application/json' -d'
{
  "settings" : {
      "number_of_shards" : 1,
      "number_of_replicas" : 1
   },
    "mappings" : {
        "properties": {
          "id": {
            "type" : "long"
          },
          "type": {
            "type": "keyword"
          },
          "keyword_1": {
            "type": "text",
            "analyzer" : "ik_smart"
          },
          "keyword_2": {
            "type": "text",
            "analyzer" : "ik_smart"
          },
          "keyword_3": {
            "type": "text",
            "analyzer" : "ik_smart"
          },
          "data": {
            "type": "keyword"
          },
          "created_at": {
            "type": "date",
            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd"
          },
          "updated_at": {
            "type": "date",
            "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd"
          }
      }
    }
}'

编辑配置文件

vim ~/script/logstash/logstash_mysql2es.conf

input {
  stdin{
  }
  jdbc{
    # 连接的数据库地址和数据库,指定编码格式,禁用ssl协议,设定自动重连
    # 此处10.112.103.2为MySQL所在IP地址,也是elastic search所在IP地址
    jdbc_connection_string => "jdbc:mysql://192.168.13.28:3306/test?characterEncoding=UTF-8&useSSL=FALSE&autoReconnect=true"
    #数据库用户名
    jdbc_user => "root"
    # 数据库用户名对应的密码
    jdbc_password => "root"
    # jar包存放位置
    jdbc_driver_library => "/var/lib/hadoop-hdfs/logstash-7.14.2/lib/mysql-connector-java-5.1.40.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_default_timezone => "Asia/Shanghai"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "320000"
    lowercase_column_names => false
    statement => "select id, type, tags, title from test"
  }
}
filter {
    # 移除无关的字段
    mutate {
        remove_field => ["@version", "@timestamp"]
    }
}
output {
  elasticsearch {
    hosts => ["http://192.168.20.130:9200"]
    user => "elastic"
    password => "changeme"
    index => "test"
    document_type => "_doc"
	# 将字段type和id作为文档id
    document_id => "%{type}_%{id}"
  }
  stdout {
    codec => json_lines
  }
}

重要配置参数说明:

  • remove_field => ["@version", "@timestamp"]: 默认logstash会添加这两个字段,这里去掉;
  • document_id => "%{type}_%{id}": 将两个字段拼接作为es的文档id;

启动任务

./logstash-7.14.2/bin/logstash -f script/logstash/logstash_mysql2es.conf

参考资料

以上就是使用logstash同步mysql数据到elasticsearch实现的详细内容,更多关于logstash mysql数据同步elasticsearch的资料请关注我们其它相关文章!

(0)

相关推荐

  • 用python简单实现mysql数据同步到ElasticSearch的教程

    之前博客有用logstash-input-jdbc同步mysql数据到ElasticSearch,但是由于同步时间最少是一分钟一次,无法满足线上业务,所以只能自己实现一个,但是时间比较紧,所以简单实现一个 思路: 网上有很多思路用什么mysql的binlog功能什么的,但是我对mysql了解实在有限,所以用一个很呆板的办法查询mysql得到数据,再插入es,因为数据量不大,而且10秒间隔同步一次,效率还可以,为了避免服务器之间的时间差和mysql更新和查询产生的时间差,所以在查询更新时间条件时是

  • MySQL 与 Elasticsearch 数据不对称问题解决办法

    MySQL 与 Elasticsearch 数据不对称问题解决办法 jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常jdbc源一端的数据库可能会做数据库删除或者更新操作.这样一来数据库与搜索引擎的数据库就出现了不对称的情况. 当然你如果有开发团队可以写程序在删除或者更新的时候同步对搜索引擎操作.如果你没有这个能力,可以尝试下面的方法. 这里有一个数据表 article , mtime 字段定义了 ON UPDATE CURRENT_TI

  • Mysql到Elasticsearch高效实时同步Debezium实现

    目录 题记 1. binlog认知 1.1 啥是 binlog? 1.2 阿里的Canal实现了增量Mysql同步 2.基于binlog的同步方式 3.Debezium介绍 4.同步架构 5.Debezium实现Mysql到ES增删改实时同步 5.1 Debezium安装 5.2 Mysql binlog等相关配置. 5.3 配置connector连接器. 5.4 启动connector 5.5 验证写入是否成功. 5.6 验证消费数据验证写入是否正常 6.kafka-connector实现ka

  • 详解Mysql如何实现数据同步到Elasticsearch

    目录 一.同步原理 二.logstash-input-jdbc 三.go-mysql-elasticsearch 四.elasticsearch-jdbc 五.logstash-input-jdbc实现同步 六.go-mysql-elasticsearch实现同步 七.elasticsearch-jdbc实现同步 一.同步原理 基于Mysql的binlog日志订阅:binlog日志是Mysql用来记录数据实时的变化 Mysql数据同步到ES中分为两种,分别是全量同步和增量同步 全量同步表示第一次

  • 使用canal监控mysql数据库实现elasticsearch索引实时更新

    业务场景 使用elasticsearch作为全文搜索引擎,对标题.内容等,实现智能搜索.输入提示.拼音搜索等 elasticsearch索引与数据库数据不一致,导致搜索到不应被搜到的结果,或者搜不到已有数据 索引相关业务,影响其他业务操作,如索引删除失败导致数据库删除失败 为了减少对现有业务的侵入,基于数据库层面,对信息表进行监控,但需要索引的字段变动时,更新索引 由于使用的是mysql数据库,故决定采用alibaba的canal中间件 主要是监控信息基表base,监控这一张表的数据变动,mq消

  • 使用logstash同步mysql数据到elasticsearch实现

    目录 mysql建表test; 安装logstash(跟es版本一致) 新建es索引test 编辑配置文件 启动任务 mysql建表test; 安装logstash(跟es版本一致) # 下载 wget https://repo.huaweicloud.com/logstash/7.14.2/logstash-7.14.2-linux-x86_64.tar.gz # 解压 tar -zxvf logstash-7.14.2-linux-x86_64.tar.gz # 需要mysql-connec

  • 如何使用Maxwell实时同步mysql数据

    Maxwell简介 maxwell是由java编写的守护进程,可以实时读取mysql binlog并将行更新以JSON格式写入kafka.rabbitMq.redis等中,  这样有了mysql增量数据流,使用场景就很多了,比如:实时同步数据到缓存,同步数据到ElasticSearch,数据迁移等等. maxwell官网:http://maxwells-daemon.io  maxwell源代码:https://github.com/zendesk/maxwell Maxwell的配置与使用 m

  • PHP使用SWOOLE扩展实现定时同步 MySQL 数据

    南宁公司和几个分公司之间都使用了呼叫系统,然后现在需要做一个呼叫通话数据分析,由于分公司的呼叫服务器是在内网,通过技术手段映射出来,分公司到南宁之间的网络不稳定,所以需要把分公司的通话数据同步到南宁. 本身最简单的方法就是直接配置MySQL的主从同步就可以同步数据到南宁来了.但是销售呼叫系统那边的公司不给MySQL权限我们. 所以这个方法只能放弃了. 于是我们干脆的想,使用PHP来实现定时一个简易的PHP定时同步工具,然后PHP进程常驻后台运行,所以首先就先到了一个PHP组件:SWOOLE,经过

  • docker实现MySQL数据同步的方法

    大家好,今天分享一下docker的一个实战 我们使用docker 实现MySQL 的数据同步 搜索mysql 镜像 [root@localhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation- 12222 [OK] mariadb MariaDB Server is a high performing ope

  • Python操作ES的方式及与Mysql数据同步过程示例

    目录 Python操作Elasticsearch的两种方式 mysql和Elasticsearch同步数据 haystack的使用 Redis补充 Python操作Elasticsearch的两种方式 # 官方提供的:Elasticsearch # pip install elasticsearch # GUI:pyhon能做图形化界面编程吗? -Tkinter -pyqt # 使用(查询是重点) # pip3 install elasticsearch https://github.com/e

  • 怎么使 Mysql 数据同步

    怎么使 Mysql 数据同步 先假设有主机 A 和 B ( Linux 系统),主机 A 的 IP 分别是 1.2.3.4 (当然,也可以是动态的),主机 B 的 IP 是 5.6.7.8 .两个主机都装上了 PHP+Mysql ,现在操作的是主机 A 上的资料,如果另外一个主机 B 想跟 A 的资料进行同步,应该怎么做呢? OK,我们现在就动手. 首先,如果要想两个主机间的资料同步,一种方法就是主机 A 往主机 B 送资料,另外一种主法就是主机 B 到主机 A 上拿资料,因为 A 的 IP 是

  • Linux下实现MySQL数据备份和恢复的命令使用全攻略

    为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有三种备份恢复方式: 1.利用Mysqldump+二进制日志实现备份 2.利用LVM快照+二进制日志实现备份 3.使用Xtrabackup备份 一:实验环境介绍: 系统介绍:CentOS6.4_X64 数据库版本:mysql-5.5.33 二:基于Mysqldump命令实现备份恢复 2.1.思路概念

  • Django读取Mysql数据并显示在前端的实例

    前言: 由于使用Django框架来做网站,需要动态显示数据库内的信息,所以读取数据库必须要做,写此博文来记录. 接下来分两步来做这个事,添加网页,读取数据库: 一.添加网页 首先按添加网页的步骤添加网页,我的网页名为table.html, app名为web: table.html放到相应目录下: forms.py文件提前写好: 修改views.py,做好视图 from django.shortcuts import render from web import forms def table(r

  • MySQL数据误删除的快速解决方法(MySQL闪回工具)

    概述 Binlog2sql是一个Python开发开源的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,去除主键的INSERT SQL,是DBA和运维人员数据恢复好帮手. 一.安装配置 1.1 用途 数据快速回滚(闪回) 主从切换后新master丢数据的修复 从binlog生成标准SQL,带来的衍生功能 支持MySQL5.6,5.7 1.2 安装 shell> git clone https://github.com/danfengc

随机推荐