0
点赞
收藏
分享

微信扫一扫

etcd学习笔记-客户端操作etcdctl

etcdctl客户端

etcdctl是一个命令行客户端,用于进行服务测试或者手动修改数据库内容, etcdctl v2和v3使用方式不同,现在都是使用v3版本,通过如下修改版本。

export ETCDCTL_API=2
export ETCDCTL_API=3

etcd项目二进制发行包中已经包含了etcdctl工具,通过etcdctl可执行文件直接进行调用。

常用命令

etcdctl -h #查看命令

etcd学习笔记-客户端操作etcdctl_数据库操作

commands:

etcd学习笔记-客户端操作etcdctl_修订版_02

etcd学习笔记-客户端操作etcdctl_3d_03

etcd学习笔记-客户端操作etcdctl_数据库操作_04

etcd学习笔记-客户端操作etcdctl_修订版_05

options:

etcd学习笔记-客户端操作etcdctl_3d_06

etcd学习笔记-客户端操作etcdctl_数据库操作_07

etcd支持的命令大体上分为数据库操作和非数据库操作两类。

数据库操作

数据库操作基本围绕着键值对和目录CRUD操作以及对应的生命周期管理。etcd在键的组织上采用了类似文件系统中目录盖概念,即层次化的空间接口。

键操作

增删改查操作,包括PUT,GET,DELETE等命令。

PUT

#PUT 设置或者更新某个键的值
etcdctl put /test/foo1 "hellow world"
#GET 获取指定键的值
etcdctl get /test/testkey
#GET通过十六进制返回
etcdctl get /test/foo1 --hex
#GET范围内的值,获取foo1 到foo3范围内的值
etcdtl get /test/foo1 /test/foo3
#GET通过--prefix指定前缀
etcdctl get --prefix /test/foo
#通过--limit-2限制获取的数量
etcdctl get --prefix --limit=2 /test/foo

如果想读取过往键版本的值,如回滚到旧的键的配置,可以通过访问键的修改记录来查询

  • etcd集群上的键值存储的每一个修改都会增加etcd集群的全局修订版本
  • 应用可以通过提供旧有的etcd修改版本来读取被替代的值

以下是访问以前版本的key的示例

#访问最新版本的key
etcdctl get --prefix foo
#访问第四个版本的key
etcdctl get --prefix-rev=4 #

如果需要读取某个范围内的键的值

#读取大于等于键b的byte值的
etcdctl get --from-key b

DELETE

删除一个或者指定范围内的键。

#删除一个键
etcdctl del foo
#删除从foo到foo9范围内键
etcdctl del foo foo9
#删除键zoo并返回被删除的键值对
etcdctl del --pref-kv zoo
#删除前缀为zoo的键的命令
etcdctl del --prefix zoo
#删除大于等于b的byte值的键的命令

watch

监测一个键值的变化,一旦键值发生更新,就会输出到最新的值并退出

etcdctl watch testkey
#在另外一个终端
etcdctl put testkey Hello
#16进制观察
etcdctl watch foo --hex

当应用或者etcd实例出现异常,该键的改动可能发生在出错期间,这样导致了应用客户端没能实时接收这个更新。此时需要观察指定历史版本

#示例操作
etcdctl put foo bar #revision=2
etcdctl put foo1 bar1 #revsion=3
etcdctl put foo bar_new #revsion=4
etcd put foo1 bar1_new #revsion=5

#从修订版本2开始观察键'foo'的改动
etcdctl watch -rev=2 foo
#在键foo上观察变更并返回被修改的值和上一个修订版本的值
etcdctl watch --prev-kv foo

为了防止历史版本无限制存入数据,需要对历史版本进行压缩。经过压缩,etcd删除历史修订版本,释放存储空间,并在压缩修订版本之前的数据将不可访问。

#压缩修订版本
#在压缩修订版本之前的任任何修订版本都不可访问
etcdctl compact 5


lease

租约,类似redis中的TTL。etcd中的键值对可以绑定到租约上,实现存储周期控制。在现实中实现服务的心跳,在服务启动时,将租约和服务地址绑定,并写入etcd服务器,为了保持服务状态,定时刷新租约。应用客户端可以为etcd集群里面的键授予租约。一旦租约的TTL到期,租约就会过期并且所附带的键都会被删除。


#授租约 TTL为100秒
etcdctl lease grant 100
#附加键foo到租约
etcdctl put --lease=694d1231321s23d foo10 bar

 在实际的租约操作中,建议TTL时间设置长一点,避免来不及操作而出现错误。

etcd学习笔记-客户端操作etcdctl_修订版_08

撤销lease

应用可以通过租约ID可以撤销租约,撤销的时候会删除所有附带的key

#删除租约
etcdctl lease revoke 694d1231321s23d

刷新租约

刷新TTL保持租约存储,因此租约不会过期

etcdctl lease keep alive 694d1231321s23d

查询租期

#查询租约信息
etcdctl lease timetolive 694d1231321s23d
#查询那些key绑定了租约信息
etcdctl lease timetolive --keys 694d1231321s23d

举报

相关推荐

0 条评论