etcd的快照和恢复

关注老段工作室公众号,文章早知道
etcd的快照和恢复

简介

etcd是一种高可用的、分布式数据库,以键值对的方式存储数据。在kubernetes环境里,用户在master所做的一切比如创建pod、删除pod等操作都记录在etcd里,所安装的flannel或者calico网络的配置也保存在etcd数据库里。

安装并配置etcd

练习环境
file
每台节点上安装etcd:

[root@vms8X ~]# yum install etcd  -y

修改/etc/etcd/etcd.conf内容如下:

[root@vms8X ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.26.8X:2380,http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.26.8X:2379,http://localhost:2379"
ETCD_NAME="etcd-8X"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.26.8X:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379,http://192.168.26.8X:2379"
ETCD_INITIAL_CLUSTER="etcd-81=http://192.168.26.81:2380,etcd-82=http://192.168.26.82:2380,etcd-83=http://192.168.26.83:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
[root@vms8X ~]#

在所有节点上启动etcd:

[root@vms8X ~]# systemctl start etcd
[root@vms8X ~]#

测试同步性
在所有节点上执行

export ETCDCTL_API=3

在vms81上写测试数据:

[root@vms81 ~]# etcdctl put k1 vv1
OK
[root@vms81 ~]#

在其他节点测试同步性:

[root@vms82 ~]# etcdctl get k1
k1
vv1
[root@vms82 ~]#

可以看到在vms81上写的数据了。

做快照

在任何一台主机上对etcd做快照,这里选择vms81

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

此快照里包含了刚刚写的数据k1=vv1,然后把快照文件到所有节点

[root@vms81 ~]# scp -p snap1.db vms82:~
[root@vms81 ~]# scp -p snap1.db vms83:~
[root@vms81 ~]#

恢复数据

在任意节点上删除刚刚创建的数据,这里在vms81上操作:

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

下面开始恢复数据:
在所有节点上关闭etcd,并删除/var/lib/etcd/里所有数据:

[root@vms8X ~]# systemctl stop etcd
[root@vms8X ~]# rm -rf /var/lib/etcd/*
[root@vms8X ~]#

在所有节点上把快照文件/root/snap1.db的所有者和所属组设置为etcd:

[root@vms8X ~]# chown etcd.etcd snap1.db 
[root@vms8X ~]#

在每台节点上开始恢复数据:

[root@vms8X ~]# etcdctl snapshot restore snap1.db --name etcd-8X  --initial-cluster etcd-81=http://192.168.26.81:2380,etcd-82=http://192.168.26.82:2380,etcd-83=http://192.168.26.83:2380 --initial-advertise-peer-urls http://192.168.26.8X:2380 --data-dir /var/lib/etcd/cluster.etcd
...输出...
[root@vms8X ~]# 

所有节点把/var/lib/etcd及里面内容的所有者和所属组改为etcd:
[root@vms8X ~]# chown -R etcd.etcd /var/lib/etcd/
然后分别启动etcd:
[root@vms8X ~]# systemctl start etcd

测试数据恢复情况:

[root@vms83 ~]# etcdctl get k1
k1
vv1
[root@vms83 ~]#

已经恢复出来了。

推广有奖

etcd的快照和恢复

相关新闻

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

                                                                                                                                    RHCE9学习指南连载,点击阅读