有时候,我们会需要追溯zookeeper在某个时间点执行的事务日志,这个时候,我们可以通过zkTxnLogToolkit.sh查看zookeeper的事务日志,先通过如下代码来向zookeeper写入数据
@Log4j2
public class ZooKeeperWriteDataDemo {
public static void main(String[] args) throws Exception {
ZooKeeper zooKeeper = new ZooKeeper("localhost:2181", 30_000, null);
zooKeeper.create("/zk-test", "hello".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
Stat stat = zooKeeper.setData("/zk-test", "world".getBytes(), -1);
byte[] zooKeeperData = zooKeeper.getData("/zk-test", false, stat);
log.info("zookeeper data len is {}", zooKeeperData);
zooKeeper.close();
}
}
使用./bin/zkTxnLogToolkit.sh脚本,执行如下命令行
bin/zkTxnLogToolkit.sh -v data/version-2/log.1
即可输出如下时间点的操作
10/21/22, 6:41:51 AM UTC session 0x10003415e890000 cxid 0x0 zxid 0x1 createSession 30000
10/21/22, 6:41:51 AM UTC session 0x10003415e890000 cxid 0x1 zxid 0x2 create /zk-test,hello,[31,s{'world,'anyone}
],false,1
10/21/22, 6:41:51 AM UTC session 0x10003415e890000 cxid 0x2 zxid 0x3 setData /zk-test,world,
网友评论