系统备份和恢复

system backup and retrive

一、备份策略

关键备份点包括数据库、前端应用、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控制台,导出要备份的配置

descript

备注1:nacos单个配置默认备份历史版本

descript

备注2:使用nacos open api进行配置获取和恢复,参照https://nacos.io/zh-cn/docs/open-api.html

8.恢复nacos配置文件

登陆nacos控制台选择要恢复配置的命名空间导入要恢复的配置

descript

备注:nacos单个配置可以根据历史版本进行恢复操作

descript

最后修改 August 16, 2024: 补充微服务部署文档 (17fb7f3)