1、登录客户端
[root@vm254200 bin]# ./zkCli.sh -timeout 5000 -server 192.168.254.200:2181
Connecting to 192.168.254.200:2181
2019-09-20 20:23:29,629 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
2019-09-20 20:23:29,633 [myid:] - INFO [main:Environment@100] - Client environment:host.name=vm254200
命令集
[zk: 192.168.254.200:2181(CONNECTED) 6] h
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
2、列出节点信息 ls path [watch]
[zk: 192.168.254.200:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 192.168.254.200:2181(CONNECTED) 2] ls /zookeeper
[quota]
3、查询节点状态信息 stat 节点信息 stat path [watch]
[zk: 192.168.254.200:2181(CONNECTED) 5] stat /zookeeper
cZxid = 0x0 #该节点被创建时的事务ID
ctime = Thu Jan 01 08:00:00 CST 1970 #创建时间
mZxid = 0x0 #最后一次更新时的事务ID
mtime = Thu Jan 01 08:00:00 CST 1970 #修改时间
pZxid = 0x0 #子节点列表最后一次修改时的事务ID(创建子节点或删除子节点信息是变更)
cversion = -1 #子节点版本号
dataVersion = 0 #数据版本号
aclVersion = 0 #权限版本号
ephemeralOwner = 0x0 #创建此临时节点的事务ID
dataLength = 0 #当前节点数据的长度
numChildren = 1 #当前节点拥有子节点的个数
4、获取节点数据内容 get path [watch]
5、 列出子节点及状态信息 ls2 path [watch]
[zk: 192.168.254.200:2181(CONNECTED) 8] ls2 /zookeeper
[quota]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
6、创建节点 create [-s] [-e] path data acl
-s 表示是顺序节点
-e 表示是临时节点,会话结束后就会删除
path 表示是路径
data 表示数据
acl 表示权限
[zk: 192.168.254.200:2181(CONNECTED) 9] create /node_1 123
Created /node_1
[zk: 192.168.254.200:2181(CONNECTED) 10] get /node_1
123
cZxid = 0x200000002
ctime = Fri Sep 20 20:47:57 CST 2019
mZxid = 0x200000002
mtime = Fri Sep 20 20:47:57 CST 2019
pZxid = 0x200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: 192.168.254.200:2181(CONNECTED) 11] create /node_1/node_1 234
Created /node_1/node_1
[zk: 192.168.254.200:2181(CONNECTED) 12] create -e /node_1/node_2 2341234
Created /node_1/node_2
7、退出 quit
8、修改节点值 set path data [version]
- path:路径
- data:数据
- version:版本
每次修改 cversion 会递增、dataVersion也会递增
[zk: 192.168.254.200:2181(CONNECTED) 16] set /node_2 999
cZxid = 0x20000000b
ctime = Fri Sep 20 21:02:28 CST 2019
mZxid = 0x20000001b
mtime = Fri Sep 20 21:04:32 CST 2019
pZxid = 0x20000000b
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: 192.168.254.200:2181(CONNECTED) 17] get /node_2
999
cZxid = 0x20000000b
ctime = Fri Sep 20 21:02:28 CST 2019
mZxid = 0x20000001b
mtime = Fri Sep 20 21:04:32 CST 2019
pZxid = 0x20000000b
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
version 必须和查询的dataVersion版本保持一致(等于dataVersion )大于查询的版本会报错
[zk: 192.168.254.200:2181(CONNECTED) 22] set /node_2 999 0
version No is not valid : /node_2
[zk: 192.168.254.200:2181(CONNECTED) 23] set /node_2 999 4
cZxid = 0x20000000b
ctime = Fri Sep 20 21:02:28 CST 2019
mZxid = 0x200000020
mtime = Fri Sep 20 21:11:49 CST 2019
pZxid = 0x20000000b
cversion = 0
dataVersion = 5
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: 192.168.254.200:2181(CONNECTED) 24]
9、 删除指定路径数据节点 delete path [version]
[zk: 192.168.254.200:2181(CONNECTED) 25] delete /node_1/node_1
[zk: 192.168.254.200:2181(CONNECTED) 26] ls
[zk: 192.168.254.200:2181(CONNECTED) 27] ls /node_1
[]
删除有子节点的节点,循环删除 rmr path
[zk: 192.168.254.200:2181(CONNECTED) 31] rmr /node_1
[zk: 192.168.254.200:2181(CONNECTED) 32] ls /
[node_20000000008, node_20000000007, node_20000000009, zookeeper, node_20000000004, node_20000000015, node_20000000003, node_20000000014, node_20000000006, node_20000000005, node_20000000016, node_20000000011, node_20000000010, node_20000000002, node_20000000013, node_20000000012, node_2]
[zk: 192.168.254.200:2181(CONNECTED) 33]
10、配额相关指令 setquota -n|-b val path
- -n 限制子节点的个数 val 子节点个数
- -b 限制子节点的长度 val 子节点长度
[zk: 192.168.254.200:2181(CONNECTED) 36] setquota -n 2 /node_2
Comment: the parts are option -n val 2 path /node_2
[zk: 192.168.254.200:2181(CONNECTED) 37] create /node_2/node_2 123412
Created /node_2/node_2
[zk: 192.168.254.200:2181(CONNECTED) 38] create /node_2/node_3 123412
Created /node_2/node_3
#设置了配额为2,也会创建成功
[zk: 192.168.254.200:2181(CONNECTED) 39] ls /node_2
[node_1, node_2, node_3]
但是会在/usr/local/zookeeper-3.4.14/bin/zookeeper.out 日志文件 抛出警告信息
[root@vm254200 bin]# tail zookeeper.out
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@949] - Client attempting to establish new session at /192.168.254.200:44834
2019-09-20 21:02:15,949 [myid:1] - INFO [CommitProcessor:1:ZooKeeperServer@694] - Established session 0x10000054ef50003 with negotiated timeout 5000 for client /192.168.254.200:44834
2019-09-20 21:21:54,655 [myid:1] - WARN [CommitProcessor:1:DataTree@302] - Quota exceeded: /node_2 count=3 limit=2
2019-09-20 21:21:59,460 [myid:1] - WARN [CommitProcessor:1:DataTree@302] - Quota exceeded: /node_2 count=4 limit=2
查看指定数据节点配额数据情况:listquota path
[zk: 192.168.254.200:2181(CONNECTED) 40] listquota /node_2
absolute path is /zookeeper/quota/node_2/zookeeper_limits
Output quota for /node_2 count=2,bytes=-1 #当前节点的配额信息 -1 是长度没有限制
Output stat for /node_2 count=4,bytes=21 #当前节点的状态信息 21 是自己的数据长度+子节点的数据长度
删除节点配额信息 delquota [-n|-b] path
[zk: 192.168.254.200:2181(CONNECTED) 41] delquota -n /node_2
[zk: 192.168.254.200:2181(CONNECTED) 42] listquota /node_2
absolute path is /zookeeper/quota/node_2/zookeeper_limits
Output quota for /node_2 count=-1,bytes=-1 #节点个数没有限制
Output stat for /node_2 count=4,bytes=21
11、列出所有指令的历史 history
[zk: 192.168.254.200:2181(CONNECTED) 43] history
33 - ls /
34 - create /node_2/node_1
35 - create /node_2/node_1 123412
36 - setquota -n 2 /node_2
37 - create /node_2/node_2 123412
38 - create /node_2/node_3 123412
39 - ls /node_2
40 - listquota /node_2
41 - delquota -n /node_2
42 - listquota /node_2
43 - history
12、重复执行历史命令中的某一个指令 redo 14
[zk: 192.168.254.200:2181(CONNECTED) 44] redo 34
[zk: 192.168.254.200:2181(CONNECTED) 45]