Docker安装的Rancher备份和还原

简介

Docker安装的Rancher,默认数据文件保存在容器的/var/lib/rancher路径下。可以将此目录挂载到主机主机的某个位置,以保证数据不会丢失。
所以我们只需要备份/var/lib/rancher的数据即可

备份

在主机创建/data/backup目录,新建backup.sh文件,内容如下:

#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M)
# rancher标签
TAG="v2.3.2"
echo "1.拷贝容器内数据"
IMAGE_ID=`docker ps |grep 8443->443 |awk '{print $1}'`
#cp -rf /data/rancher /data/backup
docker cp $IMAGE_ID:/var/lib/rancher /data/backup
echo "2.打包数据"
cd /data/backup
tar -zcf rancher-backup-$TAG-$DATE.tar.gz rancher --remove-files
echo "3.完成打包"

使用corntab -e令新建一个备份定时任务,如下:

59 23 * * * /data/backup/backup.sh

还原

在/data/backup目录下,新建restore.sh文件,文件内容如下:

# !/bin/bash

# 备份文件名称
FILE="rancher-backup-v2.3.2-2022-11-15-14-31.tar.gz"

# 停止服务
echo '1. stop rancher service'
IMAGE_ID=`docker ps | grep 8443->443 | awk '{print $1}'`
docker stop $IMAGE_ID
sleep 2
# 解压指定的备份文件
tar -zxvf $FILE
# 还原服务
echo '2.recovery rancher data'
docker cp /data/backup/rancher/management-state $IMAGE_ID:/var/lib/rancher
docker cp /data/backup/rancher/k3s $IMAGE_ID:/var/lib/rancher
sleep 2
# 启动服务
echo '3.start rancher service'
docker start $IMAGE_ID
sleep 2
# 重启服务
docker restart $IMAGE_ID

注:删除集群操作不能用此方法进行备份和恢复,因为/etcd目录下会残留原集群信息,etcd还会去找旧的集群,导致集群不能就绪

你可能感兴趣的:(docker,rancher,运维)