跳到主要内容

还原

  • 还原前要注意当前磁盘容量使用率,剩余空间需要为备份前数据所用容量一倍及以上,避免还原期间导致磁盘容量占满
  • 以下目录使用 20221111184140 时间点作为说明示例,格式:年月日时分秒
  • 宿主机使用默认的数据目录 /data/hap/ (可通过 cat /etc/pdcaptain.json 或 管理器根目录下 cat service.sh | grep installDir= 查看)

准备工作

  1. 停止 HAP 服务,在管理器根目录执行 bash ./service.sh stopall(成功输出 stoped);
  2. 将备份文件 20221111184140.tar.gz 上传至数据还原服务器,如存放于 /backup/ 目录下;
  3. 移除当前环境下的原数据(安全起见,先使用 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+支持)

  1. /backup/ 目录下解压备份压缩包

    tar -zxvf 20221111184140.tar.gz
  2. 启动临时容器,并且挂载数据目录

    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
    mkdir -p /data/{logs,mysql,mongodb,storage}
    mkdir -p /data/storage/data
  3. 临时容器内启动 mysql 服务端,用于还原数据

    source /entrypoint.sh && mysqlStartup &
  4. 重建 mysql 数据库,如有重要数据需备份后在进行删除

    source /entrypoint.sh && restore mysql /data/backup/20221111184140/mysql
  5. 临时容器内启动 mongodb 服务端,用于还原数据

    source /entrypoint.sh && mongodbStartup &

    启动会自动创建索引,索引创建完成后需手动执行回车命令

  6. 重建 mongodb 数据库,如有重要数据需备份后在进行删除

    source /entrypoint.sh && restore mongodb /data/backup/20221111184140/mongodb
  7. 重建文件数据

    注意:如果新部署的微服务版本是5.2.0+(filev2:5.2.0+使用minio + file模式),需要手动启动容器内的minio服务及创建bucket
    1. 添加sc的host解析
    echo '127.0.0.1 sc' >> /etc/hosts
    1. 启动minio
    source /entrypoint.sh && minioStartup &
    1. 创建bucket
    source /entrypoint.sh && fileInit &
    1. 还原文件数据
    source /entrypoint.sh && restore file /data/backup/20221111184140/file
  8. 执行 exit,退出临时容器

  9. 清理 redis 缓存数据

    mv /data/hap/script/volume/data/redis/dump.rdb /data/hap/script/volume/data/redis/dump.rdb.bak
  10. 管理器根目录下执行 bash ./service.sh startall 重启服务

文件复制方式

  1. 将原备份的压缩包上传至当前服务器并解压到数据目录

    tar -zxvf /backup/20221111184140.tar.gz -C /data/hap/script/volume/data/
  2. 清理 redis 缓存数据

    mv /data/hap/script/volume/data/redis/dump.rdb /data/hap/script/volume/data/redis/dump.rdb.bak
  3. 管理器根目录下执行 bash ./service.sh startall 重启服务