logstash将mysql数据同步到elasticsearch方法详解

 更新时间:2022年12月14日 14:14:28   作者:funOfFan  
这篇文章主要为大家介绍了logstash将mysql数据同步到elasticsearch方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

环境说明

  • 虚拟机一台
  • logstash-7.2.1
  • elastic search-7.2.1
  • kibana-7.2.1
  • MySQL 5.7
  • jdk版本为jdk1.8.0_211

mysql安装

删除预装的Mariadb服务

rpm -qa | grep mariadb
yum remove mariadb
ls /etc/my.cnf
ls /var/lib/mysql/
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/

安装MySQL

# 下载MySQL官方repo
wget -i -c [http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm](http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm)
# 如果上述指令报错,可通过浏览器直接访问该网址,自动下载即可
# 安装MySQL官方repo
yum -y localinstall mysql57-community-release-el7-10.noarch.rpm
# 安装MySQL服务器
yum -y install mysql-community-server

启动MySQL服务

systemctl start mysqld.service #启动mysql服务
systemctl status mysqld.service #查看MySQL服务工作状态

修改MySQL配置

# 在mysqld服务运行日志中,查找初次登陆的默认密码
grep "password" /var/log/mysqld.log
# 通过默认初始密码进入数据库
mysql -u root -p
#进入数据库之后,修改root用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'BUPTbupt@123';
# 进入mysql数据库,修改root用户配置,以开启远程访问
use mysql;
update user set host = '%' where user = 'root';
# 完成上述配置后,退出MySQL

重启MySQL服务

#重启MySQL服务
systemctl restart mysqld.service
#并重新登录查看新密码是否生效
#关闭yum自动更新,否则以后每次yum都会自动更新mysqld服务
yum -y remove mysql57-community-release-el7-10.noarch

准备测试数据

 use mysql;
 create table Persons  ( PersonID int, LastName
varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) );
 insert into Persons values(1, "Bryant", "Kobe", "1st a "1st ave", "Los");
 insert into Persons values(2, "James", "LeBron", "1st ave", "Miami");
 insert into Persons values(3, "Jordan", "Michale", "1st ave", "DC");

jdbc配置

https://downloads.mysql.com/archives/c-j/下载与当前jdk版本匹配的mysql-connector

解压到指定位置

unzip mysql-connector-java-5.1.4.zip
mv mysql-connector-java-5.1.4 /root/logstash-7.2.1/

Elasticsearch安装

官网下载 elasticsearch-7.2.1-linux-x86_64.tar.gz

进入root用户,解压并修改目录属主

tar -zxvf elasticsearch-7.2.1-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
mv elasticsearch-7.2.1/ elasticsearch
useradd elasticsearch
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch/

修改必要的配置文件

vi /etc/sysctl.conf
# 添加以下内容
fs.file-max=655360
vm.max_map_count=262144
vi /etc/security/limits.conf
# 添加以下内容
*               soft    nproc           204800
*               hard    nproc           204800
*               soft    nofile          655360
*               hard    nofile          655360
*               soft    memlock         unlimited
*               hard    memlock         unlimited  
vi /etc/security/limits.d/20-nproc.conf
#修改内容如下
*          soft    nproc     204800

激活上述配置项

sysctl -p
#CTRL + D退出当前终端,而后重新登录
ulimit -a #查看内核修改配置是否生效

切换到elasticsearch用户,进行后续配置

su elasticsearch
# 创建数据存储目录
mkdir -p /home/elasticsearch/data1/elasticsearch
mkdir -p /home/elasticsearch/data2/elasticsearch
vi /usr/local/elasticsearch/config/elasticsearch.yml
#修改如下内容
cluster.name: elkbigdata
node.name: node-1
path.data: /home/elasticsearch/data1/elasticsearch/,         /home/elasticsearch/data2/elasticsearch
path.logs: /usr/local/elasticsearch/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0  
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false
xpack.security.authc.accept_default_password: false
vi /usr/local/elasticsearch/config/jvm.options
#修改内容如下
-Xms2g  #这个值一般设置为物理内存的一半,不一定非要2g
-Xmx2g

关闭防火墙并启动elastic search服务

#退回到root用户
systemctl start firewalld
firewall-cmd --add-port=9200/tcp --zone=public --permanent 
firewall-cmd –reload
systemctl stop firewalld
su elasticsearch
cd /usr/local/elasticsearch/bin/
nohup ./elasticsearch &

验证安装是否成功

curl http://localhost:9200
#若出现下列内容,说明安装成功
{
    "name" : "node-1",
    "cluster_name" : "elkbigdata",
    "cluster_uuid" : "jpkQKXwOTYSr_K7D180c5g",
    "version" : {
    "number" : "7.2.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "fe6cb20",
    "build_date" : "2019-07-24T17:58:29.979462Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
   },
  "tagline" : "You Know, for Search"
}

kibana安装

  • 官网下载kibana-7.2.1-linux-x86_64.tar.gz

解压并创建state用户

tar -zxvf kibana-7.2.1-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv kibana-7.2.1-linux-x86_64/ kibana
useradd state
chown -R state:state kibana/

修改kibana配置文件

vi /usr/local/kibana/config/kibana.yml
#打开该文件后,按照下列内容修改配置项
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: http://es所在虚拟机的IP地址:9200
kibana.index: ".kibana"

放通防火墙并启动服务

systemctl start firewalld
firewall-cmd --add-port=5601/tcp --zone=public --permanent
firewall-cmd --reload
systemctl stop firewalld

若正常运行,效果如下(运行kibana前,必须保证其连接的elastic search正常工作)

logstash安装

  • 官网下载logstash-7.2.1.tar.gz

解压安装

tar -zxvf logstash-7.2.1.tar.gz -C /root
cd /root
mv logstash-7.2.1/ logstash
  • 编写配置文件,使logstash能够从MySQL中读取数据,并写入本机elastic search
vi ~/logstash-7.2.1/config/mylogstash.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
  stdin{
  }
  jdbc{
    # 连接的数据库地址和数据库,指定编码格式,禁用ssl协议,设定自动重连
    # 此处10.112.103.2为MySQL所在IP地址,也是elastic search所在IP地址
    jdbc_connection_string => "jdbc:mysql://10.112.103.2:3306/mysql?characterEncoding=UTF-8&useSSL=FALSE&autoReconnect=true"
    #数据库用户名
    jdbc_user => "root"
    # 数据库用户名对应的密码
    jdbc_password => "BUPTbupt@123"
    # jar包存放位置
    jdbc_driver_library => "/root/logstash-7.2.1/mysql-connector-java-5.1.4/mysql-connector-java-5.1.4-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_default_timezone => "Asia/Shanghai"
    jdbc_paging_enabled => "true"
    jdbc_page_size => "320000"
    lowercase_column_names => false
    statement => "select * from Persons"
  }
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #此处使用的elastic search并未配置登录用户名以及密码
    #user => "elastic"
    #password => "changeme"
    index => "persons"
    document_type => "_doc"
    document_id => "%{PersonID}"
  }
  stdout {
    codec => json_lines
  }
}

