第三节 Elasticsearch-使用logstash实现与Mysql数据同步

    之前安装了elasticsearch(elasticsearch基于centos安装),学习了简单的用法(elasticsearch的简单使用)。实际使用过程中,需要将mysql数据库的数据同步到elasticsearch。

    准备:

        logstash-7.8.1.tar  (新版本已经自带了logstash-input-jdbc,不用再安装了) 下载地址:logstash下载

        mysql-connector-java-8.0.23 下载地址:下载

        准备一个本地mysql数据库,随便任何数据都可以。

    1、安装logstash,我放在了/usr/local目录下:    

cd /usr/local/
tar -zxvf logstash-7.8.1.tar.gz 
#修改目录名称
mv logstash-7.8.1 logstash

    2、logstash目录下创建文件夹jar,将mysql-connector-java-8.0.23放到logstash/jar目录下。

    3、logstash/config目录下,复制一份logstash-sample.conf文件,并重命名为logstash.conf。

    4、修改logstash.conf。    

input {
  beats {
    port => 5044
  }
  jdbc {
    # 数据库连接驱动绝对路径
    jdbc_driver_library => "/usr/local/mysql-connect/mysql-connector-java-8.0.23.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    # 数据库连接
    jdbc_connection_string => "jdbc:mysql://192.168.137.1:3306/es?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
    # 用户名
    jdbc_user => "root"
    # 密码
    jdbc_password => "123456"
    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true
    # 如果 use_column_value 为真,需配置此参数.
    tracking_column => update_time
    # 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    #record_last_run => true
    #last_run_metadata_path => "./logstash_capital_bill_last_id"
    # 要执行的sql存储的文件
    statement_filepath => "/usr/local/logstash/sql/article.sql"
    # 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false
    # 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年),默认每分钟一次
    schedule => "* * * * *"
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    # 索引名称
    index => "article"
    # 主键
    document_id => "%{id}"
    #user => "elastic"
    #password => "changeme"
  }
}

    5、在/usr/local/logstash/sql/路径下创建文件article.sql,里面sql为:    

select * from luc_article where update_time > :sql_last_value

    6、运行服务,到/usr/local/logstash目录下,运行    

bin/logstash -f config/logstash.conf

    可以看到服务启动成功,用postman查看article索引下的数据,数据已经导入elasticsearch了。

    7、多个表导入,对于一次导入多个表,可以在配置文件里面的input里面写多个jdbc,jdbc里面加type标签,在output里面根据type标签区分,保存不同的索引。如下:    

input {
  jdbc {
    type => "tb1"
    XXXXXXXX
    XXXXXXXX
  }
  jdbc {
    type => "tb2"
    XXXXXXXX
    XXXXXXXX
  }
  jdbc {
    type => "tb3"
    XXXXXXXX
    XXXXXXXX
  }
}
output{
  if[type] == "tb1"{
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "tb1"
      document_id => "%{id}"
    }
  }
  if[type] == "tb2"{
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "tb2"
      document_id => "%{id}"
    }
  }
  if[type] == "tb3"{
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "tb3"
      document_id => "%{id}"
    }
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值