etcd快照的恢复

etcd默认的api版本是2的版本是不支持快照功能的,我们可以通过设置环境变量来切换成3的版本

[root@etcd1 ~]# export ETCDCTL_API=3

在节点1上写入数据

[root@etcd1 ~]# etcdctl put k1 v1
OK

在其他节点查看数据同步性

[root@etcd2 ~]# export ETCDCTL_API=3
[root@etcd2 ~]# etcdctl get k1
k1
v1

可以在节点2看到节点1的数据,证明数据是同步了的

在etcd1上拍一个快照

[root@etcd1 ~]# etcdctl snapshot save snap1.db
Snapshot saved at snap1.db

把快照文件传到其他节点

[root@etcd1 ~]# scp  -p snap1.db etcd2:~
[root@etcd1 ~]# scp  -p snap1.db etcd3:~

把原先的创建的k1删除

[root@etcd1 ~]# etcdctl del k1
1
[root@etcd1 ~]# etcdctl get k1
[root@etcd1 ~]# 

所有节点关闭etcd,并删除/var/lib/etcd/里的数据

systemctl stop etcd
rm -rf /var/lib/etcd/*

在所有节点修改快照文件的所有者和所属组

chown etcd.etcd snap1.db 

在所有节点上开始恢复数据

[root@etcd1 ~]# etcdctl snapshot restore snap1.db --name etcd1  --initial-cluster etcd1=http://172.16.210.53:2380,etcd2=http://172.16.210.54:2380,etcd3=http://172.16.210.55:2380 --initial-advertise-peer-urls http://172.16.210.53:2380 --data-dir /var/lib/etcd/cluster.etcd
[root@etcd2 ~]# etcdctl snapshot restore snap1.db --name etcd2  --initial-cluster etcd1=http://172.16.210.53:2380,etcd2=http://172.16.210.54:2380,etcd3=http://172.16.210.55:2380 --initial-advertise-peer-urls http://172.16.210.54:2380 --data-dir /var/lib/etcd/cluster.etcd
[root@etcd3 ~]# etcdctl snapshot restore snap1.db --name etcd3  --initial-cluster etcd1=http://172.16.210.53:2380,etcd2=http://172.16.210.54:2380,etcd3=http://172.16.210.55:2380 --initial-advertise-peer-urls http://172.16.210.55:2380 --data-dir /var/lib/etcd/cluster.etcd

修改所有节点把/var/lib/etcd及里面内容的所有者和所属组改为etcd,然后启动etcd

 chown -R etcd.etcd /var/lib/etcd/
systemctl restart etcd

查看数据恢复情况

[root@etcd1 ~]# etcdctl get k1 ##可以看到成功恢复数据
k1
v1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容