《Elasticsearch源码解析与优化实战》这本书中,有关6.x的新版副本恢复方法.
Elasticsearch | 作者 AiToMaKoTo | 发布于2020年08月19日 | 阅读数:3781
书中集群启动流程章节中,副分片recovery模块中有这样描述到:
旧版副分片恢复都会去从主分片拉取全量的数据.在ES6.x后,优化了这个操作,不拉取全量数据,而是标记每个操作.在正常的写操作中,每次写入成功的操作都分配一个序号,通过对比序号就可以计算出差异范围.
实现方式是: 添加了global checkpoint和local checkpoint,主分片负责维护global checkpoint,代表所有分片都写入这个序号的位置,local checkpoint代表当前分片已写入成功的最新位置,恢复时通过对比两个序列号,计算出缺失的数据范围,然后通过translog重放这部分数据
疑问一: 所有分片都写入这个序号的位置,这个所有分片是指主分片还是副分片还是主副分片?
疑问二: 代表当前分片都写入成功的最新位置,这个分片又是指什么分片?
疑问三: 对比两个序列号,计算出缺失的数据范围,那没缺失的数据是如何恢复到副本的?
旧版副分片恢复都会去从主分片拉取全量的数据.在ES6.x后,优化了这个操作,不拉取全量数据,而是标记每个操作.在正常的写操作中,每次写入成功的操作都分配一个序号,通过对比序号就可以计算出差异范围.
实现方式是: 添加了global checkpoint和local checkpoint,主分片负责维护global checkpoint,代表所有分片都写入这个序号的位置,local checkpoint代表当前分片已写入成功的最新位置,恢复时通过对比两个序列号,计算出缺失的数据范围,然后通过translog重放这部分数据
疑问一: 所有分片都写入这个序号的位置,这个所有分片是指主分片还是副分片还是主副分片?
疑问二: 代表当前分片都写入成功的最新位置,这个分片又是指什么分片?
疑问三: 对比两个序列号,计算出缺失的数据范围,那没缺失的数据是如何恢复到副本的?
1 个回复
easyice - 张超
赞同来自: kitdeng 、medcl 、byx313 、wkdx 、FFFrp 、AiToMaKoTo 、laoyang360更多 »
A:主分片 && 副分片 都到达了这个序号
Q:代表当前分片都写入成功的最新位置,这个分片又是指什么分片?
A:主分片,或者副分片
Q:对比两个序列号,计算出缺失的数据范围,那没缺失的数据是如何恢复到副本的?
A:数据没有差异,无需拷贝数据,这个过程就快速完成了