系统备份和恢复
2 分钟阅读
一、备份策略
关键备份点包括数据库、前端应用、Nacos配置文件,备份留存期为1周,备份频率为每天。
二、备份内容
1.结构化数据
类别 | 备注 |
---|---|
致远V8数据库数据 | 存储在MySQL数据库里的数据。 |
2.非结构化数据
类别 | 备注 |
---|---|
应用配置文件 | 存储在[V8产品目录]/base/conf下的数据 |
前端应用 | 前端多版本静态资源 |
后端应用 | 后端镜像、jar包、war包等资源 |
三、备份和恢复操作方法
1.数据库备份
评估数据量确保备份服务器磁盘资源充足,安装对应数据库客户端命令,例如安装mysql客户端执行 yum -y install mysql
编辑backup.sh 添加如下内容,执行该脚本实现手动备份mysql数据库数据
# vim backup.sh
#!/bin/sh
#0.0.0.0 替换为实际数据库地址
HOSTNAME="0.0.0.0"
#3306替换为实际数据库端口
PORT="3306"
#root替换为实际数据库用户名(读写权限)
username="root"
#root替换为实际数据库密码
password="root"
#备份时间戳
DATE=`date "+%Y%m%d%H%M%S"`
#备份目录(/data/dbback可以自定义)
DIR="/data/dbback/"
#要备份的数据库名称("ctp_user portal"替换为为要备份的数据库实际名称)
databasenames="ctp_user portal"
echo $databasenames
#执行备份
[ -d ${DIR} ] || mkdir -p ${DIR}/${DATE}
for databasename in $databasenames
do
mysqldump -h${HOSTNAME} -P${PORT} -u${username} -p${password} --set-gtid-purged=OFF $databasename > ${DIR}/${DATE}/${databasename}.sql
done
echo "$databasenames数据库备份完成"
添加计划任务实现定时备份mysql数据库数据,例如每天22点备份数据
# crontab -e
#每天22点备份数据
* 22 * */1 * /脚本路径/backup.sh
2.恢复数据库备份
编辑recover.sh 添加如下内容,执行该脚本实现mysql数据库恢复数据
# vim recover.sh
#!/bin/sh
#0.0.0.0 替换为实际数据库地址
HOSTNAME="0.0.0.0"
#3306替换为实际数据库端口
PORT="3306"
#root替换为实际数据库用户名(读写权限)
username="root"
#root替换为实际数据库密码
password="root"
#备份目录(替换为实际备份路径)
DIR="/data/dbback/20240226/"
#要恢复的数据库名称("ctp_user portal"替换为为要恢复的数据库实际名称)
tgdbs="ctp_user portal"
echo $databasenames
#执行备份
for databasename in $databasenames
do
echo $databasename
mysql -h${HOSTNAME} -P${PORT} -u${username} -p${password} -e "CREATE DATABASE IF NOT EXISTS $databasename default charset utf8mb4;"
mysql -h${HOSTNAME} -P${PORT} -u${username} -p${password} $tg_db < $DIR/${databasename}.sql
done
echo "$databasenames数据库恢复完成"
3.前端应用备份
根据前端静态资源部署模式分别使用shell命令或者客户端命令进行备份,非os服务器中需下载安装客户端命令,例如oss客户端命令程序
- 部署在阿里云oss中
ossutil64 cp -rf oss://实际部署桶名称/应用名称 oss://备份桶名称/应用名称
- 部署在华为云obs中
obsutil cp -r -f -flat obs://实际部署桶名称/应用名称 obs://备份桶名称/应用名称
- 部署在自建minio中
mc cp -r local/yljr-prd-public/应用名称/ /备份目录位置/应用名称/
- 部署在os服务器中
cp -rf /实际部署路径/应用名称/ /备份目录位置/应用名称/
4.恢复前端备份
根据前端静态资源部署模式分别使用shell命令或者客户端命令进行恢复,非os服务器中需下载安装客户端命令,例如oss客户端命令程序
- 部署在阿里云oss中
ossutil64 cp -rf oss://备份桶名称/应用名称 oss://实际部署桶名称/应用名称
- 部署在华为云obs中
obsutil cp -r -f -flat obs://备份桶名称/应用名称 obs://实际部署桶名称/应用名称
- 部署在自建minio中
mc cp -r /备份目录位置/应用名称/ /部署位置/应用名称/
- 部署在os服务器中
cp -rf /备份目录位置/应用名称/ /实际部署路径/应用名称/
5.后端应用备份
- k8s容器
设置 Deployment 保留的历史版本数量(默认保留10个版本):<number>为保留版本数量
kubectl rollout history deployment/<deployment-name> --revision-limit=<number>
- jar包war包模式
cp -rf /部署路径/应用名称.jar /备份路径/应用名称.备份版本.jar
cp -rf /部署路径/应用名称.war /备份路径/应用名称.备份版本.war
6.恢复后端备份
- k8s容器恢复
查看 Deployment 的历史版本:
kubectl -n <namespace-name> rollout history deployment/<deployment-name>
回滚到指定版本
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number>
例如 回滚到第二个历史版本
kubectl rollout undo deployment/<deployment-name> --to-revision=<revision-number>
- jar包war包模式恢复
cp -rf /备份路径/应用名称.备份版本.jar /部署路径/应用名称.jar
cp -rf /备份路径/应用名称.备份版本.war /部署路径/应用名称.war
重启应用重新加载应用包,例如部署在tomcat中,重启tomcat重新加载应用war包
7.备份nacos配置文件
登陆nacos控制台,导出要备份的配置
备注1:nacos单个配置默认备份历史版本
备注2:使用nacos open api进行配置获取和恢复,参照https://nacos.io/zh-cn/docs/open-api.html
8.恢复nacos配置文件
登陆nacos控制台选择要恢复配置的命名空间导入要恢复的配置
备注:nacos单个配置可以根据历史版本进行恢复操作