pig2 发表于 2014-4-9 19:36:47

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中


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中














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



zhujun182104906 发表于 2016-10-21 18:46:59

学习了

平凡的见哥哥 发表于 2017-2-22 11:15:18

学习了。
页: [1]
查看完整版本: zookeeper运行原理:zookeeper的快照和日志的关系snapshot和log