启动logstash同步mysql到es数据中

cd /root/logstash-7.2.1
./bin/logstash -f config/mylogstash.conf

以上就是logstash将mysql数据同步到elasticsearch方法详解的详细内容,更多关于mysql数据同步elasticsearch的资料请关注脚本之家其它相关文章!

相关文章

  • java 线程创建多线程详解

    java 线程创建多线程详解

    本文主要讲解java 线程创建多线程的知识,这里对java线程的创建做了详细介绍,并附简单示例代码,有兴趣的小伙伴可以参考下
    2016-09-09
  • IDEA设置多行展示导航栏方式

    IDEA设置多行展示导航栏方式

    在IDEA中开启多行导航栏可以增加工作效率,具体操作步骤包括访问“File”,进入“Settings”,选择“Editor”后修改“EditorTabs”设置中的“Show tabs in one row”选项,取消勾选后保存即可,这使得在打开多个文件时,导航栏可以显示更多标签,便于管理和查看代码
    2024-09-09
  • java生成指定范围随机数的多种代码

    java生成指定范围随机数的多种代码

    今天在写代码的时候需要用到一个生成指定范围随机数的函数,百度了一下,发现了很多种方法,这里简单为大家整理一下,方便需要的朋友
    2017-08-08
  • Java后台批量生产echarts图表并保存图片

    Java后台批量生产echarts图表并保存图片

    这篇文章主要介绍了Java后台批量生产echarts图表并保存图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • java中charAt()方法的使用及说明

    java中charAt()方法的使用及说明

    这篇文章主要介绍了java中charAt()方法的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Hibernate初体验及简单错误排除代码详解

    Hibernate初体验及简单错误排除代码详解

    这篇文章主要介绍了Hibernate初体验及简单错误排除代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Spring @Configuration和@Component的区别

    Spring @Configuration和@Component的区别

    今天小编就为大家分享一篇关于Spring @Configuration和@Component的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Spring MessageSource获取消息不符合预期的问题解决方案

    Spring MessageSource获取消息不符合预期的问题解决方案

    最近我参与的产品要做国际化支持,选择了用Spring MessageSource来实现,这个Spring 框架提供的工具使用很简单,网上有各种教程文章,这里不做赘述,只说一个实际遇到的问题及解决方案,需要的朋友可以参考下
    2024-01-01
  • Java五种方法批量处理List元素的实现示例

    Java五种方法批量处理List元素的实现示例

    本文主要介绍了Java五种方法批量处理List元素的实现示例,包括传统循环、函数式编程、Stream流、迭代器及第三方库,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Java内存溢出案例模拟和原理分析过程

    Java内存溢出案例模拟和原理分析过程

    这篇文章主要介绍了Java内存溢出案例模拟和原理分析过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论