侧边栏壁纸
  • 累计撰写 93 篇文章
  • 累计创建 85 个标签
  • 累计收到 9 条评论

elasticsearch笔记 - logstash数据库同步

bearjun
2021-01-13 / 0 评论 / 0 点赞 / 670 阅读 / 2,401 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-01-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

u=3088973587,4073972842&fm=26&gp=0.png

本文介绍如何使用logstash同步mysql数据库信息到ElasticSearch
对于logstash2.x版本是没有集成logstash-jdbc-input插件的需要我们自己去安装;如果你是2.x版本可以参考:http://blog.csdn.net/yeyuma/article/details/50240595
对于logstash5.x版本他自身已经集成了这个插件,不需要我们去单独安装,直接使用即可

准备工作

检查是否安装jdk:https://bearjun.com/index.php/linux/245.html
检查是否安装es:https://bearjun.com/index.php/java/128.html
找一个和自己数据库一致的驱动包:mysql-connector-java-5.1.20.jar
因为我服务器的数据库版本是5.7版本,所以这边是一个对应5.7的驱动包

下载logstash

logstash官方下载地址:https://www.elastic.co/cn/downloads/past-releases#logstash
43598-ap173g4eaw.png
注意:一定要和es的版本保持一致,前面讲的es是7.9.3,故logstash也是7.9.3

安装

  • 上传logstash包还有驱动jar包到指定的目录
  • 解压logstash包
tar -zxvf logstash-7.9.3.tar.gz

解压完成之后,会多了一个目录
28308-cf3nwvra3zq.png
先简单看一下目录文件:
01783-26m0ksyhv0m.png
其中bin目录下是启动文件

  • 创建同步文件信息
mkdir sync

我们的同步配置文件都会放在当前的文件夹里面
再创建一个数据同步的配置文件

# 注意后缀是.conf
vim logstash-db-sync.conf

再移动数据库启动到当前文件夹

# 注意mysql驱动的位置
mv /usr/local/mysql-connector-java-5.1.20.jar ./

00614-v62rq3gxhy.png

  • 配置
# 数据的输入
input {
  jdbc {
    # 驱动包位置
    jdbc_driver_library => "/usr/local/logstash/logstash-5.6.16/mysql-connector-java-5.1.6.jar"
    # 驱动
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    # 数据库地址
    jdbc_connection_string => "jdbc:mysql://ip:3306/dalaoyang"
    # 数据库连接用户名
    jdbc_user => "root"
    # 数据库连接用户密码
    jdbc_password => "password"
    # 执行sql语句文件位置(为了解耦,写在sql文件中)
    statement_filepath => "filename.sql"
    # 执行sql(如果不用statement_filepath,则把sql写在当前位置)
    # statement => "SELECT * from link_info"
    # 是否分页
    jdbc_paging_enabled => "true"
    # 分页数量
    jdbc_page_size => "50000"
    # 索引类型
    type => "_doc"
    # 执行任务时间间隔,各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
    schedule => "* * * * *"
    # 是否开启记录上次追踪结果,也就是上次更新的时间,这个会记录到last_run-metadate_path的文件
    use_colnum_value => true
    # 记录上一次的追踪结果
    last_run_metadate_path => "/usr/local/logstash-7.9.3/sync/track_time"
    # 如果use_colnum_value为true,皮质本参数,追踪column,可以是自增的id或者时间
    tracking_column => "update_date"
    # tracking_column 对应的字段类型
    tracking_column_type => "timestamp"
    # 是否清除last_run_metadata_path的记录,true则每次都是从头开始查询所有
    clean_run => fasle
    # 数据库字段名称大写转小写
    lowercase_column_names => false
  }
}
 
# 数据的输出
output {
  elasticsearch {
        # es地址,集群配置数组
        hosts => ["ip:端口"]
        # 同步的索引名
        index => "test-mysql"
        # 设置_doc的id和数据库id一致, {id}:数据库的id
        document_id => "%{id}"
  }
  # 日志的输出
  stdout {
     codec => json_lines
  }
}

赋值配置文件,根据自己的需求修改,然后复制到logstash-db-sync.conf里面,
注意需要准备的sql文件

select 
t.id,
t.name,
t.age,
t.xx,
t.xx,
t.xx
from table t
where t.craete_time => :sql_last_value 
  • 启动
    准备好所有的文件后
    23714-iv0r96ky5v.png
    进入bin,然后启动
./logstash -f 配置文件.conf
# ./logstash -f /usr/local/logstash-5.6.16/sync/logstash-db-sync.conf
0

评论区