• Docker安装logstash连接Mysql实现数据同步


    Docker安装logstash连接Mysql实现数据同步

    自己在安装过程出现很多错误,主要对配置不够熟悉,这里简单记录一下搭建过程...

    • 拉取logstash镜像
    docker pull logstash:7.2.0
    

    因为我安装的Elasticsearch版本是7.2.0,这里对应安装7.2.0版本的logstash

    • 准备配置文件

    这你的配置文件主要就只包含一个自定义的.conf文件,我们也可以通过配置pipelines.yml,logstash.yml 实现启动时自动配置,因为我这里直接在启动的时候直接加载配置文件,所以pipelines.yml,logstash.yml,我没有配置,里面全是被注释掉了的,当然有日志的配置文件log4j2.properties。 我还定义一个用于存储时间戳的配置文件logstash_metadata,和索引的配置文件index_template.json
    我将自定义的配置文件命名为mysql.conf ,把有需要的文件放在宿主主机的/user/share/logstash/piplines 目录下,等会挂载到docker容器上

    mysql.conf内容

    input {
      stdin {
      }
      jdbc {
      jdbc_connection_string => "jdbc:mysql://ip:端口/数据库名?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC"
      # the user we wish to excute our statement as
      jdbc_user => "用户名"
      jdbc_password => 密码
      # the path to our downloaded jdbc driver  
      jdbc_driver_library => "/usr/share/logstash/config/mysql-connector-java-5.1.40.jar" # 这里是连接mysql的jar包
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver" 
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      #要执行的sql文件
      statement => "select * from course_pub where timestamp > date_add(:sql_last_value,INTERVAL 8 HOUR)"  # 执行的sql命令
      #定时配置
      schedule => "* * * * *"
      record_last_run => true
      last_run_metadata_path => "/usr/share/logstash/config/logstash_metadata" # 这里是上次读取时间戳来与数据库查询到的时间戳进行对比,是否向el添加更改数据
      }
    }
    
    
    output {
      elasticsearch {
      #ES的ip地址和端口
      hosts => "192.168.10.131:9200"
      #hosts => ["localhost:9200","localhost:9202","localhost:9203"]
      #ES索引库名称
      index => "xc_course"
      document_id => "%{id}"
      template =>"/usr/share/logstash/config/index_template.json"  # 这里是索引的模版文件
      template_name =>"xc_course"
      template_overwrite =>"true"
      }
      stdout {
     #日志输出
      codec => json_lines
      }
    }
    
    • 创建logstash容器
    docker run -it -p 5044:5044 -p 9600:9600  --name logstash -v /usr/share/logstash/piplines:/usr/share/logstash/config --privileged=true   logstash:7.2.0 /bin/bash
    

    创建容器后,需要安装logstash-input-jdbc插件。

    > cd /usr/share/logstash/bin
    > logstash-plugin install logstash-input-jdbc
    

    安装完成后执行命令,启动logstash加载自定义的配置文件

    > cd /usr/share/logstash/bin
    > ./logstash -f ../config/mysql.conf
    

    到此我们就可以看到logstash启动成功。

    • 我在安装过程中遇到的问题
      - 要正确配置到我们自定义.conf配置文件中加载文件和jar包在镜像中位置
      - 我在启动logstash后,提示无法加载mysql-connector-java的jar包,这个问题我一开始以为是jar包问题,后来发现是因为,JDK版本的问题,在拉取的镜像中的,创建容器环境中的JDK版本为11,我们需要卸载掉JDK,重新安装JDK版本到1.8版本,就能成功解决无法加载jar包的问题。
  • 相关阅读:
    oracle的安装与plsql的环境配置
    Working with MSDTC
    soapui-java.lang.Exception Failed to load url
    Oracle 一个owner访问另一个owner的table,不加owner
    Call API relation to TLS 1.2
    Call API HTTP header Authorization: Basic
    VS2008 .csproj cannot be opened.The project type is not supported by this installat
    The changes couldn't be completed.Please reboot your computer and try again.
    Create DB Table View Procedure
    DB Change
  • 原文地址:https://www.cnblogs.com/fate-pc/p/13326840.html
Copyright © 2020-2023  润新知