当前位置: 首页 > news >正文

使用docker实现logstash同步mysql到es

准备工作:

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"#启用分页,默认falsejdbc_paging_enabled => "true"#页面大小jdbc_page_size => "500"#是否记录上次运行的结果record_last_run => true#记录上次运行结果的文件位置last_run_metadata_path => "/usr/share/logstash/pipeline/lastvalue.txt"#是否使用数据库某一列的值,use_column_value => truetracking_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 => 3000document_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: pipeline1path.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 => "* * * * *",启动容器就会立刻同步数据,而且会一直反复同步。
这个定时任务仅用于测试~~,实际一定会详细配置时间的。 

 


调试过程中遇到的问题:

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

logstash同步mysql数据到es(二、jdbc_driver_library问题)​​​​​​

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

http://www.lryc.cn/news/259292.html

相关文章:

  • hive数据仓库工具
  • C语言 联合体验证 主机字节序 +枚举
  • python和pygame实现烟花特效
  • gRPC-Gateway:高效转换 RESTful 接口 | 开源日报 No.105
  • 非专业的建模人员如何给模型设置材质纹理贴图?
  • 自动化测试、压力测试、持续集成
  • FFmpeg之HWContextType
  • Python面向对象之类和对象(Python系列16)
  • 电商对传统零售业的影响:销售渠道、价格竞争与服务质量挑战
  • DENet:用于可见水印去除的Disentangled Embedding网络笔记
  • C++初阶(十五)Stack和Queue
  • C#面试题
  • python源码,在线读取传奇列表,并解析为需要的JSON格式
  • 二叉排序树的判断(二叉树的顺序存储):2022年408算法题
  • Kubernetes版本升级到v1.18.0方法
  • 了解 git rebase
  • 程序员的养生之道:延寿健康的十大秘诀(下)
  • 【java】保留前N月数据文件,定期删除数据
  • 12.9_黑马数据结构与算法笔记Java
  • K8S学习指南(1)-docker的安装
  • vue3 + mark.js 实现文字标注功能
  • 运筹优化 | 模拟退火求解旅行商问题 | Python实现
  • 1017 A除以B
  • SAP UI5 walkthrough step8 Translatable Texts
  • RocketMQ-源码架构二
  • Unity_ET框架项目-斗地主_启动运行流程
  • 自动化测试框架 —— pytest框架入门篇
  • String类详解
  • Linux高级管理--安装MySQL数据库系统
  • 团建策划信息展示服务预约小程序效果如何