如果一个之前不可用的ES节点重启后重新加入集群,而该节点上还有旧的数据,ES会做以下几件事:
- ES会发现node2上有旧的数据分片
- 会将node2上的分片标记为不可分配(unassigned)
- 会将node2上的分片数据与其他 Master eligible 节点上的 primary/replica 数据对比
- 如果数据不一致,ES会:
- 保留其他节点的数据
- 删除node2节点上不一致的数据
- 然后将需要的replica分片重新分配给node2
- node2上的replica分片将与其他primary/replica的数据进行同步
- 数据一致后,node2上的分片才会变为可用(assigned)状态
整个流程相当于:
- 删除node2上不一致的数据
- 重新分配需要的replica分片给node2
- 与其他节点的数据同步,让node2的数据保持一致
- 将node2上的分片变为assigned状态
所以总的来说:文章来源:https://www.toymoban.com/news/detail-603886.html
- ES会检查node2上的数据是否存在没有 replicate 的分片
- 如果有,会将这些分片标记为unassigned,然后删除
- 然后将需要的replica分片分配给node2
- 数据同步后,node2上分片变为assigned状态
- 确保了集群的数据一致性
所以即使node2重新加入集群时上面还有旧数据,通过上述步骤,数据最终也能保持一致。文章来源地址https://www.toymoban.com/news/detail-603886.html
到了这里,关于不可用的ES节点重启后重新加入集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!