docker logstash同步MySQL的metadata处理技巧

在工作中,会遇到一种场景是将MySQL的数据同步至ES(或者HDFS,kafka等)中,其中一种方案是使用logstash进行数据的同步,使用logstash-input-jdbc(https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html)插件。

该插件中有一个参数是last_run_metadata_path,该参数是用来记录最新的同步的offset信息的。

如果我们在使用docker部署logstash的情况下,可能会出现服务的问题或者offset出错等问题,导致我们的数据不在更新,此时我们需要reset 这个metadata信息,这里有一个简单的做法:

  1. docker stop logstash-instance # 停止logstash容器
  2. 修改statement,如果我们是根据:sql_last_value来对应的字段,先确定下当前同步的最新的字段值为多少,然后在statement中的where条件中修改为以下信息where filed_name >= xxxxxx
  3. docker start logstash-instance 同时reload logstah.conf
  4. 等待一段时间后,在修改logstash.conf ,将filed_name >= xxxxxx 调整为where field_name >= :sql_last_value
  5. 最后重启,即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值