看,灰机...

《Elasticsearch源码解析与优化实战》这本书中,有关6.x的新版副本恢复方法.

Elasticsearch | 作者 AiToMaKoTo | 发布于2020年08月19日 | 阅读数:1576

书中集群启动流程章节中,副分片recovery模块中有这样描述到:
  旧版副分片恢复都会去从主分片拉取全量的数据.在ES6.x后,优化了这个操作,不拉取全量数据,而是标记每个操作.在正常的写操作中,每次写入成功的操作都分配一个序号,通过对比序号就可以计算出差异范围.
  实现方式是: 添加了global checkpoint和local checkpoint,主分片负责维护global checkpoint,代表所有分片都写入这个序号的位置,local checkpoint代表当前分片已写入成功的最新位置,恢复时通过对比两个序列号,计算出缺失的数据范围,然后通过translog重放这部分数据
 
疑问一: 所有分片都写入这个序号的位置,这个所有分片是指主分片还是副分片还是主副分片?
疑问二: 代表当前分片都写入成功的最新位置,这个分片又是指什么分片?
疑问三: 对比两个序列号,计算出缺失的数据范围,那没缺失的数据是如何恢复到副本的?
已邀请:

easyice - 张超

赞同来自: kitdeng medcl byx313 wkdx FFFrp AiToMaKoTo laoyang360更多 »

Q:所有分片都写入这个序号的位置,这个所有分片是指主分片还是副分片还是主副分片?
A:主分片 && 副分片 都到达了这个序号
 
Q:代表当前分片都写入成功的最新位置,这个分片又是指什么分片?
A:主分片,或者副分片
 
Q:对比两个序列号,计算出缺失的数据范围,那没缺失的数据是如何恢复到副本的?
A:数据没有差异,无需拷贝数据,这个过程就快速完成了

要回复问题请先登录注册