请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

es数据同步和数据滞后问题

老师,有两个问题想请教一下:

  1. 请问 canal 可以从 mysql 全量同步数据到 es,并自动转换为增量同步吗?或者业界有没有其他可行的方案?
  2. es数据会短时间滞后于mysql,那如何处理这些滞后的搜索结果呢?比如 a 被删除,但在同步到 es 期间用户还是可以搜索到 a。

正在回答 回答被采纳积分+3

1回答

龙虾三少 2019-11-05 22:53:39

canal主要是处理变化的增量数据的管道 从无到有的数据不适合canal 需要用全量索引覆盖构建的方法 然后说数据同步时间差的问题是避免不了的 真实的环境中同步时间差甚至是毫秒级别 就算是这样即便出现列表页有点进去下架了其实淘宝之类的产品也都有这个问题 属于正常的解决方案

0 回复 有任何疑惑可以回复我~
  • 提问者 慕桂英6345398 #1
    感谢老师的回答。整个全量和增量的流程我大概想法如下:将相关表的全量数据同步到另外一个库,然后利用 spark 进行 etl 并写入 es。增量利用 canal,选择全量导出前的时间(这里不知道能不能指定时间,如果不行,如何补充全量导入期间出现的变动?),然后开始增量更新。
    回复 有任何疑惑可以回复我~ 2019-11-06 00:15:11
  • 增量的特点是可以重复搞 即便全量搞过了 增量也可以覆盖 没必要强求时间分割
    回复 有任何疑惑可以回复我~ 2019-11-06 00:23:23
  • 提问者 慕桂英6345398 回复 龙虾三少 #3
    意思是,只要全量之前开启了 binlog,那全量后的增量就可以从 binlog 中找到全量期间数据的变化更新到 es?(在不停服务时全量同步数据,期间数据会被修改嘛)
    回复 有任何疑惑可以回复我~ 2019-11-06 09:15:03

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信