分享

zookeeper运行原理:zookeeper的快照和日志的关系snapshot和log

1.zookeeper的运行机制是什么样的?
如下:
  • 当开始第一次运行的时候,首先会产生一个snapshot,这个时候是没有log的。
  • 当第一次有操作的时候开始log文件产生的时候,这时候不会产生snapshot。
  • 当第一个log文件体积达到预设值时候,这时候系统需要snapshot,然后创建新的日志文件,以此不断交替。

2.zookeeper什么情况下不会丢失日志?为什么?

备份最新一份的snapshot和最近的一份log即可
如果snapshot后,最新的Log丢失,那么该段时间内数据变更全部丢失。(例如机器死机,zk来不及执行关闭动作snapshot)
如果snapshot后,最新的log有保存,那么数据不会丢失。
原因:snapshot保存了系统最近一次的完整镜像,同时在每次关闭服务的时候也会生成snapshot。
          因此snapshot之前的snapshot和log是无效的,而snapshot之后的信息则仅保存在log中


已有(3)人评论

跳转到指定楼层
pig2 发表于 2014-4-9 19:38:42
zookeeper的快照和日志的关系snapshot和log
Transaction文件的文件名中zxid是文件中所有命令中zxid最小的zxid
Snapshot中的lastProcessedZxid是最后一个操作的zxid,一般来讲是最大的zxid
Restore时会读取snapshot然后根据snapshot中lastProcessedZxid+1后读取命令log重做命令附加到DataTree上
从下面的截图可以清晰的看到,每次的snapshot都是伴随着新log文件的生成的。
换句话说,zookeeper的运行机制是这样的:
当开始第一次运行的时候,首先会产生一个snapshot,这个时候是没有log的。
当第一次有操作的时候开始log文件产生的时候,这时候不会产生snapshot。
当第一个log文件体积达到预设值时候,这时候系统需要snapshot,然后创建新的日志文件,以此不断交替。
因此,备份原则应该是这样:
备份最新一份的snapshot和最近的一份log即可
如果snapshot后,最新的Log丢失,那么该段时间内数据变更全部丢失。(例如机器死机,zk来不及执行关闭动作snapshot)
如果snapshot后,最新的log有保存,那么数据不会丢失。
原因:snapshot保存了系统最近一次的完整镜像,同时在每次关闭服务的时候也会生成snapshot。
          因此snapshot之前的snapshot和log是无效的,而snapshot之后的信息则仅保存在log中

1.jpg




2.jpg




3.jpg 4.jpg



http://hi.baidu.com/jiaozhenqing/item/8f4721f7e0c88e2c743c4c9f



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条