还原
- 还原前要注意当前磁盘容量使用率,剩余空间需要为备份前数据所用容量一倍及以上,避免还原期间导致磁盘容量占满
- 以下目录使用 20221111184140 时间点作为说明示例,格式:年月日时分秒
- 宿主机使用默认的数据目录
/data/hap/
(可通过cat /etc/pdcaptain.json
或 管理器根目录下cat service.sh | grep installDir=
查看)
准备工作
- 停止 HAP 服务,在管理器根目录执行
bash ./service.sh stopall
(成功输出 stoped); - 将备份文件
20221111184140.tar.gz
上传至数据还原服务器,如存放于/backup/
目录下; - 移除当前环境下的原数据(安全起见,先使用 mv 命令,运行没问题后可彻底删除)
time=$(date +%Y%m%d%H%M%S) && mkdir -p /backup/$time/ && mv /data/hap/script/volume/data/* /backup/$time/
dump 方式(v3.7.1+支持)
-
在
/backup/
目录下解压备份压缩包tar -zxvf 20221111184140.tar.gz
-
启动临时容器,并且挂载数据目录
- 微服务版本>=5.1.0
- 微服务版本<5.1.0
docker run -it --rm --entrypoint bash -e ENV_MYSQL_HOST="127.0.0.1" -e ENV_MYSQL_PORT="3306" -e ENV_MYSQL_USERNAME="root" -e ENV_MYSQL_PASSWORD="123456" -e ENV_MONGODB_URI="mongodb://127.0.0.1:27017" -e ENV_MONGODB_OPTIONS="" -v /data/hap/script/volume/data/:/data/ -v /backup/:/data/backup/ nocoly/hap-sc:3.0.0
docker run -it --rm --entrypoint bash -e ENV_MYSQL_HOST="127.0.0.1" -e ENV_MYSQL_PORT="3306" -e ENV_MYSQL_USERNAME="root" -e ENV_MYSQL_PASSWORD="123456" -e ENV_MONGODB_URI="mongodb://127.0.0.1:27017" -e ENV_MONGODB_OPTIONS="" -v /data/hap/script/volume/data/:/data/ -v /backup/:/data/backup/ $(docker images | grep community | awk '{print $1":"$2}' | head -n1)
mkdir -p /data/{logs,mysql,mongodb,storage}
mkdir -p /data/storage/data -
临时容器内启动 mysql 服务端,用于还原数据
source /entrypoint.sh && mysqlStartup &
-
重建 mysql 数据库,如有重要数据需备份后在进行删除
source /entrypoint.sh && restore mysql /data/backup/20221111184140/mysql
-
临时容器内启动 mongodb 服务端,用于还原数据
source /entrypoint.sh && mongodbStartup &
启动会自动创建索引,索引创建完成后需手动执行回车命令
-
重建 mongodb 数据库,如有重要数据需备份后在进行删除
source /entrypoint.sh && restore mongodb /data/backup/20221111184140/mongodb
-
重建文件数据
- 微服务版本>=5.2.0
- 微服务版本<5.2.0
注意:如果新部署的微服务版本是5.2.0+(filev2:5.2.0+使用minio + file模式),需要手动启动容器内的minio服务及创建bucket- 添加sc的host解析
echo '127.0.0.1 sc' >> /etc/hosts
- 启动minio
source /entrypoint.sh && minioStartup &
- 创建bucket
source /entrypoint.sh && fileInit &
- 还原文件数据
source /entrypoint.sh && restore file /data/backup/20221111184140/file
source /entrypoint.sh && restore file /data/backup/20221111184140/file
-
执行 exit,退出临时容器
-
清理 redis 缓存数据
mv /data/hap/script/volume/data/redis/dump.rdb /data/hap/script/volume/data/redis/dump.rdb.bak
-
管理器根目录下执行
bash ./service.sh startall
重启服务
文件复制方式
-
将原备份的压缩包上传至当前服务器并解压到数据目录
tar -zxvf /backup/20221111184140.tar.gz -C /data/hap/script/volume/data/
-
清理 redis 缓存数据
mv /data/hap/script/volume/data/redis/dump.rdb /data/hap/script/volume/data/redis/dump.rdb.bak
-
管理器根目录下执行
bash ./service.sh startall
重启服务