明道云数据备份与还原管理

数据备份

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

dump 方式(v3.7.1+支持)

不停服务操作

docker exec -it $(docker ps | grep community | awk '{print $1}') bash -c 'source /entrypoint.sh && backup mysql mongodb file'

默认备份文件会生成到 /data/mingdao/script/volume/data/backup/20221111184140/ 目录下,如果需要修改备份文件存放路径,可通过在 docker-compose.yaml app 服务中新增挂载,如下:

volumes:
  - /backup/:/data/backup/

此时备份文件将生成到宿主机 /backup/ 目录下

backup/
└── 20221201193829
    ├── backupFile.log
    ├── backupMongodb.log
    ├── backupMysql.log
    ├── file
    │   ├──...
    ├── mongodb
    │   ├──...
    └── mysql
        ├── ...

在 backup 目录下,执行 tar -zcvf 20221111184140.tar.gz ./20221201193829 将 dump 出来的文件进行压缩。

文件复制方式

/data/mingdao/script/volume/data/ 目录下,mysqlmongodbstoragekafkazookeeperrediselasticsearch-8 文件夹均为需要备份数据。

停止 HAP 服务,执行以下命令完成数据打包:

mkdir -p /backup  && cd /data/mingdao/script/volume/data/ && tar -zcvf /backup/20221111184140.tar.gz ./mysql ./mongodb ./storage ./kafka ./zookeeper ./redis ./elasticsearch-8

数据还原

  • 还原前要注意当前磁盘容量使用率,剩余空间需要为备份前数据所用容量一倍及以上,避免还原期间导致磁盘容量占满
  • 以下目录使用 20221111184140 时间点作为说明示例,格式:年月日时分秒
  • 宿主机使用默认的数据目录 /data/mingdao/ (可通过 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/mingdao/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/mingdao/script/volume/data/:/data/ -v /backup/:/data/backup/ registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-sc:3.1.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

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/mingdao/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

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

2、启动minio

source /entrypoint.sh && minioStartup &

3、创建bucket

source /entrypoint.sh && fileInit &

4、还原文件数据

source /entrypoint.sh && restore file /data/backup/20221111184140/file
source /entrypoint.sh && restore file /data/backup/20221111184140/file

8、执行 exit,退出临时容器

9、清理 redis 缓存数据

mv /data/mingdao/script/volume/data/redis/dump.rdb /data/mingdao/script/volume/data/redis/dump.rdb.bak

10、管理器根目录下执行 bash ./service.sh startall 重启服务

文件复制方式

  1. 将原备份的压缩包上传至当前服务器并解压到数据目录
tar -zxvf /backup/20221111184140.tar.gz -C /data/mingdao/script/volume/data/

2、清理 redis 缓存数据

mv /data/mingdao/script/volume/data/redis/dump.rdb /data/mingdao/script/volume/data/redis/dump.rdb.bak

3、管理器根目录下执行 bash ./service.sh startall 重启服务

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容