使用docker实现logstash同步mysql到es

目录

ES同步工具简介

准备工作

一、创建配置文件,用于容器卷挂载

二、启动容器


相关问题汇总:

logstash同步mysql数据到es(一、es模板问题,请求返回400)

logstash同步mysql数据到es(二、jdbc_driver_library问题)_(please check user and group permissions for the p-CSDN博客

logstash同步mysql数据到es(三、es模板问题)-CSDN博客

使用docker实现logstash同步mysql到es-CSDN博客

ES同步工具简介

Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,它提供了丰富的功能来存储、搜索和分析大量的数据。在实际应用中,我们经常需要将数据从其他数据源同步到Elasticsearch中。以下是几种常见的工具和方法用于实现ES数据同步:

  1. Logstash:Logstash是一个开源的数据收集、处理和转发工具,它可以从不同的数据源中抽取数据,并将其转换为JSON格式,然后发送到Elasticsearch进行索引。Logstash支持各种输入插件和输出插件,可以与多个数据源进行集成,如关系型数据库、消息队列、日志文件等。

  2. Filebeat:Filebeat是一个轻量级的日志数据采集工具,它可以监视指定的日志文件或目录,并将日志数据发送到Elasticsearch进行索引。Filebeat适用于处理大量的日志数据,并具有低资源占用和高效的传输性能。它支持各种日志格式和协议,如JSON、Grok、Syslog等。

  3. JDBC插件:Elasticsearch提供了JDBC插件,它可以通过JDBC连接到关系型数据库,并将数据导入到Elasticsearch进行索引。通过配置JDBC连接字符串、SQL查询语句和索引映射,可以将数据库中的数据同步到Elasticsearch中。这种方法适用于需要定期同步数据库数据的场景。

  4. Elasticsearch Hadoop:Elasticsearch Hadoop是一个开源的工具集,它提供了将数据从Hadoop生态系统(如HDFS、Hive、Spark等)导入到Elasticsearch的功能。通过Elasticsearch Hadoop,可以将大数据处理结果直接导入到Elasticsearch进行索引和搜索。

  5. 自定义开发:如果以上工具无法满足需求,还可以通过自定义开发来实现ES数据同步。可以使用各种编程语言(如Java、Python等)编写程序,调用Elasticsearch的API来实现数据的抽取、转换和加载。

准备工作

1.有mysql的连接方式,并且可以连接成功

2.有es的连接方式,并且可以连接成功

3.安装了docker


环境是Ubuntu中安装了docker

一、创建配置文件,用于容器卷挂载

# 切换目录,可自定义

cd /home/test/

# 创建logstash挂载的本地目录

mkdir logstash

cd logstash

mkdir config

mkdir pipeline

# 进入到config目录下,创建配置文件

cd config

# 创建mysql同步es数据的配置文件

vim jdbc.conf

input {
  jdbc {
    jdbc_driver_library => "/home/test/logstash/mysql-connector-j-8.0.32.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/_test"
    jdbc_user => "root"
    jdbc_password => "root"
    #启用分页,默认false
    jdbc_paging_enabled => "true"
    #页面大小
    jdbc_page_size => "500"
    #是否记录上次运行的结果
    record_last_run => true
    #记录上次运行结果的文件位置
    last_run_metadata_path => "/usr/share/logstash/pipeline/lastvalue.txt"
    #是否使用数据库某一列的值,
    use_column_value => true
    tracking_column => "id"
    #numeric或者timestamp
    #tracking_column_type => "numeric"
    #如果为true则会清除last_run_metadata_path记录,即重新开始同步数据
    clean_run => false
    # sql语句文件,对于复杂的查询,可以放在文件中,如:
    # statement_filepath => "jdbc.sql"这个文件路径要跟jdbc.sql对应上
    #设置监听间隔。可以设置每隔多久监听一次什么的。
    #官方举例:
    #* 5 * 1-3 * 一月到三月的每天凌晨5点每分钟执行一次。
    #0 * * * *   将在每天每小时的第0分钟执行。
    #0 6 * * *   America/Chicago每天早上6:00(UTC / GMT -5)执行。
    #* * * * *   分、时、天、月、年,全部为*默认含义为每分钟查询一次
    schedule => "* * * * *"
    #索引类型
    #type => "jdbc"
    statement => "SELECT * FROM testORDER BY id ASC"
  }
}
 
output {
   elasticsearch {
                 hosts => "localhost:9200"
                 index => "test"
                 user => "elastic"
                 password => "elastic"
                 timeout => 3000
                 document_id => "%{id}"
                 template => "/home/test/logstash/config/test.json"
                 template_name => "test"
                 }
}

# 创建test.json文件,存放要同步数据的es模板

vim test.json

{
  "index_patterns": ["test*"],
  "mappings": {
    "properties": {
      "id": { "type": "integer" },
      "accession": { "type": "keyword" },
      "name": { "type": "keyword" },
      "comment_text": { "type": "text" },
      "sequence": { "type": "text" },
      "keyword": { "type": "keyword" }
    }
  }
}
'

# 创建pipelines.yml,亲测不创建会报错的

vim pipelines.yml

- pipeline.id: pipeline1
  path.config: "/usr/share/logstash/config/jdbc.conf"

# 创建logstash.yml,亲测不创建会报错的,这个空着就行

touch logstash.yml

上面文件都创建好了,避免出现权限问题可以chmod 777 xxx。
接下来就启动logstash就可以了

二、启动容器

docker pull logstash

# 启动容器,将配置文件挂载到本地。注意这里使用-it启动,可以看到详细的启动日志

docker run -it -p 5044:5044 --privileged=true -v /home/test/logstash/config:/usr/share/logstash/config -v /home/test/logstash/pipeline:/usr/share/logstash/pipeline --name logstash logstash

 由于配置文件中使用的是定时任务,配置内容schedule => "* * * * *",启动容器就会立刻同步数据,而且会一直反复同步。
这个定时任务仅用于测试~~,实际一定会详细配置时间的。 

  • 33
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年小趴菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值