通过Logstach把mysql数据同步到ElasticSearch

1.下载最新版的logstash安装包

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz

2.解压logstash

tar -xzvf logstash-7.4.0.tar.gz

 3.进入到 logstash目录下安装插件 logstash-input-jdbc

到此已经完成了安装部分,下面进行配置配置文件

4.先在安装目录bin下面(一般都是在bin下面)新建两个文件jdbc.conf和jdbc.sql

jdbc.conf内容:

 input {
       stdin {
        }
       jdbc {
         # 连接的数据库地址和哪一个数据库,指定编码格式,禁用SSL协议,设定自动重连
         jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/microstorage_backend?characterEncoding=UTF-8&useSSL=false&autoReconnect=true"
         jdbc_user => "root"
         jdbc_password => "123456"
         # 下载连接数据库的驱动包,建议使用绝对地址
        jdbc_driver_library => "/opt/serve/logstash-7.4.0/mysql/mysql-connector-java-8.0.18.jar"
  
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
        codec => plain { charset => "UTF-8"}
  
         #使用其它字段追踪,而不是用时间
        #use_column_value => true   //这里如果是用时间追踪比如:数据的更新时间或创建时间等和时间有关的这里一定不能是true, 切记切记切记,我是用update_time来追踪的
         #追踪的字段
        tracking_column => update_time
        record_last_run => true
        #上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值  这里说是必须指定初始值,我没指定默认是1970-01-01 08:00:00 
        last_run_metadata_path => "/opt/serve/logstash-7.4.0/lastrun/.logstash_jdbc_last_run"  //这里的lastrun文件夹和.logstash_jdbc_last_run是自己创建的
  
        jdbc_default_timezone => "Asia/Shanghai"   //设置时区
       #statement => "SELECT * FROM goods  WHERE update_time > :last_sql_value"  //这里可以直接写sql,也可以用sql文件的形式,二选其一
        statement_filepath => "/opt/serve/logstash-7.4.0/bin/jdbc.sql"
  
  
 #是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
      clean_run => false
  
        # 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
        schedule => "* * * * *"
        type => "std"
      }
  }
 
  filter {
 
     json {
 
         source => "message"
 
         remove_field => ["message"]
 
     }
 
 }
 
 output {
 
     elasticsearch {
 
         # 要导入到的Elasticsearch所在的主机
 
         hosts => "127.0.0.1:9200"
 
         # 要导入到的Elasticsearch的索引的名称
 
         index => "goods"
 
         # 类型名称(类似数据库表名)
 
         document_type => "spu"
 
         # 主键名称(类似数据库主键)
 
         document_id => "%{id}"
     }
 
     stdout {
 
         # JSON格式输出
 
         codec => json_lines
 
     }
 }

5.在bin目录新建lastrun文件夹并新建.logstash_jdbc_last_run文件内容如下(此文件记录最后一次同步时间)

6.启动jdbc.conf配置,开始同步数据(在bin目录下运行./logstash -f jdbc.conf)

7.更新成功(后续的新增和修改都会被同步)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值