安装 logstash 和 logstash-input-jdbc 实现数据同步到 es(高版本)

  1. 下载es 安装 省略… 我这里安装的是7.5.0

一 安装logstash
下载安装(后面可以改成不同的版本)

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.zip

下载完之后 解压

unzip logstash-7.5.0.zip

进入 bin 目录下面执行

./logstash -e ""

等会出现seccessfullt 输入hello
在这里插入图片描述
看到这个就成功了

二、安装logstash-input-jdbc插件

  1. 如果没有安装 gem 的话 安装gem

    sudo yum install gem
    
  2. 替换源 原来淘宝的gem源已经停止维护,现在由ruby-china提供镜像服务

    gem source -a https://gems.ruby-china.com
    

    安装完以后,输入以下命令查看是否替换成功

    gem sources -l
    

    如果看到的不止一个源 那你需要删掉一个

    sudo vim ~/.gemrc 
    

    手动删除 https://rubygems.org/
    如果结果是这样 那就可以了

    *** CURRENT SOURCES ***
    
    https://gems.ruby-china.com
    
  3. 修改Gemfile的数据源地址。步骤:

     whereis logstash # 查看logstash安装的位置, 
    sudo vi Gemfile # 
    修改 source 的值 为: "https://gems.ruby-china.com"
    sudo vi Gemfile.jruby-1.9.lock # 找到 remote 修改它的值为: https://gems.ruby-china.com 
    ps:如果版本高的话 可能不是Gemfile.jruby-1.9.lock  而是 直接Gemfile.lock  都一样直接编辑就行
    
  4. 安装logstash-input-jdbc (这里提供一种方法的安装)

    直接根据plugin安装 在bin 下面

    plugin install logstash-input-jdbc
    

    这里后面可以改对应的版本

    cd logstash-7.5.0
    wget https://github.com/logstash-plugins/logstash-input-jdbc/archive/v1.0.0.zip
    unzip v1.0.0.zip
    cd logstash-input-jdbc-1.0.0/
    

    需要更新里面的文件内容

    vim logstash-input-jdbc.gemspec
    

    改为

    s.files = `git ls-files`.split($\)
    改为:
    s.files = [".gitignore", "CHANGELOG.md", "Gemfile", "LICENSE", "NOTICE.TXT", "README.md", "Rakefile", "lib/logstash/inputs/jdbc.rb", "lib/logstash/plugin_mixins/jdbc.rb", "logstash-input-jdbc.gemspec", "spec/inputs/jdbc_spec.rb"]
    

    bulid一下

    gem build logstash-input-jdbc.gemspec
    

    这里运行这个文件 看了几个版本的 命令是

    这是低版本的 有plugin

    sudo bin/plugin install logstash-input-jdbc
    

    高版本的移除这个命令可以用别的 看bin 目录下面有哪个bat 试试

    sudo bin/plugin install logstash-input-jdbc.gemspec
    

    如果提示
    在这里插入图片描述

    这里不要用root 用户 用普通的用户 将权限给 这个用户就行了

    三、同步es 数据库

    1. 下载mysql-connector-java 驱动

       ```
       wget  wget https://dev.mysql.com/get/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.46.tar.gz
       tar -zxvf mysql-connector-java-5.1.46.tar.gz 
       ```
      
      1. 新建配置目录:sync-config
        编辑 文件 /usr/local/logstash/sync-config/cicadaes.conf
      input {
          stdin {}
          jdbc {
              jdbc_connection_string => "jdbc:mysql://***********?characterEncoding=utf8"
              jdbc_user => "****"
              jdbc_password => "*******!"
              jdbc_driver_library => "/JM/logstash-7.5.0/sqlJar/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar"
              jdbc_driver_class => "com.mysql.jc.jdbc.Driver"
              jdbc_paging_enabled => "true"
              jdbc_page_size => "50000"
              jdbc_default_timezone => "Asia/Shanghai"
              statement_filepath => "/JM/logstash-7.5.0/sync-config/location_sql.sql"
              schedule => "* * * * *"
              type => "location"
              lowercase_column_names => false
              record_last_run => true
              use_column_value => true
              tracking_column => "updateTime"
              tracking_column_type => "timestamp"
              last_run_metadata_path => "/JM/logstash-7.5.0/sync-config/user_last_time"
              clean_run => false
          }
      }
      filter {
          json {
              source => "message"
              remove_field => ["message"]
          }
      }
      output {
          if [type] == "location" {
              elasticsearch {
                  hosts => ["127.0.0.1:9200"]
                  index => "fengyu"
                  document_type => "location"
              }
          }
      }
      
    2. SQL文件

      select id,order_number orderNumber,
      car_number carNumber,
      lng,
      lat,
      address,
      speed,
      direction,
      province,
      city,
      country,
      location_time locationTime,
      driver_code driverCode,
      driver_name driverName,
      driver_phone driverPhone
      from jm_order_location
      WHERE update_time > : sql_last_value;
      
      
    3. 配置参数说明
      input 说明

      statement_filepath:读取SQL语句位置
      schedule :这里配置每分钟执行一次
      type :类型,写入ES的标识
      lowercase_column_names :字段是否转小写
      record_last_run :记录上次执行时间
      use_column_value :使用列的值
      tracking_column :根据写入ES的updateTime字段区分增量数据
      tracking_column_type :区分的字段类型
      

      output 说明

      hosts :ES服务地址
      index :Index名称,类比理解数据库名称
      document_type :Type名称,类比理解表名称
      
    4. 启动

      /usr/local/logstash/bin/logstash  
      -f  
      /usr/local/logstash/sync-config/cicadaes.conf
      

    四 问题说明

    1. 解析不到jar包
    LogStash::PluginLoadingError
     	com.mysql.cj.jdbc.Driver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?
    

    这是问题可能是 需要将 jar 包 放在 logstash-core/lib/jars/下面

    1. 连接不上数据库
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    
    

猜你喜欢

转载自blog.csdn.net/hgdzw/article/details/105367967