etcd :备份与恢复

背景:
对于k8s集群,etcd集群的健康非常关键,我们要对etcd进行备份,以免出现问题
本文,代码,针对容器化部署的k8s (kubeadm安装方式)
备份:
脚本名: etcd-backup.sh

#!/bin/bash
#backup etcd data
set -e

etcdurl=`docker exec etcd ps -o args |grep -v ps |grep -v COMMAND |awk '{print $7}'`
health=`docker exec etcd etcdctl --endpoints ${etcdurl} cluster-health |grep 'cluster is healthy'`
if [ "$health" = "cluster is healthy" ]; then
  echo cluster is healthy
  backuptime=`date +%F-%H-%M-%S`
  etcdbackup=`docker exec -e ETCDCTL_API=3 etcd etcdctl --endpoints ${etcdurl} snapshot save snapshotdb-${backuptime} |awk '{print $4}'`
  mv ${etcdbackup}   /data/backup/etcd-backup
  echo cluster backup is done!
else
  echo cluster is not healthy
  exit 1
fi

测试
运行之后就可以在备份存储路径下面看到 新的备份文件
注意:代码默认的备份路径为:/data/backup/etcd-backup
可自行修改
在这里插入图片描述
编写定时任务
crontab -e 编辑
在这里插入图片描述
恢复:
脚本
#注意手动修改最近备份文件名为snapshot.db

#!/bin/bash
#restore etcd data
set -e

etcdurl=`docker exec etcd ps -o args |grep -v ps |grep -v COMMAND |awk '{print $7}'`
health=`docker exec etcd etcdctl --endpoints ${etcdurl} cluster-health |grep 'cluster is healthy'`
if [ "$health" = "cluster is healthy" ]; then
  echo "cluster is healthy"
  #注意手动修改最近备份文件名为snapshot.db
  docker exec etcd etcdctl  --endpoints ${etcdurl} snapshot restore snapshot.db   --data-dir=/var/lib/etcd
  echo "etcd restore is done!"
else
  echo "cluster is not healthy"
  exit 1
fi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值