Docker部署MySQL 多库自动备份的方法(结构+数据完整,适配CentOS)

 更新时间:2026年04月07日 10:05:18   作者:m0_49126700  
本文介绍了在CentOS服务器上使用Docker部署MySQL实现多库备份的方法,包括创建备份脚本、添加执行权限、测试脚本、配置定时任务、测试验证、正式环境配置和备份恢复等步骤,并提供了避坑指南,感兴趣的朋友跟随小编一起看看吧

前言:本文针对Docker部署的MySQL,实现「指定多个数据库」的完整备份(含建库、建表结构+全量数据),适配CentOS服务器,结合定时任务实现自动备份,附带测试方法和避坑指南,全程实操可直接落地(已适配真实服务器环境)。

一、环境前提(已适配你的服务器)

先确认服务器Docker容器信息,避免因容器名错误导致备份失败(你的服务器实测信息):

# 查看Docker容器信息(执行命令)
docker ps

你的服务器核心容器信息(重点关注MySQL):

  • MySQL容器名:mysql(非mysql8,避坑重点!)
  • MySQL版本:8.0.28
  • 备份目录:/home/mysql-safe(已提前创建,无需额外新建)
  • 系统环境:CentOS(腾讯云服务器,含系统自带星网关进程,不影响备份)

二、核心需求

  1. 备份内容:指定多个MySQL数据库,包含「建库语句+建表结构+全量业务数据」,可直接恢复。
  2. 自动备份:先测试每分钟备份(便于验证),测试完成后改为每天凌晨2点自动备份。
  3. 自动优化:备份文件压缩存储,自动清理7天前旧备份,避免占用过多磁盘空间。
  4. 稳定可靠:不影响MySQL正常运行,适配Docker容器环境,避免出现「No such container」错误。

三、完整操作步骤(全程实操)

步骤1:创建/修改多库备份脚本

脚本路径固定为 /home/mysql-safe/mysql_backup.sh,已适配你的备份目录和容器名,只需修改2个关键参数即可使用。

# 编辑脚本(执行命令)
vi /home/mysql-safe/mysql_backup.sh

脚本内容(复制粘贴,修改密码和数据库名即可):

#!/bin/bash
# ===================== 需修改的2个关键参数 =====================
CONTAINER_NAME="mysql"          # 你的MySQL容器名(固定,无需改)
MYSQL_ROOT_PASSWORD="你的MySQL真实密码"     # 替换为你的root密码
BACKUP_DIR="/home/mysql-safe"   # 备份目录(固定,无需改)
DATABASES="db1 db2 db3"         # 多个要备份的数据库,用空格隔开
# ==============================================================
# 自动创建备份目录(防止目录不存在)
mkdir -p $BACKUP_DIR
# 备份文件命名(含时间戳,避免重复)
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/mysql_full_$DATE.sql"
# 执行多库完整备份(结构+数据,无锁备份不影响业务)
docker exec $CONTAINER_NAME mysqldump -u root -p$MYSQL_ROOT_PASSWORD \
--single-transaction \
--set-charset \
--databases $DATABASES > $BACKUP_FILE
# 压缩备份文件(节省磁盘空间)
gzip $BACKUP_FILE
# 自动清理7天前的旧备份(避免磁盘占满)
find $BACKUP_DIR -name "mysql_full_*.sql.gz" -mtime +7 -delete
# 输出备份成功日志
echo "✅ 多库完整备份完成($(date +%Y-%m-%d %H:%M:%S)):$BACKUP_FILE.gz"
}

步骤2:给脚本添加执行权限

执行命令,确保脚本可正常运行:

chmod +x /home/mysql-safe/mysql_backup.sh

步骤3:手动测试脚本(关键一步)

先手动执行脚本,验证备份是否成功,避免定时任务配置后无效果:

# 手动执行备份脚本
/home/mysql-safe/mysql_backup.sh

验证成功标准:

  1. 无报错信息,输出「✅ 多库完整备份完成」。
  2. 执行以下命令,能看到生成的 .sql.gz 压缩备份文件:
ls -lh /home/mysql-safe/

步骤4:配置定时任务(先测试,后正式)

使用crontab配置定时任务,先设置「每分钟备份」便于测试,测试无误后改为「每天凌晨2点备份」。

4.1 编辑定时任务

crontab -e

4.2 添加定时任务(当前测试版:每分钟备份)

你的服务器crontab已存在腾讯云星网关进程(无需删除,不影响),新增以下一行即可:

# 腾讯云系统自带进程(无需修改,保留)
*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
# MySQL多库自动备份(测试版:每分钟执行一次)
*/1 * * * * /home/mysql-safe/mysql_backup.sh >> /home/mysql-safe/backup.log 2>&1

说明:日志会输出到 /home/mysql-safe/backup.log,便于查看备份是否正常。

4.3 验证定时任务是否生效

# 查看当前定时任务列表
crontab -l

