Skip to content

etcd V3 API版本数据备份与恢复

etcd集群备份

root@k8s-etcd1:~# mkdir  /data 
root@k8s-etcd1:~# cd /data/
root@k8s-etcd1:/data# etcdctl  snapshot save  snapshot.db

etcd集群恢复

root@k8s-etcd1:/data# etcdutl  snapshot status snapshot.db 
root@k8s-etcd1:/data# etcdutl snapshot  restore ./snapshot.db --data-dir=/var/lib/etcd-data #将数据恢复到一个空的目录中

单机备份数据

root@k8s-etcd1:~# mkdir /data/etcd-backup-dir/ -p
root@k8s-etcd1:~# cat  etcd-backup.sh 
#!/bin/bash
source /etc/profile
DATE=`date +%Y-%m-%d_%H-%M-%S`	 #获取时间戳
ETCDCTL_API=3 /usr/local/bin/etcdctl  snapshot save  /data/etcd-backup-dir/etcd-snapshot-${DATE}.db		#生成带时间戳的备份

恢复测试

#使用ezctl备份集群
root@k8s-deploy:/etc/kubeasz# ./ezctl backup  k8s-cluster1
root@k8s-deploy:/etc/kubeasz# kubectl  get deployment -n myserver
#删除myserver-nginx-deployment
root@k8s-deploy:/etc/kubeasz# kubectl  delete deployment -n myserver myserver-nginx-deployment
##注意,在恢复数据期间API server不可用,必须在业务低峰期操作或者是在其它紧急场景:
root@k8s-deploy:/etc/kubeasz# grep  db_to_restore ./roles/ -R #选择恢复的文件
./roles/cluster-restore/defaults/main.yml:db_to_restore: "snapshot.db"
./roles/cluster-restore/tasks/main.yml:    src: "{{ cluster_dir }}/backup/{{ db_to_restore }}
root@k8s-master1:/etc/kubeasz# ./ezctl restore k8s-cluster1 #v3.3.1