3.5 数据备份和恢复

实验目标
掌握Docker容器数据备份与恢复的核心技术,学习使用临时容器进行数据迁移,理解容器数据持久化的重要性
前置条件
  • 已完成上一实验中WordPress博客和MySQL数据库容器的部署
  • 确保Docker服务正常运行
  • 拥有足够的磁盘空间用于备份文件存储

在开始备份前,请确认服务运行状态:

  • 访问博客后台:http://服务器IP:端口号/admin
  • 使用管理员账号登录,确认数据完整性
  • 记录当前文章数量和配置信息,便于后续验证
操作提醒
确认服务正常后,请停止WordPress和MySQL容器,避免备份过程中数据不一致

使用Alpine Linux临时容器执行备份操作:

bash

docker run --rm \
  -v wordpress_volume:/source:ro \
  -v $(pwd):/backup \
  alpine tar -czf /backup/wordpress-学号后两位.tar.gz -C /source .
技术详解

命令参数说明:

  • --rm:容器执行完毕后自动删除,避免残留
  • -v wordpress_volume:/source:ro:以只读模式挂载待备份的数据卷
  • -v $(pwd):/backup:将当前目录映射到容器内,用于存储备份文件
  • alpine:使用轻量级Linux发行版作为备份工具载体

tar命令详解:

  • -c (create):创建新的gz归档文件
  • -z (gzip):使用gzip算法压缩,减少存储空间
  • -f (file):指定输出文件路径
  • -C (change-directory):切换到指定目录后执行打包
  • .:表示打包当前目录下的所有内容

执行流程:

  1. Alpine容器启动并挂载相关目录
  2. 进入/source目录(数据卷挂载点)
  3. 将所有文件打包压缩
  4. 输出到宿主机当前目录
  5. 容器自动销毁

使用相同方法备份数据库数据,备份文件名:mysql-学号后两位.tar.gz

  • 首先确定两个文件存在
  • 再使用 tar -tf 文件名 查看备份文件中是否存在数据
协作环节
  1. 与指定同学交换备份文件
  2. 将接收到的文件上传至服务器
  3. 删除自己的备份文件,仅保留同学的文件

停止并删除原有容器

bash

# 创建数据恢复目录
mkdir  /root/mysql
mkdir  /root/wordpress

# 解压备份文件到指定目录
tar -xzf 备份文件名 -C /root/mysql
tar -xzf 备份文件名 -C /root/wordpress

bash

docker run -d \
  --name mysql \
  --network 自定义网桥名 \
  -v /root/mysql:/var/lib/mysql \
  mysql:8.3

bash

docker run -d \
  --name wordpress \
  --network 自定义网桥名 \
  -p 80:80 \
  -v /root/wordpress:/var/www/html \
  wordpress

检查容器状态

验证清单
  • 访问博客首页,确认页面正常显示
  • 登录管理后台,验证用户账号可用
  • 检查文章列表,确认内容完整

博客数据已经恢复

相关内容