Elasticsearch使用Logstash同步Mysql数据库数据

一、先把Elasticsearch服务器安装好

这是前提,教程可以搜到,此步骤省略。

二、下载logstash

在研究elasticsearch全文检索时,先安装了elasticsearch 6.4.3版本的ES服务器,后来发现在数据库数据同步到es服务器时需要用到logstash,网上搜索发现需要es服务器版本必须和logstash版本一致,也就意味着也需要6.4.3版本的,如下是下载logstash的方法教程:

logstash下载教程:https://blog.csdn.net/weixin_44167913/article/details/101101626

三、安装logstash

1.下载好之后,解压logstash-6.4.3
(个人习惯即使在linux系统里面也好把文件分好类,所以我在/usr/local下新建了一个文件夹logstash,并把解压文件放在下面)

2.下载logstash后查看是否安装成功,在logstash的bin目录下输入指令:

./logstash -e 'input { stdin { } } output { stdout {} }'

在这里插入图片描述

四、mysql-connect-java.jar下载以及配置mysql信息

4.1、cd进入到logstash目录bin目录下,新建文件夹mysql,在这个文件夹中存放配置信息。

PS:这个文件夹的名称可以随意命名,但是要规范,后期里面主要存放的是配置文件,其实这个文件夹可以不建,但是为了操作方便,我们去建立它

4.2、mysql-connect-java.jar下载可以直接去maven中央仓库去寻找下载,我使用的是“mysql-connector-java-8.0.13.jar”,下载好之后拷贝到mysql文件夹下,此jar包是用来进行数据库连接的。

4.3、在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
    }
}

PS:里面的配置文件需要根据自己的实际情况去替换,这里的数据库设计隐私我给隐藏了,主要是索引的命名可以按照自己的需求去命名。在这其中有个大坑,就是这个“mysql.config”的文件要用UTF-8的字符集编码,否则会报错:
在这里插入图片描述我也是搞了很久才发现这个问题最后查询才修改过来。

UTF-8字符集异常参考:https://blog.csdn.net/u012976879/article/details/85166304

4.4、再然后,新建一个jdbc.sql的文件,在文件中编写sql,这条sql会作为logstash执行sql进行同步。

SELECT * FROM user

PS:这里的user就是我要同步的表,按照个人需要更改,名称不对会报错或者更新错误数据。

4.5、最后进入到logstash的bin目录下启动同步:

./logstash -f mysql/mysql.conf

PS:这里的mysql就是你新建的文件夹,后面的文件名也是你的配置文件,如果不一致,需要自己调整。

出现如下即同步成功了!
在这里插入图片描述最后进入es的视图化管理界面kibana,执行语句查询一下:
在这里插入图片描述就说明更新完成了!

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

猜你喜欢

转载自blog.csdn.net/weixin_44167913/article/details/101194648