Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux 安装 logstash 并同步 MySQL 数据库

Linux 安装 logstash 并同步 MySQL 数据库

作者头像
王图思睿
发布于 2021-06-15 02:23:37
发布于 2021-06-15 02:23:37
3.8K00
代码可运行
举报
文章被收录于专栏:膨胀的面包膨胀的面包
运行总次数:0
代码可运行

前两篇文章分别讲了 LinuxWindows 环境安装 Elasticsearch,有兴趣可以点击以下链接查看:

windows10 安装 ElasticSearch

Linux 下安装 Elasticsearch

既然我们已经成功的在 Linux 服务器中搭建好了 Elasticsearch 环境,由于我们使用的是 MySQL 数据库,所以现在我们需要实现 Elasticsearch 和 MySQL 的同步,接下来就看一下 Linux 如何安装 logstash 并同步 MySQL 数据库

安装 Logstash

首先我们需要去 Logstash 官网 找到我们需要的版本,并下载解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载压缩包
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.1.tar.gz

# 解压
tar -xzpvf logstash-6.3.1.tar.gz

# 重命名
mv logstash-6.3.1 logstash

使用 bin/logstash-plugin 命令,安装 logstash-input-jdbc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 进入 logstash 目录
cd logstash

# 安装插件 logstash-input-jdbc
bin/logstash-plugin install logstash-input-jdbc

出现如下问题: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12) 是内存不足导致的问题:

如果出现错误,我们去修改内存

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 进入config目录
cd config/

# 修改 jvm.options 文件
vim jvm.options

# 修改如下数据,小编这里修改成400m
-Xms400m
-Xmx400m

# 保存退出,返回 logstash 的根目录,重新安装插件
bin/logstash-plugin install logstash-input-jdbc

这次,我们就能安装成功了

接下来,为了实现 MySQL 数据的同步,我们还需要下载 mysql-connector

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 下载 mysql-connector
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar

下载后将文件放在 Logstash 安装目录下的 /logstash-core/lib/jars/ 中

现在我们来编辑一个配置文件 logstash-es-mysql.conf,用来同步MySQL数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input{
     stdin {
     }
     jdbc {
         # 驱动方式
         jdbc_driver_library => ""
         # 驱动类名
         jdbc_driver_class => "com.mysql.jdbc.Driver"
         # mysql 数据库链接,blog为数据库名 &useSSL=false 这个是为了防止不支持ssl连接的问题
         jdbc_connection_string => "jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false"
         # 连接数据库用户名
         jdbc_user => "root"
         # 连接数据库密码
         jdbc_password => "root"
         # 是否启用分页
         jdbc_paging_enabled => "true"
         jdbc_page_size => "50000"
         # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含>义为每分钟都更新
         schedule => "* 1 * * * "
         type => "jdbc"
         # 执行sql文路径及名称
         # statement_filepath => "/home/logstash/blog.sql"
         # 直接写sql语句用这个
         statement => "select `article_detail`.article_id,article_title as title,article_detail_content as content from `article` LEFT JOIN `article_detail` ON `article`.`article_id` = `article_detail`.article_id"
         # use_column_value => true
         # tracking_column => "updatetime"
         # 保存上一次运行>的信息(tracking_column)
         # last_run_metadata_path => "./logstash_jdbc_last_run"
       }
}

filter{
    json{
        source => "message"
        remove_field => ["message"]
    }
}
#output插件配置
output{
      elasticsearch {
         #这里可以是数组,可以是多个节点的地址,会自动启用负载均衡
         hosts => ["127.0.0.1:9200"]
         #index名称
         index => "kafei"
         #document_type => "haoyebao" #文档类型
         document_type =>"article"
         #文档id,必须设置,且表达式的变量存在,否则只>能插入一条记录
         document_id => "%{article_id}"
      }
      #控制台打印json
      stdout {
         codec => json_lines
     }
 }

接下来,我们就能实现MySQL的同步了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./bin/logstash -f logstash-es-mysql.conf

后台运行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nohup ./bin/logstash -f logstash-es-mysql.conf > out.log 2>&1 &

现在,我们执行一下 curl 'localhost:9200/kafei/article/_search?pretty=true' 语句,查看数据是否同步:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl 'localhost:9200/kafei/article/_search?pretty=true'

可以看到我们现在是有82条记录的(数据库有80条),证明我们已经同步成功了,接下来,我们执行查询,看看效果:

到这里,我们就已经配置好了 Elasticsearch+Logstash+MySQL 的同步了。

问题解决

1、遇到问题com.mysql.jdbc.Driver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?

解决:原因是 jar 包位置不正确,应该将 jar 包放在 Logstash 安装目录下的 /logstash-core/lib/jars/ 下

该问题参考链接:https://github.com/logstash-plugins/logstash-input-jdbc/issues/331

总结

  1. 首先需要先配置好:Elasticsearch+analysis-ik,配置教程可以参照: 全文搜索 Elasticsearch+analysis-ik;
  2. 其次需要安装 Logstash 和 logstash-input-jdbc 插件;
  3. 然后需要下载 mysql-connector;
  4. 最后配置MySQL同步的 logstash-es-mysql.conf 配置文件,启动,就可以成功同步MySQL的数据了。

