Elasticsearch使用Logstash导入Mysql多数据源数据

Elasticsearch使用Logstash同步单个Mysql数据库数据已经完成了,但是如果要同时同步多个数据源呢?此教程针对同时同步多个数据源,具体的配置文件先阅读上一篇文章,此篇是以上一篇为基础实现的。

上篇学习路径:Elasticsearch使用Logstash同步Mysql数据库数据

第一步、先进入logstash安装目录的bin目录,找到自己新建的mysql文件夹,编辑下面的mysql.config。

input {
    jdbc {
      # mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://39.96.21.*:3306/creatiae?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "199201gxh"

      # 驱动(即是数据库连接驱动jar包的路径)
      jdbc_driver_library => "/usr/local/logstash/logstash-6.4.3/bin/mysql/mysql-connector-java-8.0.13.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 文件路径+名称
      statement_filepath => "/usr/local/logstash/logstash-6.4.3/bin/mysql/jdbc.sql"

      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      #schedule => "* * * * *"

      # 索引类型
      type => "cm"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["10.179.86.57:9200"]
        # 索引名称
        index => "myuser"
        # 需要关联的数据库中有有一个id字段,对应类型中的id
        document_id => "%{id}"
    }
    stdout {
        # JSON格式输出
        codec => json_lines
    }
}

这是原本的配置文件内容,但是这个只是针对于当个数据源同步,多个的话是下面的配置方式

input {
    stdin{
    }
      # 单表操作  
   jdbc {
      # mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://39.96.21.*:3306/creatiae?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "199201gxh"

      # 驱动(即是数据库连接驱动jar包的路径)
      jdbc_driver_library => "/usr/local/logstash/logstash-6.4.3/bin/mysql/mysql-connector-java-8.0.13.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 文件路径+名称
      statement_filepath => "/usr/local/logstash/logstash-6.4.3/bin/mysql/jdbc.sql"

      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      #schedule => "* * * * *"

      # 索引类型
      type => "cm1"
    }
    # 单表操作
   jdbc {
      # mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://39.96.21.*:3306/creatiae?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "199201gxh"

      # 驱动(即是数据库连接驱动jar包的路径)
      jdbc_driver_library => "/usr/local/logstash/logstash-6.4.3/bin/mysql/mysql-connector-java-8.0.13.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 文件路径+名称
      statement_filepath => "/usr/local/logstash/logstash-6.4.3/bin/mysql/jdbc.sql"

      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      #schedule => "* * * * *"

      # 索引类型
      type => "cm2"
    }
    # 多表联合查询
   jdbc {
      # mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://39.96.21.*:3306/creatiae?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "199201gxh"

      # 驱动(即是数据库连接驱动jar包的路径)
      jdbc_driver_library => "/usr/local/logstash/logstash-6.4.3/bin/mysql/mysql-connector-java-8.0.13.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 文件路径+名称
      statement_filepath => "/usr/local/logstash/logstash-6.4.3/bin/mysql/jdbc.sql"

      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      #schedule => "* * * * *"

      # 索引类型
      type => "cm3"
    }
}
 
 
output {
   if [type]=="cm1" {
    elasticsearch {
        hosts => "10.179.86.57:9200"
        # index名
        index => "myuser1"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
   if [type]=="cm2" {
    elasticsearch {
        hosts => "10.179.86.57:9200"
        # index名
        index => "myuser2"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
   if [type]=="cm3" {
    elasticsearch {
        hosts => "10.179.86.57:9200"
        # index名
        index => "myuser3"
        # 需要关联的数据库中有有一个id字段,对应索引的id号
        document_id => "%{id}"
    }
   }
    stdout {
        codec => json_lines
    }
}

其他的配置文件不变,然后重启logstash即可在kibana里面通过指令查看内容了。

GET /myuser1/_search
GET /myuser2/_search
GET /myuser3/_search

技术参考:https://blog.csdn.net/CoderYin/article/details/88420712

发布了21 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44167913/article/details/101200831
今日推荐