测试同学反馈,某业务商品数据查询不到,但数据库里面存在。
我们商品数据,从es中查询的。通过logstash,将mysql里面的数据同步到es中。
查看了下es中,该数据确实不存在。
重新构建index 然后做了一次全量数据同步,发现es中的数据总量低于mysql中数据源的数据总量。
原因:
sql有问题。数据查询sql,未指定排序。使用的默认排序,库表使用的InnoDB引擎。
当数据发生delete、update时,排序会发生变化。
后来指定根据主键排序,数据同步正常。es中数据和mysql数据量一样
查看
es
中的
数据
,
数据
从identifi
es
这个对象中获取,该对象中
数据
为空。这条
数据
上有tag (_jdbcstreamingfailure),这个有点奇怪
查看对应的说明,是
同步
过程中出现错误添加的默认标签(http...
MYSQL
logstash
同步
增量
数据
到
ES
最近一段时间,在使用
mysql
通过
logstash
-jdbc
同步
数据
到
es
,但是总是会有一定程度
数据
丢失
。
logstash
-jdbc无非是通过sql遍历
数据
表的所有
数据
,然后
同步
到
es
。对于表里面的所有字段都需要查出来然后
同步
到
es
中去。本地测试
数据
表结构如下: CREATETABLE`user`(`id`bigint(20)NOTNU...
1.点击 Tapdata Cloud 操作后台左侧菜单栏的【连接管理】,然后点击右侧区域【连接列表】右上角的【创建连接】按钮,打开连接类型选择页面,然后选择
MySQL
。1.同第一步操作,点击左侧菜单栏的【连接管理】,然后点击右侧区域【连接列表】右上角的【创建连接】按钮,打开连接类型选择页面,然后选择
Elasticsearch
。Tapdata Cloud 有三种校验模式,我常用最快的快速count校验 ,只需要选择到要校验的表,不用设置其他复杂的参数和条件,简单方便。若指定时区,则使用指定后的时区设置。
问题:通过
logstash
同步
mysql
数据
到
ES
,
mysql
数据
删除后,
ES
里面的
数据
不会删掉
这时候会导致
ES
和
mysql
数据
不一致,如果对
数据
一致性要求不是那么强,可以用MQ消息队列做,如果对
数据
一致性要求很高,比如电商项目,这样会出现很大的问题,也可以在
Mysql
删除成功后,再删除
ES
里面的
数据
下面是具体解决方案
参考链接:https://www.zhihu.com/qu
es
tion/351802336/answer/868380109
很多时候,在项目初期都是仅采用
mysql
数据
库作为业务
数据
库,但是随着
数据
的增长,当单表的
数据
超过千万级后,在怎么对查询SQL语句进行优化性能都不理想。这种情况下,我们就可以考虑通过
ES
来实现项目的读写分离:写操作对
Mysql
库进行操作,读操作采用
ES
。那么我们应该如何保证
ES
和
Mysql
的
数据
同步
呢?本文给大家介绍通过
Logstash
实现
mysql
数据
定时增量
同步
到
ES
。...
#elk# #
ElasticSearch
#1 概述
ElasticSearch
是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于R
ES
Tful web接口。
Elasticsearch
是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
ElasticSearch
用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。...
logstash
就是一个具备实时
数据
传输能力的管道,负责将
数据
信息从管道的输入端传输到管道的输出端;在容器里面的/usr/share/
logstash
/路径下的隐藏文件.
logstash
_jdbc_last_run中记录了全量
同步
的UTC时间。这样就导致我们自己定义的映射无法使用,而有
数据
的是
es
自动生成的那个小写。
logstash
_jdbc_last_run默认是没有的,执行增量后创建。全量
同步
是指全部将
数据
同步
到
es
,通常是刚建立
es
,第一次
同步
时使用。
数据
库插入一条
数据
之后,会自动
同步
至
es
。
下载版本一定要和
Elasticsearch
版本一致(如
Elasticsearch
版本为7.10.2,那么对应下载的
Logstash
版本也要选择7.10.2!⚠️原因:
数据
库表中的sex字段,字段类型为tinyint,
Logstash
会转成boolean,但是
ES
中设置的也是int类型,所以你懂的。恭喜你🎉🎉🎉,到这你已经成功3/4啦,接下来进入到最重要,同时99%会报错的最后一步,加油⛽️。恭喜你🎉🎉🎉,到这你已经成功1/4啦,接下来我们要去创建
ES
索引以及
MySQL
表啦,加油⛽️。ps:创建过程略过…
2. 在 /usr/local/
logstash
-7.6.2/ 下创建文件夹 sync/,将
数据
库驱动
mysql
-connector-java-5.1.41.jar 包上传到 /usr/local/
logstash
-7.6.2/sync/ 下,将其 放入 /usr/local/
logstash
-7.6.2/sync/didiok-items.sql 文件中。先上传到服务器 /home/software/ 下,然后解压,并将解压后的文件夹移动到 /usr/local/ 下。5. 启动
logstash
。