身安不如心安,屋宽不如心宽 。

ES集群热迁移解决方案

Elasticsearch | 作者 stephenyou | 发布于2021年02月09日 | 阅读数:2443

目前在做ES集群的迁移和版本升级(1.x\2.x\5.x->7.4),数据量比较大,业务数据存在增删改查,要求保证服务始终可用,并且数据实现最终一致性,目前考虑的一种思路是双写+reindex的方案,但是这种方案在增删改查的时候可能会导致新老集群数据出现不一致,请问有什么比较好的解决方案吗?
已邀请:

Morry

赞同来自: stephenyou zhb34422

需要一个类似kafka这样的消息队列,并且服务是过nginx的
 
1. dump数据库,并记下此时kafka的offset,将dump的数据离线导入ES
2. 导完后,从记录的offset点开始消费kafka,增量数据写入ES
3. 新集群的增量数据offset已经追上旧集群的消费offset,nginx指向新集群
 
另外,ES7.0 变化比较大,代码层要提前改好

yongde - 90后IT男

赞同来自: stephenyou

1、写ES消息经过kafka
2、设置两个消费组:A和B,A往旧集群写,B往ES7写
3、消费组A保持不变,reindex前记录下消费组B的offset
4、存量数据:reindex
5、增量数据,设置消费组B的offset为步骤3记录的offset,开始追数据
6、待增量数据追完后,关闭消费组A,读写流量切到ES7

要回复问题请先登录注册