ZooKeeper 怎么备份?可以在线复制数据目录吗?只备份快照够不够?用旧备份恢复一个节点会不会回滚整个集群?这篇逐个验证。
次 复制时源节点 znode 数 副本启动 副本 znode 数 副本 ≤ 源 1 458 成功 462 是 2 1045 成功 1049 是 3 1622 成功 1626 是 4 2223 成功 2245 是 5 2836 成功 2856 是
这里复制的是 dataDir(含 version-2 下的快照和事务日志)。副本的 znode 数大于等于「复制开始时」的数,是因为复制期间写入还在继续。
源节点 znode 数 3505;只用快照 snapshot.ba3 恢复:znode 数 2983(快照之后的写入没有了)
用 300 个写入之前的旧备份恢复 z59c-1 后:Mode follower,znode 数 405(leader 上 405),追上用的是 ['DIFF']
注意这只是「恢复一个节点」。如果所有节点都用旧备份覆盖(整个集群回滚到备份时刻),备份之后的写入就丢了——那是灾难恢复,不是节点恢复,本文没有测整个集群的回滚。