有時候迹缀,我們會需要追溯zookeeper在某個時間點執(zhí)行的事務(wù)日志筑公,這個時候羔砾,我們可以通過zkTxnLogToolkit.sh查看zookeeper的事務(wù)日志望艺,先通過如下代碼來向zookeeper寫入數(shù)據(jù)
@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腳本躏救,執(zhí)行如下命令行
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,