一、Etcd數據備份
1、備份命令
[root@localhost ~]# export ETCDCTL_API=3
[root@localhost ~]# /data/etcd-3.4.9/bin/etcdctl --endpoints=10.2.20.108:2379 snapshot save etcd-`date "+%Y-%m-%d_%H-%M-%S"`.snapshot
2、備份完成后會在當前目錄生成備份文件
[root@localhost ~]# ls
anaconda-ks.cfg etcd-2023-08-17_16-43-08.snapshot etcd-3.4.9.tar.gz
二、數據恢復
etcd集群中所有實例,可通過隨意一臺etcd的備份文件進行恢復,數據是一樣的。
備份恢復命令模版
?ETCDCTL_API=3 etcdctl snapshot restore +備份文件名 \
? --name \ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????????????#當前實例在集群中的名字 ??
? --initial-cluster ?\? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#集群中所有實例通訊地址。
? --initial-cluster-token etcd-cluster?\? ? ? ? ? ? ? ? ? #集群名字,不要與已有集群沖突
? --initial-advertise-peer-urls ? ?\? ? ? ? ? ? ? ? ? ? ? ? ?#當前實例進群通訊地址
? --data-dir /data/mydata_etcd_3.4.9?? ??? ??? ??? ??#數據恢復目錄
1、實例1恢復
$ ETCDCTL_API=3 etcdctl snapshot restore etcd-2023-08-17_16-43-08.snapshot \--name etcd-201 \--initial-cluster etcd-201=http://10.2.20.77:2380,etcd-202=http://10.2.20.88:2380,etcd-203=http://10.2.20.99:2380 \--initial-cluster-token etcd-cluster \--initial-advertise-peer-urls http://10.2.20.77:2380 \--data-dir /data/mydata_etcd_3.4.9
2、實例2恢復
$ ETCDCTL_API=3 etcdctl snapshot restore etcd-2023-08-17_16-43-08.snapshot \--name etcd-202 \--initial-cluster etcd-201=http://10.2.20.77:2380,etcd-202=http://10.2.20.88:2380,etcd-203=http://10.2.20.99:2380 \--initial-cluster-token etcd-cluster \--initial-advertise-peer-urls http://10.2.20.88:2380 \--data-dir /data/mydata_etcd_3.4.9
3、實例3恢復
$ ETCDCTL_API=3 etcdctl snapshot restore etcd-2023-08-17_16-43-08.snapshot \--name etcd-203 \--initial-cluster etcd-201=http://10.2.20.77:2380,etcd-202=http://10.2.20.88:2380,etcd-203=http://10.2.20.99:2380 \--initial-cluster-token etcd-cluster \--initial-advertise-peer-urls http://10.2.20.99:2380 \--data-dir /data/mydata_etcd_3.4.9
4、啟動恢復后的集群
systemctl daemon-reload
systemctl start etcd
5、檢查新進群
查看leader是否選舉成功[root@etcd003 ~]# ETCDCTL_API=3 /data/hxsd-etcd-3.4.9/bin/etcdctl --endpoints="http://10.2.20.77:2379,http://10.2.20.88:2379,http://10.2.20.99:2379" endpoint status --write-out=table
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| http://10.2.20.77:2379 | 52fba0ba228f3da3 | 3.4.9 | 2.1 GB | false | false | 50 | 9 | 9 | |
| http://10.2.20.88:2379 | 4907167561836ce3 | 3.4.9 | 2.1 GB | true | false | 50 | 9 | 9 | |
| http://10.2.20.99:2379 | b80cd01b4c2b7a1c | 3.4.9 | 2.1 GB | false | false | 50 | 9 | 9 | |
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+