zoukankan      html  css  js  c++  java
  • elasticsearch 事务日志 sync 都干了些什么?

    what

    本质上就是把generation和它所属的ops位置的关联信息写到写到.ckp文件中。

    上图表示新建doc过程的文件变化 – 

    首先把doc1写入lucene的索引文件,其实只写到了操作系统的page cache。

    然后再把index(doc1)写入tlog文件(已落盘)

    最后一步就是sync,蓝色部分是sync前的状态,它表示最近提交的generation=5,跟此gen关联的ops有两个,其实位置在第80个字节,如果sync后,.ckp将更新opsnum=3,offset=80+index(doc1)

    why

    如果不去sync会咋样?如果在上图的状态下掉电的话,看看会发生什么事情 — lucene中的doc1没了,服务重启后,找到最新的generation=5,然后通过offset=80找到了对应的ops1和ops2。

    index(doc1)被忽略了,虽然它就在ops2后面。当index(doc2)插进来,会从offset=80开始写。。。

    这也是Es可能会丢数据的根源!!! — tlog日志没有同步到ckp

  • 相关阅读:
    卡尔曼滤波的原理与思想
    什么是端口
    什么是ICD文件
    USB口,串口,以太网口简介
    Linux基本操作笔记
    网络营销学习路线图
    读书推荐:2017 第一期
    又见Bug
    如何请教别人问题?
    圆桌问答 (2017 第一季)
  • 原文地址:https://www.cnblogs.com/forestwang/p/6731720.html
Copyright © 2011-2022 走看看