ES Logstash 8.x 同步 mysql

Elasticsearch专栏入口

EKL部署:Elasticsearch + Kibana+Logstash 8.x版本部署(linux)

目录

  • 一、Logstash环境准备
    • 1.1 logstash下载
    • 1.2 基础配置
  • 二、Logstash同步mysql配置
    • 2.1 配置
    • 2.2 测试
    • 2.3启动

一、Logstash环境准备

1.1 logstash下载

# 确认位置

cd /usr/local

# 下载

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.1.2-linux-x86_64.tar.gz

# 解压
tar -zxvf logstash-8.1.2-linux-x86_64.tar.gz

# 删除安装包
rm -rf logstash-8.1.2-linux-x86_64.tar.gz

# 改名
mv logstash-8.1.2/ logstash

1.2 基础配置

# 确定位置
cd /usr/local/logstash

# 进入配置文件
vim config/logstash.yml

# 末尾直接添加
http.host: "0.0.0.0"
node.name: logstash

# 添加mysql目录
mkdir mysql

# 移动至目录
cd mysql

# 下载 驱动 mysql-connector
wget https://cdn.mysql.com//archives/mysql-connector-java-8.0/mysql-connector-java-8.0.15-1.el7.noarch.rpm

# 下载下来时rpm格式 解压
rpm2cpio mysql-connector-java-8.0.15-1.el7.noarch.rpm | cpio -div

# 把jar包移出
mv usr/share/java/mysql-connector-java-8.0.15.jar ./

# 删除多余的文件
rm -rf mysql-connector-java-8.0.15-1.el7.noarch.rpm
rm -rf usr/

# 退出mysql目录
cd ..

# 进入最终同步配置
vim config/mysql.conf 

二、Logstash同步mysql配置

2.1 配置

input {
  jdbc {
# mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://ip/tiantiantsouti?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      # 用户名和密码
      jdbc_user => ""
      jdbc_password => ""

      # 驱动
      jdbc_driver_library => "/usr/local/logstash/mysql/mysql-connector-java-8.0.15.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"

      #是否分页
      jdbc_paging_enabled => "true"
      jdbc_page_size => "5000"

      #直接执行sql语句 增量同步
      statement => "select * from questions WHERE id >= :sql_last_value"

      # 执行的sql 文件路径+名称
      # statement_filepath => "/usr/local/logstash/mysql/question.sql"

      # 是否记录某个字段值,true为我们自定义一个字段值,flase为默认的时间戳.
      use_column_value => true

      # 记录字段的类型默认时numeric数字还可以是timestamp
      tracking_column_type => "numeric"

      # 设置新的记录字段
      tracking_column => "id"

      # 如果是true,每次将新的id更新到指定文件中
      record_last_run => true

      # 关闭时是否清除记录文件,false为不清除
      clean_run => false

      # 保存位置
      last_run_metadata_path => "/usr/local/logstash/last_time_000"
      
      # 更新时间间隔 现在5个*这个为默认 1分钟1更新
      schedule => " * * * * * "
    }
}


output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://ip:9200"]
        #ES索引名称(自己定义的)
        index => "index"
        #设置数据的id为数据库中的字段 id需要换成mysql中的id 名必须为小写不然无法带入
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

2.2 测试

# 目录后退
cd ..
#  测试
bin/logstash -f config/mysql.conf -t
# 返回信息最后应该时这样的
Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

2.3启动

# 成功后启动 
bin/logstash -f config/mysql.conf

# nohup 后台启动 两种都可
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/mysql.conf > nohup.out 2>&1 &

你可能感兴趣的:(Elasticsearch,elasticsearch,数据库,大数据,mysql,搜索引擎)