TOC
说明
本文主要收集 etcd 遇到的一些常见问题,欢迎对本文进行投稿你认为好的场景或问题.
备份恢复
在我的研究场景中,经常需要重建环境,因此数据的备份恢复都是必须的.下面是一个用于备份和恢复的简单脚本,我使用 staticpod 的方式定时备份 Etcd 数据,以及使用 initContainer 的方式来恢复数据.
#!/bin/bash
#set -o errexit
#set -o nounset
#set -o pipefail
export ETCD_ENDPOINTS=${ETCD_ENDPOINTS:-"http://127.0.0.1:2379"}
export BACKUP_ORAS_IMG=${BACKUP_ORAS_IMG:-"ghcr.io/liangyuanpeng/backup"}
export BACKUP_ORAS_TAG=${BACKUP_ORAS_TAG:-"data"}
export BACKUP_SLEEP=${BACKUP_SLEEP:-"30m"}
export ORAS_USERNAME=${ORAS_USERNAME:-""}
export ORAS_PASSWORD=${ORAS_PASSWORD:-""}
if [ -n "$ORAS_USERNAME" ];then
if [ -n "$ORAS_PASSWORD" ];then
oras login ghcr.io -u$ORAS_USERNAME -p$ORAS_PASSWORD
fi
fi
export CTIME=`date +"%Y%m%d%H%M"`
export CTIMEH=`date +"%Y%m%d%H"`
echo "begin save snapshot for $ETCD_ENDPOINTS..."
etcdctl --endpoints $ETCD_ENDPOINTS snapshot save data.db
echo "begin push data to $BACKUP_ORAS_IMG:$BACKUP_ORAS_TAG..."
oras push $BACKUP_ORAS_IMG:$BACKUP_ORAS_TAG,$BACKUP_ORAS_TAG-$CTIME,$BACKUP_ORAS_TAG-$CTIMEH data.db
echo "current time:" `date +"%Y%m%d%H%M"`
ls -allh data.db
echo "begin sleep with $BACKUP_SLEEP..."
sleep $BACKUP_SLEEP
上述是一个用于备份 Etcd 单节点数据的 shell 脚本,通过 etcdctl 命令导出数据后使用 oras 将数据以容器镜像的方式存储到容器镜像仓库当中.
微信公众号
扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。