Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >logstash增量同步MySQL关于sql_last_value取值失败的问题

logstash增量同步MySQL关于sql_last_value取值失败的问题

原创
作者头像
WeldonWang
修改于 2024-12-02 06:39:57
修改于 2024-12-02 06:39:57
1.2K0
举报

官网

https://www.elastic.co/guide/en/logstash/7.17/plugins-inputs-jdbc.html#plugins-inputs-jdbc


常见问题

代码语言:shell
AI代码解释
复制
use_column_value => true
tracking_column => "tracking_time"
# 这两行配置是一起用的,当 use_column_value 取值为true 时,sql_last_value 会跟踪 tracking_column 指定的字段的值,这里指定的是 "tracking_time" 这个字段
# 当 tracking_time 为 date类型,还需要指定
tracking_column_type => "timestamp" #因为该参数默认为 "numeric"
代码语言:shell
AI代码解释
复制
# 当 use_column_value 取值为 false 时,sql_last_value 默认取值为 last_run_metadata_path 中记录 Path to file with last run time
last_run_metadata_path => "/usr/local/service/logstash/temp/.my-pipeline-sql_last_value.yml"
# 手动指定该值需要赋予正确的值,文件必须是 yml格式,且父级目录必须存在,例如
"/usr/local/service/logstash/temp/.my-pipeline-sql_last_value.yml"

必要项检查

  1. 时间字段不能为 NULL
  2. input jdbc时区必须指定 jdbc_default_timezone => "Asia/Shanghai"
  3. jdbc_page_size不能过大,建议 jdbc_page_size => 1000
  4. jdbc_connection_string 最好也指定一下时区,如 xxx?serverTimezone=Asia/Shanghai
  5. 若上游 MySQL 数据更新有离线任务,比如 tracking_column 追踪字段在当前写入了一个历史的值,具体场景可以理解为 logstash 在 2024-01-01T01:00:00.000+0800 已经调度过一次增量任务并且更新了 tracking_column 的值,但是MySQL在 2024-01-01T02:00:00.000+0800 写入了一条时间为 2023-12-31T14:25:36.000+0800 的数据(该场景我们称之为离线任务),这个时候就会出现这1条历史数据始终无法被 logstash 同步到 ES 的情况。因此我们就需要在 input schedule 避开离线任务调度的时间,否则可能会出现丢数问题,如 schedule => "*/5 9-23 * * *"

贴一个线上用户的例子:该用户使用 logstash 实时将上游 MySQL 数据增量同步到 ES,但因上游 MySQL 的数据也并非真正数据源,存在每天凌晨跑批从其他地方同步数据的情况。

代码语言:yaml
AI代码解释
复制
input {
  jdbc {
    jdbc_driver_library => "/usr/local/service/logstash/extended-files/mysql-connector-java-8.0.18.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://mysql:3306/database?serverTimezone=Asia/Shanghai"
    jdbc_user => "my_table"
    jdbc_password => "xxxxxx"
    jdbc_default_timezone => "Asia/Shanghai"
    jdbc_paging_enabled => true
    jdbc_page_size => 1000
    jdbc_validate_connection => true
    jdbc_validation_timeout => 3600

    use_column_value => true
    tracking_column => "update_time"
    tracking_column_type => "timestamp"

    # 定时调度,避开凌晨离线任务调度时间
    schedule => "*/5 9-23 * * *"

    statement => "SELECT * FROM my_table WHERE update_time > :sql_last_value"

    last_run_metadata_path => "/usr/local/service/logstash/extended-files/.pro_mysql_2_es_last_run.yml"
  }
}

filter {
  mutate {
    remove_field => ["@version", "@timestamp"]
    convert => {
      "id" => "string"
    }
  }
}

output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "idx"
    document_id => "%{id}"
    user => "elastic"
    password => "xxxxxx"
  }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL数据以全量和增量方式,向ES搜索引擎同步流程
/usr/local/logstash/sync-config/cicadaes.conf
知了一笑
2019/09/09
1.1K0
MySQL数据以全量和增量方式,向ES搜索引擎同步流程
​logstash index 生成时间晚 8 小时
es存储数据索引需按照天进行分割,即logstash 每天00:00生成新的索引,观察发现logstash默认情况下生成新的索引的时间为每天的 08:00 时,导致第二天的数据会被存储到前一天索引中(kibana 查询不受影响)。分析发现 logstash 生成索引文件名中的日期是从@timestamp字段的值中获取,默认为UTC时间。
Kevin song
2020/09/04
2.9K0
Elasticsearch + Logstash + Kibana 安装(全)
ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。三者相互配合,取长补短,共同完成分布式大数据处理工作。
create17
2019/12/03
2K0
Elasticsearch + Logstash + Kibana 安装(全)
11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
集中, 转换和存储数据, logstach是免费且开放的服务器端数据处理管道, 能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的"存储库"中
彼岸舞
2022/10/04
7090
11-Elasticsearch-logstash数据同步[Mysql->Logstash->Es]
使用 Logstash 同步海量 MySQL 数据到 ES
  在生产业务常有将 MySQL 数据同步到 ES 的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的Logstash 就很有优势了。   在使用 Logstash 我们应先了解其特性,再决定是否使用:
