数据同步方案

mysql 数据同步到elastic中

本文中不提及实现,仅提供方案;

增量数据同步

方案一:

通过logstash,官方提供的工具,快速实现数据同步;值得注意的是选择logstash时需要和elastic的版本做对应,由于elastic 版本不兼容,选择logstash的也需要对应版本;
logstash集群部署有一些麻烦,当然也可以直接购买云产品;

方案二

通过binlog的方式进行同步;同样的时有云产品,也可以通过cannal实现对mysql的binlog的订阅;订阅到binlog 以后对数据进行解析,通过java代码的方式进行同步;为了提高并发和容灾,集群下可以使用mq削峰;将订阅到binlog 通过mq发送,由订阅的客户端进行消费,极大的提高数据的处理速度;
集群下有可能出现乱序的问题,这部分需要在代码中对消息的创建时间进行记录,如果是同一条数据,需要根据创建时间对数据进行最终的修改,比如先修改后删除了某条数据,由于投递和消费的速度不一致,导致数据先被删除了,然后又被修改了,导致这条数据最后在es中是出于修改的状态而不是删除;

优缺点对比

logstash的缺点
  1. logstash 日志监控不是很方便,出现异常不容易即时排查
  2. 他的实现方式需要依赖自增ID或者可以标识当前数据为最新数据的时间戳字段,如果以上两个条件不满足则无法使用;
  3. sql编写的能力要求较高;通常情况下需要同步到es一般会融合几个表的数据,这边建议可以创建视图;
  4. 由于上述特性,如果使用的是时间戳,那么有可能出现数据丢失的情况;
  5. 集群可用方案较少
logstash的优点
  1. 上手快,毕竟是一个工具,又输入,处理,输出三部分组成,并且又大量案例,很快就能实现数据同步,增量全量均可;
  2. 0 代码,通过配置即可操作;
  3. 插件众多,并且可以自定义三个部分的插件,比较友好;

全量数据同步

  1. logstash 通过配置起始时间即可
  2. 通过调度任务;

核心思想

  1. 如何捞取有效数据
  2. 如何批量处理数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值