Logstash将mysql文件导入到elasticsearch及配置文件介绍

      Logstash将mysql文件导入到elasticsearch及配置文件介绍

参考博客:https://blog.csdn.net/qq_30581017/article/details/79569214

一、logstash介绍

1、简介

Logstash是一款开源的数据收集引擎,具备实时管道处理能力。简单来说,logstash作为数据源与数据存储分析工具之间的桥梁,结合 ElasticSearch以及Kibana,能够极大方便数据的处理与分析。通过200多个插件,logstash可以接受几乎各种各样的数据。包括日志、网络请求、关系型数据库、传感器或物联网等等。

2、图片介绍

二、安装环境介绍

1、系统环境

虚拟机环境:Centos7.0(64位)

jdk环境:jdk1.8

Es和kibana以及Ik分词器版本:6.6.1(这个版本对应很重要)

2、logstash下载

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

 

三、logstash安装

1、logstash安装步骤

将logstash压缩文件上传到/usr/local文件夹下(个人文件存放地址可能不同),解压缩。

2、下载logstash后查看是否安装成功

进入到logstash目录下bin目录,注意这里一定需要以root用户登录(切换用户可以输入命令 su root,输入密码可以切换用户root)

执行以下命令:

./logstash -e 'input { stdin { } } output { stdout {} }'

看到以下输出就说明安装成功:

 

四、mysql-connect-java.jar下载以及配置mysql信息

1、mysql-connect-java.jar下载

        下载地址:https://dev.mysql.com/downloads/connector/j/

2、logstash配置mysql-connect-java.jar

在logstash同级目录下新建mysql-connet文件夹并上传jar包

mkdir mysql-connect
注意事项:下载jar文件后在window进行解压,将解压后的jar文件上传/usr/local/mysql-connet文件夹下(个人存放jar地址,依据个人)

cd到logstash目录bin目录下,新建文件夹config-mysql,打开并写入mysql.conf文件内容

input {
    stdin{
    }
    jdbc {
      # 数据库
      jdbc_connection_string => "jdbc:mysql://192.168.#.#:3306/databasename"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "root"
      # jar包的位置(上一步jar包存放位置)
      jdbc_driver_library => "/usr/local/mysql-connect/mysql-connector-java-8.0.15.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #读取本地文件配置
      #statement_filepath => "config-mysql/test02.sql"
      #数据配置,注意该处一定不能以;结尾
      statement => "select * from t_supervision"
      #定时执行时间
      schedule => "* * * * *"
      #索引的类型
      type => "vision"
    }
}

output {
    elasticsearch {
        hosts => "192.168.#.#:9200" //个人虚拟机ip地址
        # index名
        index => "supervision"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

五、测试同步数据

进入bin目录下,输入命令(注意这里config.mysql是目录不是文件名,如果不加–path.data=/root/会报错,多个实例时需要加上path.data才可以哦, 这里也要是root用户登录)

执行以下命令:

./logstash -f config-mysql --path.data=/root/

等待十几秒时间......

看到以上结果则表示配置成功!!!!!!

在kibana 中进行查询:

 

六、logstash导入mysql多数据源数据

推荐博客:https://blog.csdn.net/laoyang360/article/details/75452953/#commentBox

1、修改自定义的mysql.conf配置文件

进入到mysql.conf配置文件进行编辑:

cd bin/mysql-config
vi mysql.conf

新建input下jdbc,以及output elasticsearch文件

input {
    stdin{
    }
      # 单表操作  
    jdbc {
      # 数据库
      jdbc_connection_string => "jdbc:mysql://39.104.50.93:3309/zikaoshu_teambattle_center"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "root"
      # jar包的位置
      jdbc_driver_library => "/usr/local/mysql-connect/mysql-connector-java-8.0.15.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 对应着要执行的sql的绝对路径
      #statement_filepath => "config-mysql/test02.sql"
      statement => "select * from t_supervision"
      schedule => "* * * * *"
      #索引的类型
      type => "score"
    }
    # 单表操作
    jdbc {
      # 数据库
      jdbc_connection_string => "jdbc:mysql://39.104.50.93:3309/zikaoshu_teambattle_center"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "root"
      # jar包的位置
      jdbc_driver_library => "/usr/local/mysql-connect/mysql-connector-java-8.0.15.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #statement_filepath => "config-mysql/test02.sql"
      statement => "select * from t_team_season"
      schedule => "* * * * *"
      #索引的类型
      type => "season"
    }
    # 多表联合查询
    jdbc {
      # 数据库
      jdbc_connection_string => "jdbc:mysql://39.104.50.93:3309/zikaoshu_teambattle_center"
      # 用户名密码
      jdbc_user => "root"
      jdbc_password => "root"
      # jar包的位置
      jdbc_driver_library => "/usr/local/mysql-connect/mysql-connector-java-8.0.15.jar"
      # mysql的Driver
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #statement_filepath => "config-mysql/test02.sql"
      statement => "select tm.id,tm.openid from t_team as t inner join t_team_member as tm on tm.team_id = t.id where t.id = 10"
      schedule => "* * * * *"
      #索引的类型
      type => "team"
    }
}


output {
   if [type]=="score" {
    elasticsearch {
        hosts => "192.168.27.141:9200"
        # index名
        index => "teamscore"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
   if [type]=="season" {
    elasticsearch {
        hosts => "192.168.27.141:9200"
        # index名
        index => "teamseason"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
   if [type]=="team" {
    elasticsearch {
        hosts => "192.168.27.141:9200"
        # index名
        index => "teammember"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
    stdout {
        codec => json_lines
    }
}

kibana工具进行查看:

 

2、logstash导入大量数据问题集锦

a、用logstash同步mysql数据到elasticsearch,原始数据有几千万条,发现过了几十万条之后,到了后面同步就特别慢,无法完成同步 

推荐博客:https://blog.csdn.net/qq_16272049/article/details/80642894

b、内存泄露

推荐博客:https://elasticsearch.cn/question/4237

 

 

七、mysql.conf配置文件详情介绍

1、input

1、schedule 定时器 多久执行一次SQL,默认是一分钟(schedule => * *  *  *  *)
   # schedule =>    分 时 天 月 年  
   # schedule => * 22  *  *  *     表示每天22点执行一次  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值