【ELK】同步数据方案

ES集群间迁移

  https://segmentfault.com/a/1190000039052421   Elasticdump数据备份与数据转移索引还原(实现不同ElasticSearch集群之间索引迁移)


Mysql数据同步到ES方案

  

 方式:同步双写(数据写入DB时,同时写ES)

 

   优点:逻辑简单

  缺点:硬编码(写入MYSQL地方都要ES写入代码);业务强耦合;存在双写失败丢失数据风险(ES系统不可用、应用数据与ES网络故障、应用重启导致来不及写入ES);

方式:异步双写Worker

  数据库的相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化;增加一个定时器程序(京东内部叫Worker),让该程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来;

       缺点:时效性问题(定时器周期长);轮询压力

  


阿里Canal(binlog)   

canal主要用途是对MySQL数据库增量日志进行解析,提供增量数据的订阅和消费,   

 

  •   canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
  •   MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
  •   canal 解析 binary log 对象(原始为 byte 流)

Logstash(不基于binlog,基于mysql定时)

定时同步,从DB通过mysql拼接数据写入ES

可选不同的input和output插件

方案:导入文件(logstash-input-file

      通过执行GET myindex/_search,检索历史数据是否已导入成功

方案:logstash-input-jdbc定时执行SQL将结果写入流  // 可能不支持7.X ES

  

   可实现历史记录的全量同步,问题

  1)如何知道什么时候同步历史数据完成?

  2)准同步,依赖定时同步的周期

https://zhuanlan.zhihu.com/p/40177683  实战过程

https://cloud.tencent.com/developer/article/1694124?from=article.detail.1647080   利用logstash将mysql多表数据增量同步到es

 

 

 bin/logstash-plugin install logstash-input-jdbc   对接mysql

  

   

bin/logstash-plugin install logstash-output-elasticsearch  对接ES

  

 

posted @ 2023-01-14 11:26  飞翔在天  阅读(295)  评论(0编辑  收藏  举报