基于logstash实现mysql数据同步到 elasticsearch

  1. 简介 
    Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地
  2. 下载 logstash-6.4.3.tar.gz
     https://pan.baidu.com/s/1c9voEH0nW7gktkQAJCTsKQ  提取码: zmll 
     上传到/usr/local目录下
  3. 解压
    tar -zxvf logstash-6.4.3.tar.gz
  4. 下载输入、输出插件
    cd logstash-6.4.3 
    // 命令执行,需要等待一段时间
    bin/logstash-plugin install logstash-input-jdbc
    bin/logstash-plugin install logstash-output-elasticsearch
    
  5. 上传mysql的jar包到服务器/usr/local/sql目录下
     
  6. 配置文件mysql.conf
    input {
      jdbc {
        jdbc_driver_library => "/usr/local/sql/mysql-connector-java-5.1.46.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        jdbc_connection_string => "jdbc:mysql://192.168.2.107:3306/pitch_test"
        jdbc_user => "root"
        jdbc_password => "123456"
        schedule => "* * * * *"
        statement => "SELECT * FROM user WHERE update_time >= :sql_last_value"
        use_column_value => true
        tracking_column_type => "timestamp"
        tracking_column => "update_time"
        last_run_metadata_path => "syncpoint_table"
      }
    }
    
    
    output {
        elasticsearch {
            # ES的IP地址及端口
            hosts => ["192.168.2.116:9200"]
            # 索引名称 可自定义
            index => "user"
            # 需要关联的数据库中有有一个id字段,对应类型中的id
            document_id => "%{id}"
            document_type => "user"
        }
        stdout {
            # JSON格式输出
            codec => json_lines
        }
    }
     配置文件说明
    jdbc_driver_library: jdbc mysql 驱动的路径,在上一步中已经下载
    jdbc_driver_class: 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
    jdbc_connection_string: mysql 地址
    jdbc_user: mysql 用户
    jdbc_password: mysql 密码
    schedule: 执行 sql 时机,类似 crontab 的调度
    statement: 要执行的 sql,以 “:” 开头是定义的变量,可以通过 parameters 来设置变量,这里的 sql_last_value 是内置的变量,表示上一次 sql 执行中 update_time 的值,这里 update_time 条件是 >= 因为时间有可能相等,没有等号可能会漏掉一些增量
    use_column_value: 使用递增列的值
    tracking_column_type: 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
    tracking_column: 递增字段的名称,这里使用 update_time 这一列,这列的类型是 timestamp
    last_run_metadata_path: 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手
    
    上传mysql.conf到服务器/usr/local/logstash-6.4.3
  7. 配置文件配置的pitch_member库的user表数据如下 
      
  8. 启动
    启动 elasticsearch
    启动 kibana
    启动 logstash  命令: 
    cd /usr/local/logstash-6.4.3
    ./bin/logstash -f mysql.conf 

     

  9. 测试
    登录kibana查询,执行下面查询

     
    user表新增一条数据
     
     查看控制台

     查询通过操作user表实时更新update_time的当前时间,让后有logstash根据update_time时间每隔几分钟去数据库查询数据,这样我们就实现了将mysql的数据实时同步es去。user表update_time时间要是当前最新时间。
  • 如何配置多张表
     
  1. 配置多张表信息
    cd /usr/local/logstash-6.4.3/config/
    vi pipelines.yml
    #######################再文件中配置数据库连接信息########
    - pipeline.id: table1
      path.config: "/usr/local/logstash-6.4.3/mysql.conf"
    - pipeline.id: table2
      path.config: "/usr/local/logstash-6.4.3/mysql2.conf"
    ########################:wq,保存退出################

     

  2. 在/usr/local/logstash-6.4.3配置table1和table2的数据库表信息 
    table1就是上一步配置的user表信息,不变
    table2根据第6步在配置张新表 

     

  3. 启动
    cd /usr/local/logstash-6.4.3
    ./bin/logstash

     

  4. 测试.................
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值