美文网首页Zookeeper
zookeeper数据持久化

zookeeper数据持久化

作者: Alen_ab56 | 来源:发表于2021-11-14 15:59 被阅读0次

    zookeeper靠snapshot日志和log日志进行数据的持久化和恢复工作

    SNAPSHOT
    snapshot机制定期将内存数据序列化到snapshot.xx(zxid)文件,数量受基本配置autopurge.snapRetainCount控制,默认是3
    频率受高级配置snapCount控制:默认是10w,不过不是所有节点都是达到10w就开始写snapshot,
    因为写snapshot的过程中写请求是会被卡住的,所以又有了另外一个内部算法,即取随机数
    [snapCount/2+1, snapCount],在这个范围内就有可能触发重写snapshot.

    LOG
    另外生成的log.xxx(zxid) 则是实时的日志记录,也叫做WAL(write ahead log)预写日志.
    默认64M,如果在生成新的snapshot前,文件被写满,就会扩一倍大小;
    默认预分配大小受高级配置preAllocSize控制,如果snapCount很小,这个值也可以减小;

    snapshot.xx和log.xx的xx 都是16进制,
    300M snapshot.27c343ef9a
    300M snapshot.27c342718c
    300M snapshot.27c34114f6
    300M snapshot.27c3403a76
    300M snapshot.27c33f2cbe
    300M snapshot.27c33dc303
    300M snapshot.27c33c83a1
    300M snapshot.27c33b3960
    13M log.27c342718e
    13M log.27c33dc305
    12M log.27c34114f8
    12M log.27c33b39d4
    11M log.27c33c83a3
    11M log.27c33a0eef
    9.2M log.27c33f2cc0
    7.4M log.27c3403a78
    4.0K currentEpoch
    4.0K acceptedEpoch
    2.5M log.27c343ef9d
    log.zxid的zxid是log文件中第一条事务的ZXID,ZXID规则为前32位(4字节)为leader周期,后32字节为事务请求序列,所以通过事务日志名称就可以轻松的知道当前的leader周期与每个文件所属的leader周期.(根据日志的最新修改时间)

    这2类文件可以分不同的目录部署, 受高级配置dataLogDir控制,官方介绍:
    Having a dedicated log device has a large impact on throughput and stable latencies. It is highly recommended to dedicate a log device and set dataLogDir to point to a directory on
    that device, and then make sure to point dataDir to a directory not residing on that device.
    ————建议是logDir存放log.xx文件,因为写入频率比较高,可以挂性能比较好的盘

    事务日志文件和快照文件都是二进制数据, 这2个文件的查看方式可以看另外一篇博文
    Zookeeper日志文件查看,具体结构分析

    相关文章

      网友评论

        本文标题:zookeeper数据持久化

        本文链接:https://www.haomeiwen.com/subject/flqxtrtx.html