能看到新增的MySQL备份任务,即为生效。

四、测试验证方法

配置好每分钟备份后,等待1-2分钟,通过以下命令验证效果:

  1. 查看备份文件(每分钟新增1个压缩文件):
ls -lh /home/mysql-safe/
  1. 查看实时备份日志(确认无报错):
tail -f /home/mysql-safe/backup.log

若日志持续输出「备份完成」,且有新增备份文件,说明测试成功。

五、正式环境配置(测试完成后必做)

每分钟备份仅用于测试,测试无误后,务必修改为「每天凌晨2点备份」,避免频繁备份占用资源:

# 重新编辑定时任务
crontab -e
# 将测试版定时任务替换为正式版(每天凌晨2点执行)
0 2 * * * /home/mysql-safe/mysql_backup.sh >> /home/mysql-safe/backup.log 2>&1

六、备份恢复方法(备用)

若需恢复备份,执行以下步骤(完整恢复指定多库的结构和数据):

# 1. 解压备份文件(替换为你的备份文件名)
gzip -d /home/mysql-safe/mysql_full_20260403_xxxxxx.sql.gz
# 2. 执行恢复命令(容器名固定为mysql,替换密码和备份文件名)
docker exec -i mysql mysql -uroot -p你的密码 < /home/mysql-safe/mysql_full_20260403_xxxxxx.sql

恢复完成后,登录MySQL即可验证数据和结构是否完整。

七、避坑指南(重点!)

  • 坑1:容器名错误,报「No such container」。解决方案:确认容器名为mysql(而非mysql8),脚本中CONTAINER_NAME固定为mysql。
  • 坑2:脚本无执行权限,报「Permission denied」。解决方案:执行chmod +x /home/mysql-safe/mysql_backup.sh授权。
  • 坑3:备份目录不存在,备份失败。解决方案:脚本已添加mkdir -p $BACKUP_DIR,无需手动创建。
  • 坑4:定时任务不生效。解决方案:确认crontab配置正确,可通过crontab -l查看,重启crond服务(systemctl restart crond)。

八、总结

本文实现了Docker部署MySQL的多库自动备份,适配你的CentOS腾讯云服务器,核心亮点:

  1. 适配性强:已根据你的服务器容器信息(mysql容器名、备份目录)配置,修改密码和数据库名即可使用。
  2. 功能完整:支持多库备份、结构+数据完整、压缩存储、自动清理旧备份。
  3. 易操作:全程命令复制即用,测试+正式配置清晰,新手也能快速落地。
  4. 稳定可靠:无锁备份不影响业务,定时任务结合日志,便于排查问题。

测试完成后记得切换到正式定时任务,避免频繁备份占用服务器资源~

到此这篇关于Docker部署MySQL 多库自动备份(结构+数据完整,适配CentOS)的文章就介绍到这了,更多相关docker mysql多库自动备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker搭建SVN服务器的实现步骤

    Docker搭建SVN服务器的实现步骤

    本文主要介绍了Docker搭建SVN服务器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Docker启动容器后自动关闭问题解决

    Docker启动容器后自动关闭问题解决

    在使用Docker创建并启动mysql容器时,发现mysql容器并没有启动而是自动关闭了,本文主要介绍了Docker启动容器后自动关闭问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Docker网络配置与自定义IP容器通信

    Docker网络配置与自定义IP容器通信

    IP地址是Docker容器在网络中的唯一标识,每个Docker都会被分配一个 IP,用于网络通信,本文主要介绍了Docker网络配置与自定义IP容器通信,感兴趣的可以了解一下
    2024-03-03
  • 详解docker使用阿里云Docker镜像库加速(修订版)

    详解docker使用阿里云Docker镜像库加速(修订版)

    这篇文章主要介绍了详解docker使用阿里云Docker镜像库加速(修订版),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 深入理解docker的四种网络方式

    深入理解docker的四种网络方式

    本篇文章主要介绍了深入理解docker的四种网络方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Docker 安装 EMQX镜像的完整流程

    Docker 安装 EMQX镜像的完整流程

    本文介绍了通过Docker安装和部署EMQX6.0.0的完整流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-11-11
  • docker部署kafka的方法步骤

    docker部署kafka的方法步骤

    本文主要介绍了docker部署kafka的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Docker 清理环境操作

    Docker 清理环境操作

    这篇文章主要介绍了Docker 清理环境操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker中如何删除image(镜像)的方法

    Docker中如何删除image(镜像)的方法

    这篇文章主要介绍了Docker中如何删除image(镜像)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker容器因配置错误无法启动的恢复方法详解

    Docker容器因配置错误无法启动的恢复方法详解

    在日常使用 Docker 的过程中,可能会遇到在容器内修改了某个配置文件并保存,随后重启容器时发现容器无法正常启动的情况,下面我们来看看如何解决吧
    2026-01-01

最新评论