Jared.Tan
2020/06/17
10.5K0
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
logstash-input-jdbc 插件将 Zabbix 数据库中 alerts 表告警数据推送至 ElasticSearch 搜索引擎。
Kevin song
2020/08/28
2.7K0
Logstash-input-jdbc 同步 mysql 准实时数据至 ElasticSearch 搜索引擎
logstash-input-jdbc
https://segmentfault.com/a/1190000011784259
丁D
2022/08/12
5930
logstash sql 数据采集
Elasticsearch 6.3 发布SQL模块作为C-Pack的一部分使用 kabana官方工具查询 Dev Tools - console 查看 POST /_xpack/sql?form
以谁为师
2019/05/30
1.5K0
利用Logstash插件进行Elasticsearch与Mysql的数据
Logstash与Elasticsearch的安装就不多说了,我之前有两篇文章写的比较详细了ElasticSearch + Logstash + Kibana 搭建笔记 和 Filebeat+Logstash+ElasticSearch+Kibana搭建Apache访问日志解析平台。
大江小浪
2018/07/24
1.2K0
利用logstash将mysql多表数据增量同步到es
我的数据库是5.7版本,我这里下载5.1.47的驱动了,当然如果你们的数据库是8.0以上的版本,那么就下相应的版本就行
黎明大大
2020/09/08
4K0
利用logstash将mysql多表数据增量同步到es
logstash_output_kafka:Mysql同步Kafka深入详解
实际业务场景中,会遇到基础数据存在Mysql中,实时写入数据量比较大的情景。迁移至kafka是一种比较好的业务选型方案。
铭毅天下
2019/05/08
3K0
logstash_output_kafka:Mysql同步Kafka深入详解
Canal 同步数据坑太多?来试试 Logstash!
上一篇文章已经详细介绍了如何使用Canal中间件将MySQL数据同步至ElasticSearch。然而,由于Canal已经很久没有得到维护,使用过程中可能会遇到许多问题。因此,在尝试Canal的同时,我们还可以考虑使用Logstash来实现类似的功能。本章将重点介绍如何使用Logstash将MySQL数据同步至ElasticSearch,如果你已经掌握了上一篇关于Canal的教程,可以直接从环境准备中的Logstash部分开始阅读。
码猿技术专栏
2023/10/24
6070
Canal 同步数据坑太多?来试试 Logstash!
ELK —— Logstash 将 MySQL 数据同步至 ElasticSearch
Author:Gorit Date:2021/4/7 Refer:各种同类文章参考融合 + 自己的思考总结 2021年发表博文: 16/50
Gorit
2021/12/08
1.4K0
ELK —— Logstash 将 MySQL 数据同步至 ElasticSearch
怎样将 MySQL 数据表导入到 Elasticsearch
本文节选自《Netkiller Database 手札》 MySQL 导入 Elasticsearch 的方法有很多,通常是使用ETL工具,但我觉得太麻烦。于是想到 logstash 。 23.8. Migrating MySQL Data into Elasticsearch using logstash 23.8.1. 安装 logstash 安装 JDBC 驱动 和 Logstash curl -s https://raw.githubusercontent.com/oscm/shell/maste
netkiller old
2018/03/05
5.2K0
unbuntu下安装Elasticsrearch+logstash+elasticsearch-analysis-ik
1. 安装 elasticsearch 第一次使用的是 apt-get 的安装方式, 应该是软件源没设置为最新的, 结果安装的版本为1.7x的, 果断删除. 第二次直接将 elasticsearch 的 zip 包下载下来安装. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.zip unzip elasticsearch-5.5.1.zip 配置. 将elasticsearch.yml 的 clus
zcqshine
2018/05/11
8180
ELK的理论杂项知识
代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
趣学程序-shaofeer
2019/09/25
3810
Elasticsearch父子关系
Elasticsearch父子关系 5.x参考 官网join介绍 es6.x一对多方案参考
丁D
2022/08/12
5370
【腾讯云ES】基于ES的游戏社区搜索服务实践
基于上述的需求分析,使用ES搜索引擎能够完全满足相关的搜索需求,基于此在处理整体搜索后台服务上,主要考虑下面几个问题:
用户3437468
2022/12/09
1.5K0
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
3, 官网介绍例子,使用 logstash-input-jdbc 到 elasticsearch
全栈程序员站长
2022/09/10
8070
利用logstash的logstash-input-jdbc插件实现mysql增量导入ES的介绍
elasticsearch5xx使用logstash同步mysql
下载地址:https://www.elastic.co/downloads/logstash
全科
2018/08/15
5890
推荐阅读
相关推荐
MySQL数据以全量和增量方式,向ES搜索引擎同步流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档