etcdctl 使用说明
认证与权限管理
|
命令 |
功能描述 |
常用参数/示例 |
|---|---|---|
|
|
启用集群的身份认证功能 |
|
|
|
禁用集群的身份认证功能 |
|
|
|
创建新用户 |
|
|
|
修改用户密码 |
|
|
|
为用户授予角色 |
|
|
|
撤销用户的角色 |
|
|
|
获取用户的详细信息(含角色) |
|
|
|
列出所有用户 |
|
|
|
删除用户 |
|
|
|
创建新角色 |
|
|
|
为角色授予针对键或键范围的权限 |
|
|
|
撤销角色对特定键的权限 |
|
|
|
获取角色的详细信息(含权限) |
|
|
|
列出所有角色 |
|
|
|
删除角色 |
|
键值对操作 (KV Operations)
|
命令 |
功能描述 |
常用参数/示例 |
|---|---|---|
|
|
写入或更新一个键值对 |
|
|
|
获取一个键或一个范围的值 |
|
|
|
删除一个键或一个范围 |
|
|
|
监听一个键或一个范围的变更 |
|
|
|
在单个事务中执行多个操作(支持条件判断) |
从标准输入或文件读取事务内容,用于复杂原子操作。 |
租约与锁 (Leases & Locks)
|
命令 |
功能描述 |
常用参数/示例 |
|---|---|---|
|
|
创建一个具有生存时间(TTL)的租约 |
|
|
|
周期性保活一个租约,防止其过期 |
|
|
|
撤销一个租约,其关联的所有键将被删除 |
|
|
|
获取租约的剩余TTL信息 |
|
|
|
列出所有活跃的租约 |
|
|
|
获取一个具名的分布式锁 |
|
|
|
观察并参与一个领导者选举 |
|
集群成员管理 (Cluster Membership)
|
命令 |
功能描述 |
常用参数/示例 |
|---|---|---|
|
|
列出集群中的所有成员及其信息 |
|
|
|
向集群中添加一个新成员 |
|
|
|
从集群中移除一个成员 |
|
|
|
更新一个成员的 Peer URL 地址 |
|
|
|
将一个非投票成员提升为投票成员 |
|
|
|
将领导权转移给指定成员(用于维护) |
|
监控、健康检查与运维 (Monitoring, Health & Maintenance)
|
命令 |
功能描述 |
常用参数/示例 |
|---|---|---|
|
|
检查指定端点的健康状态 |
|
|
|
获取指定端点的详细状态(DB大小、领导者、版本等) |
|
|
|
打印每个端点的KV历史哈希,用于一致性校验 |
|
|
|
检查etcd集群的性能(负载测试) |
|
|
|
预估不同数据模型下的内存占用量 |
|
|
|
列出所有活跃的警报(如空间不足NOSPACE) |
|
|
|
解除所有警报 |
|
|
|
对指定端点上的 etcd 成员存储进行碎片整理 –cluster[=false] 使用集群成员列表中的所有端点 |
|
|
|
压缩etcd的事件历史,回收存储空间 |
|
|
|
创建集群的快照备份到文件 |
|
|
|
检查快照文件的详细信息 |
|
|
|
从快照文件恢复一个新集群 |
|
|
|
将本地集群的键镜像到另一个集群 |
|
|
|
将v2格式的存储迁移到v3 (mvcc) 存储 |
用于旧版本迁移。 |
其他
|
命令 |
功能描述 |
|---|---|
|
|
打印etcdctl和API的版本信息 3.4.13 |
|
|
查看帮助信息 |
关键全局选项 (OPTIONS) 详解
|
选项 |
说明 |
示例与应用场景 |
|---|---|---|
|
连接与发现选项 |
||
|
|
指定要连接的etcd集群端点,用逗号分隔。最常用。 |
|
|
|
使用DNS SRV记录进行服务发现。 |
|
|
安全与认证选项 |
||
|
|
用于验证服务器的CA证书文件路径。 |
|
|
|
客户端使用的TLS证书文件路径。 |
|
|
|
客户端使用的TLS私钥文件路径。 |
|
|
|
指定用户名和密码(格式 |
|
|
|
单独指定密码(通常与 |
|
|
|
警告:跳过服务器证书验证,仅用于测试。 |
|
|
|
禁用传输层安全,不推荐生产使用。 |
|
|
输出与格式选项 |
||
|
|
指定输出格式,极大影响可读性。 |
|
|
|
以十六进制格式显示键和值。 |
|
|
超时与性能选项 |
||
|
|
建立连接的超时时间。 |
|
|
|
命令执行的超时时间(不包含连接时间)。 |
|
|
|
客户端ping服务器的间隔。 |
|
|
|
等待keepalive响应的超时时间。 |
|
|
其他选项 |
||
|
|
启用客户端调试日志。 |
|
日常运维检查清单
# 1. 检查集群健康
etcdctl endpoint health
# 2. 查看成员和领导者状态
etcdctl member list -w table
etcdctl endpoint status -w table
# 3. 检查是否有告警
etcdctl alarm list
# 4. 查看数据库大小
etcdctl endpoint status -w fields | grep dbSize
备份与恢复
# 备份(从任一健康节点执行)
etcdctl snapshot save /var/backup/etcd-snapshot-$(date +%Y%m%d).db
# 查看备份状态
etcdctl snapshot status /var/backup/etcd-snapshot-20231027.db -w table
# 恢复(到一个全新的数据目录)
etcdctl snapshot restore /var/backup/etcd-snapshot-20231027.db \
--name infra1 \
--initial-cluster infra1=https://new.ip.1:2380 \
--initial-advertise-peer-urls https://new.ip.1:2380 \
--data-dir /var/lib/etcd-restored
键空间操作技巧
# 使用前缀进行批量操作
etcdctl get /services/ --prefix --keys-only
# 在watch时从某个历史版本开始监听
etcdctl watch /key --rev=1000
# 将键值对绑定到租约实现自动过期
lease_id=$(etcdctl lease grant 300 | awk '{print $2}')
etcdctl put /temp/session "data" --lease=$lease_id

浙公网安备 33010602011771号