via:https://zhuanlan.zhihu.com/p/40177683

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
logstash-input-jdbc 插件将 Zabbix 数据库中 alerts 表告警数据推送至 ElasticSearch 搜索引擎。
Kevin song
2020/08/28
2.8K0
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
利用Logstash插件进行Elasticsearch与Mysql的数据
Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana 搭建笔记 和 Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台。
大江小浪
2018/07/24
1.2K0
ElasticSearch 使用 Logstash 从 MySQL 中同步数据
目的是希望将现有的数据导入到 ElasticSearch 中,研究了好几种,除了写代码的方式,最简便的就是使用 Logstash 来导入数据到 ElasticSearch 中了。
皇上得了花柳病
2020/05/06
4K0
利用logstash将mysql多表数据增量同步到es
我的数据库是5.7版本,我这里下载5.1.47的驱动了,当然如果你们的数据库是8.0以上的版本,那么就下相应的版本就行
黎明大大
2020/09/08
4.2K0
利用logstash将mysql多表数据增量同步到es
unbuntu下安装Elasticsrearch+logstash+elasticsearch-analysis-ik
1. 安装 elasticsearch 第一次使用的是 apt-get 的安装方式, 应该是软件源没设置为最新的, 结果安装的版本为1.7x的, 果断删除. 第二次直接将 elasticsearch 的 zip 包下载下来安装. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip unzip elasticsearch-5.5.1.zip 配置. 将elasticsearch.yml 的 clus
zcqshine
2018/05/11
8570
logstash sql 数据采集
Elasticsearch 6.3 发布SQL模块作为C-Pack的一部分使用 kabana官方工具查询 Dev Tools - console 查看 POST /_xpack/sql?form
以谁为师
2019/05/30
1.5K0
mysql同步elasticsearch调研
目前项目采用的是更新数据后再更新elasticsearch,各种历史原因导致很多数据并不是同步的,业务互相紧耦合, 所以需要调研适合团队发展的 db同步es机制,从业务层面剔除这部分功能维护。 下面是本人在搭建、配置、调试过程中一些总结和踩完坑后整理的配置。
用户2825413
2019/07/15
1.1K0
mysql同步elasticsearch调研
elasticsearch5xx使用logstash同步mysql
下载地址:https://www.elastic.co/downloads/logstash
全科
2018/08/15
6320
11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
集中, 转换和存储数据, logstach是免费且开放的服务器端数据处理管道, 能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中
彼岸舞
2022/10/04
7660
11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
怎样将 MySQL 数据表导入到 Elasticsearch
本文节选自《Netkiller Database 手札》 MySQL 导入 Elasticsearch 的方法有很多,通常是使用ETL工具,但我觉得太麻烦。于是想到 logstash 。 23.8. Migrating MySQL Data into Elasticsearch using logstash 23.8.1. 安装 logstash 安装 JDBC 驱动 和 Logstash curl -s https://raw.githubusercontent.com/oscm/shell/maste
netkiller old
2018/03/05
5.6K0
MySQL数据以全量和增量方式,向ES搜索引擎同步流程
/usr/local/logstash/sync-config/cicadaes.conf
知了一笑
2019/09/09
1.2K0
MySQL数据以全量和增量方式,向ES搜索引擎同步流程
logstash-input-jdbc
https://segmentfault.com/a/1190000011784259
丁D
2022/08/12
6340
使用 Logstash 同步海量 MySQL 数据到 ES
  在生产业务常有将 MySQL 数据同步到 ES 的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的Logstash 就很有优势了。   在使用 Logstash 我们应先了解其特性,再决定是否使用:
Jared.Tan
2020/06/17
10.8K0
Logstash-解决elasticsearch和Mysql数据库的同步问题
Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件。
名字是乱打的
2022/05/13
8810
Logstash-解决elasticsearch和Mysql数据库的同步问题
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
3, 官网介绍例子,使用 logstash-input-jdbc 到 elasticsearch
全栈程序员站长
2022/09/10
9970
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
ELK —— Logstash 将 MySQL 数据同步至 ElasticSearch
Author:Gorit Date:2021/4/7 Refer:各种同类文章参考融合 + 自己的思考总结 2021年发表博文: 16/50
Gorit
2021/12/08
1.5K0
ELK —— Logstash 将 MySQL 数据同步至 ElasticSearch
Canal 同步数据坑太多?来试试 Logstash!
上一篇文章已经详细介绍了如何使用Canal中间件将MySQL数据同步至ElasticSearch。然而,由于Canal已经很久没有得到维护,使用过程中可能会遇到许多问题。因此,在尝试Canal的同时,我们还可以考虑使用Logstash来实现类似的功能。本章将重点介绍如何使用Logstash将MySQL数据同步至ElasticSearch,如果你已经掌握了上一篇关于Canal的教程,可以直接从环境准备中的Logstash部分开始阅读。
码猿技术专栏
2023/10/24
6830
Canal 同步数据坑太多?来试试 Logstash!
logstash安装与logstash-input-jdbc插件使用
于是elasticsearch提供了可以直接和数据库关联,并且自动根据数据库中的数据更新索引logstash。
大道七哥
2019/09/10
2.1K0
logstash安装与logstash-input-jdbc插件使用
logstash使用template提前设置好maping同步mysql数据到Elasticsearch5.5.2
上篇blog说到采用logstash-input-jdbc将mysql数据同步到ES(http://www.cnblogs.com/jstarseven/p/7704893.html),但是这里有一个问题,即假如我不需要logstash自动对mysql数据提供的mapping模板怎么办,毕竟我的数据需要ik分词,同义词解析等。。。
大道七哥
2019/09/10
2.5K0
logstash使用template提前设置好maping同步mysql数据到Elasticsearch5.5.2
使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
最近用了几天时间为公司项目集成了全文搜索引擎,项目初步目标是用于搜索框的即时提示。数据需要从MySQL中同步过来,因为数据不小,因此需要考虑初次同步后进行持续的增量同步。这里用到的开源服务就是ElasticSearch。
码农编程进阶笔记
2021/11/15
2.1K0
使用ElasticSearch服务从MySQL同步数据实现搜索即时提示与全文搜索功能
推荐阅读
相关推荐
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验