该文命令用于etcd3
一、常用命令
1、查看etcd版本
# etcdctl version
etcdctl version: 3.4.15
API version: 3.4
2、插入数据
# etcdctl --endpoints="IP:2379" put key value
3、查询数据
(1)按key值查询
# etcdctl --endpoints="IP:2379" get key
(2)查询所有key
# etcdctl --endpoints="IP:2379" --from-key ""
(3)不显示key只显示values
# etcdctl --endpoints="IP:2379" get --print-value-only key
(4)按key前缀查找
# etcdctl --endpoints="IP:2379" get --prefix key前缀
4、删除数据
(1)删除key
# etcdctl --endpoints="IP:2379" del key
(2)删除key name12时并返回被删除的键值对
# etcdctl --endpoints="IP:2379" del --prev-kv key
(3)删除指定前缀的key
# etcdctl --endpoints="IP:2379" del --prev-kv --prefix key的前缀
(4)删除所有数据
# etcdctl --endpoints="IP:2379" del --prefix ""
5、更新数据
直接put即可更新
二、备份与还原
(1)对于 API 2 备份与恢复方法
etcd的数据默认会存放在我们的命令工作目录中,我们发现数据所在的目录,会被分为两个文件夹中:
snap: 存放快照数据,etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
wal: 存放预写式日志,最大的作用是记录了整个数据变化的全部历程。在etcd中,所有数据的修改在提交前,都要先写入到WAL中。
# etcdctl backup --data-dir /home/etcd/ --backup-dir /home/etcd_backup
# etcd -data-dir=/home/etcd_backup/ -force-new-cluster
恢复时会覆盖 snapshot 的元数据(member ID 和 cluster ID),所以需要启动一个新的集群。
(2)对于 API 3 备份与恢复方法
a.备份数据:
# etcdctl --endpoints localhost:2379 snapshot save snapshot.db
b.查看快照信息
# etcdctl --endpoints localhost:2379 snapshot status snapshot.db --write-out=table
c.恢复数据:
查看配置
# cat /usr/lib/systemd/system/etcd.service
[Unit]
Description=etcd server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
WorkingDirectory=/data/etcddata/
EnvironmentFile=-/data/etcd/nodefile.yml
ExecStart=/data/etcd/etcd --config-file=/data/etcd/nodefile.yml
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
# cat /data/etcd/nodefile.yml
name: node1
data-dir: /data/etcd/node1
listen-client-urls: 'http://10.153.167.4:42379'
advertise-client-urls: 'http://10.153.167.4:42379'
listen-peer-urls: 'http://10.153.167.4:42380'
initial-advertise-peer-urls: 'http://10.153.167.4:42380'
initial-cluster: node1=http://10.153.167.4:42380,node2=http://10.153.167.5:42380,node3=http://10.153.167.10:42380
initial-cluster-token: etcd-cluster-1
initial-cluster-state: new
停止etcd(其他设备同理操作)
# systemctl stop etcd
备份数据目录
# mv /data/etcd/node1 /data/etcd/node1.bak
将备份数据导入
# ETCDCTL_API=3 /data/etcd/etcdctl snapshot restore /home/xtjk10/etcd-data-20210730.db \
--name node1 \
--initial-advertise-peer-urls http://10.3.89.1:42379 \
--initial-cluster-token test \
--initial-cluster 'node1=http://10.3.89.1:42379,node2=http://10.3.89.2:42379,node3=http://10.3.45.5:42379,node4=http://10.3.45.6:42379,node5=http://10.3.89.5:42379' \
--data-dir=/data/etcd/node1
重新启动etcd
# systemctl restart etcd
验证集群状态
# etcdctl --endpoints='10.3.89.1:42379,10.3.89.2:42379,10.3.45.5:42379,10.3.45.6:42379,10.3.89.5:42379' -w table endpoint status
三、授权及用户认证
https://blog.csdn.net/liao__ran/article/details/117792662