Docker下Mysql8数据备份与恢复

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 通过以上步骤,您可以在Docker环境下高效地备份和恢复MySQL 8数据库。备份数据时,使用 `mysqldump`工具生成逻辑备份文件,并存储到指定目录;恢复数据时,使用 `mysql`工具从备份文件中读取数据并恢复到数据库。自动化脚本和定时任务的配置可以进一步简化备份和恢复的管理过程。

Docker下MySQL 8 数据备份与恢复

在Docker中管理MySQL数据库时,备份和恢复是维护数据库完整性和安全性的重要任务。本文将介绍如何在Docker环境下进行MySQL 8的备份与恢复,包括详细的命令和操作解释。

一、MySQL 8 数据备份

备份MySQL数据库的主要方法是使用 mysqldump工具,该工具可以生成数据库的逻辑备份。以下是备份的详细步骤。

1.1 创建备份目录

首先,创建一个用于存储备份文件的目录:

mkdir -p /path/to/backup
​

1.2 使用 mysqldump 备份数据库

假设你已经有一个运行中的MySQL容器,容器名称为 mysql_container。可以通过以下命令备份数据库:

docker exec mysql_container \
  mysqldump -u root -p[root_password] [database_name] > /path/to/backup/backup.sql
​

解释:

  • docker exec:在运行中的容器内执行命令。
  • mysql_container:MySQL容器的名称。
  • mysqldump -u root -p[root_password] [database_name]:使用 mysqldump工具备份数据库,-u指定用户,-p后跟密码,[database_name]是要备份的数据库名。
  • > /path/to/backup/backup.sql:将备份输出到指定文件。

1.3 备份所有数据库

如果需要备份所有数据库,可以使用以下命令:

docker exec mysql_container \
  mysqldump -u root -p[root_password] --all-databases > /path/to/backup/all_databases_backup.sql
​

解释:

  • --all-databases:备份MySQL实例中的所有数据库。

1.4 备份特定表

如果只需要备份特定表,可以使用以下命令:

docker exec mysql_container \
  mysqldump -u root -p[root_password] [database_name] [table_name] > /path/to/backup/table_backup.sql
​

解释:

  • [table_name]:要备份的表名。

二、MySQL 8 数据恢复

恢复MySQL数据库的主要方法是使用 mysql工具,该工具可以从备份文件中恢复数据库。以下是恢复的详细步骤。

2.1 使用 mysql 恢复数据库

假设你已经有一个运行中的MySQL容器,容器名称为 mysql_container。可以通过以下命令恢复数据库:

docker exec -i mysql_container \
  mysql -u root -p[root_password] [database_name] < /path/to/backup/backup.sql
​

解释:

  • docker exec -i:在运行中的容器内执行命令,并从标准输入读取数据。
  • mysql_container:MySQL容器的名称。
  • mysql -u root -p[root_password] [database_name]:使用 mysql工具恢复数据库,-u指定用户,-p后跟密码,[database_name]是要恢复的数据库名。
  • < /path/to/backup/backup.sql:从指定备份文件读取数据并恢复。

2.2 恢复所有数据库

如果需要恢复所有数据库,可以使用以下命令:

docker exec -i mysql_container \
  mysql -u root -p[root_password] < /path/to/backup/all_databases_backup.sql
​

解释:

  • < /path/to/backup/all_databases_backup.sql:从指定的所有数据库备份文件中读取数据并恢复。

2.3 恢复特定表

如果只需要恢复特定表,可以使用以下命令:

docker exec -i mysql_container \
  mysql -u root -p[root_password] [database_name] < /path/to/backup/table_backup.sql
​

解释:

  • < /path/to/backup/table_backup.sql:从指定的表备份文件中读取数据并恢复。

三、自动化备份与恢复

为了简化备份与恢复操作,可以编写脚本并使用 cron等定时任务工具自动化备份与恢复过程。

3.1 自动化备份脚本

创建一个自动化备份脚本 backup.sh

#!/bin/bash

BACKUP_DIR=/path/to/backup
DATE=$(date +%F)
CONTAINER_NAME=mysql_container
DATABASE_NAME=database_name
ROOT_PASSWORD=root_password

docker exec $CONTAINER_NAME \
  mysqldump -u root -p$ROOT_PASSWORD $DATABASE_NAME > $BACKUP_DIR/backup_$DATE.sql

# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -exec rm {} ;
​

3.2 配置定时任务

使用 crontab配置定时任务:

crontab -e
​

添加以下行每天凌晨2点执行备份:

0 2 * * * /path/to/backup.sh
​

3.3 自动化恢复脚本

创建一个自动化恢复脚本 restore.sh

#!/bin/bash

BACKUP_FILE=/path/to/backup/backup.sql
CONTAINER_NAME=mysql_container
DATABASE_NAME=database_name
ROOT_PASSWORD=root_password

docker exec -i $CONTAINER_NAME \
  mysql -u root -p$ROOT_PASSWORD $DATABASE_NAME < $BACKUP_FILE
​

总结

通过以上步骤,您可以在Docker环境下高效地备份和恢复MySQL 8数据库。备份数据时,使用 mysqldump工具生成逻辑备份文件,并存储到指定目录;恢复数据时,使用 mysql工具从备份文件中读取数据并恢复到数据库。自动化脚本和定时任务的配置可以进一步简化备份和恢复的管理过程。

思维导图

- Docker下MySQL 8 数据备份与恢复
  - 数据备份
    - 创建备份目录
    - 使用 mysqldump 备份数据库
      - 备份单个数据库
      - 备份所有数据库
      - 备份特定表
  - 数据恢复
    - 使用 mysql 恢复数据库
      - 恢复单个数据库
      - 恢复所有数据库
      - 恢复特定表
  - 自动化备份与恢复
    - 自动化备份脚本
    - 配置定时任务
    - 自动化恢复脚本
  - 总结
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
关系型数据库 MySQL Docker
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
docker pull mysql:8.0.26提示Error response from daemon: Get “https://registry-1.docker.io/v2/“: EOF错误
|
10天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
2天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
61 42
|
29天前
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
|
2月前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
116 14
|
1月前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
105 7
|
2月前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
126 24
|
9月前
|
关系型数据库 MySQL 数据库
使用 Docker 安装 MySQL 8
使用 Docker 安装 MySQL 8
1882 4
|
9月前
|
关系型数据库 MySQL 数据安全/隐私保护
Docker 安装 MySQL5.7 和 MySQL8
Docker 安装 MySQL5.7 和 MySQL8
453 0
|
9月前
|
存储 关系型数据库 MySQL
docker安装mysql8忽略大小写
docker安装mysql8忽略大小写
956 0

热门文章

最新文章