zoukankan      html  css  js  c++  java
  • elasticsearch 分片恢复经历了哪些步骤?

    why

    服务重启,或者与集群断网重连时,需要和集群当前的主分片的数据保持一致。

    how

    上图中,RecoverTarget 代表加入集群前想要同步数据的分片,RecoverSource代表当前集群中的正常分片。

    同步过程本质上来说,就是通过拷贝索引文件&重放事务日志来完成的,具体的步骤如上图,我用一个实际的例子来说明。

    下图是分片的文件目录树,左边的RecoverTarget,右边是RecoverSource

    1.对比索引文件差异。target要把自己当前的索引文件快照发给source,然后source进行差异对比,从而确定要同步哪些文件(右边的蓝色部分)。

    2.文件同步。resouce把差异文件发送给target,target收到后,把文件写入lucene中。

    3.清理文件。这里要解决的问题是把清理掉原来的索引文件,把recovery.*这些临时文件还原到索引中去,从而实现索引文件一致(蓝色部分)。

    4.同步tlog。在这里source负责把tlog(红色部分)的事务读出来,分组发给target,target收到后,会依次进行重放。

    5.收尾。设置结束状态,发起定时任务。

  • 相关阅读:
    Pyhton学习——Day60
    Pyhton学习——Day58
    Python——微信数据分析
    C/C++文件指针偏移
    I/O流+统计文件词频
    vector概念
    new/delete工作机制
    Singleton单例类模式
    对象数组
    特殊成员函数
  • 原文地址:https://www.cnblogs.com/forestwang/p/6731632.html
Copyright © 2011-2022 走看看