Docker MySQL数据库如何用crontab定时备份?完整教程

 更新时间:2026年07月31日 09:49:39   作者:wilihelmi  
数据库崩溃不用慌!本文手把手教你用Linux的crontab定时任务自动备份Docker中的MySQL数据库,包括备份脚本编写、定时设置和恢复步骤,确保数据安全无忧

在实际生产环境中遇到需要备份数据库,防止服务器或数据库崩溃数据损坏时,无法挽救的情况,我们可以利用Linux的定时任务crontab来自动的备份数据库。

备份

前置条件

在linux CentOs7中,Docker存在mysql容器

进入sql容器, =>mysql-server —> 容器名称

docker exec -it mysql-server /bin/bash   --进入容器中

需要编写脚本文件:

  • 安装vim:
sudo apt-cache policy vim  --查看是否已安装
sudo apt-get install vim  --安装
sudo apt-cache policy vim  --再次查看,确定安装
  • vim中文乱码:
vim /root/.vimrc  --编辑文件

插入以下内容:

syntax on
set fileencodings=ucs-bom,utf-8,utf-16,gbk,big5,gb18030,latin1
set fileencoding=utf-8

需要设置定时任务:

  • 安装cron
apt install cron  --安装cron

编写脚本文件

存储结构

/home

/databashbackup

  • /sql (目录:用于存储备份sql压缩文件)
  • /backup.sh (sh:数据库备份脚本)

创建sql目录

cd /home
mkdir -p databashbackup/sql

创建backup.sh 文件

cd /home/databashbackup
touch backup.sh

编写脚本文件

vim backup.sh
#!/bin/bash

#先指定备份路径
BACKUP=/home/databasebackup/sql(备份sql文件存放地址,可自定义)

#显示当前时间
DATATIME=$(date "+%Y-%m-%d_%H%M%S")

#运行数据库的主机IP地址(执行备份的主机和运行数据库的主机可能不是同一台,如果同一台填自己IP即可)
HOST=主机Ip地址(自己填)

#登录数据库的用户名
DB_USER=用户名(自己填)

#数据库该用户名的密码
DB_PW=密码(自己填)

#备份的数据库名(如需备份所有库,可参考下面步骤直接指定库名为 all)
DATABASE=all

#开始备份数据库提示语,仅提示作用,手动执行时方便判断到了哪一步
echo "开始备份数据库${DATABASE}"

#创建备份目录(如果指定的目录不存在,则新建目录,!-d不存在则成立,&&表示左端成立则执行右端动作)
[ ! -d ${BACKUP}/${DATATIME} ] && mkdir -p "${BACKUP}/${DATATIME}"

#sql操作:备份数据库
#备份数据库(这里我按项目实际情况指定all-databases,备份所有库)
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST}  --all-databases  | gzip > ${BACKUP}/${DATATIME}/$DATATIME.sql.gz

#将文件压缩成  tar.gz
cd ${BACKUP}
tar -zcvf $DATATIME.tar.gz ${DATATIME}

#删除已备份的目录,由于压缩了文件,压缩前原有的可以删了
rm -rf  ${BACKUP}/${DATATIME}

#结束备份数据库提示语,仅提示作用(!e如果该文件存在,则成立,||左端成立,则执行右端,建议加上这个条件,否则即使上面的数据库备份不成功,下面仍然会提示备份成功,这样就没法有效判断)
[ ! -e ${DATATIME}.tar.gz ] || echo "数据库${DATABASE}备份成功!"

#(可省略)
#推送到钉钉(这个步骤可省略,我根据项目需求想通过钉钉消息,就知道是否备份数据库。!-e数据库文件存在,则执行右端的python脚本,推送消息到钉钉群,钉钉脚本需要填写2个参数,1为用户名(>为了不@我,这里填1,也可填自己实际的钉钉号,这样钉钉机器人发消息就会@我), "DTcenter数据库${DATATIME} 备份成功!"为指定钉钉机器人发送的信息)
[ ! -e ${DATATIME}.tar.gz ] || ./dingding.py 1 test "DTcenter数据库${DATATIME} 备份成功!"
  • 可以执行试试看,脚本文件有没有问题,没有问题会在sql目录下生成一个压缩文件
sh backup.sh  --运行sh脚本

设置定时任务

  • 先查看定时任务
crontab -l
  • 设置定时任务
crontab -e

插入以下内容:表示每天中午11点会执行backup.sh脚本

00 11 * * * /home/databasebackup/backup.sh

cron定时相关规则可自行学习。

恢复

查看sql文件夹中的sql压缩文件

解压.tar.gz文件

tar -zxvf 2023-07-27_091251.tar.gz

进入解压出的目录,解压.gz

gzip -d 2023-07-27_091251.sql.gz

登录sql

mysql -u root -p root

恢复数据库

source /home/databasebackup/sql/2023-07-27_091251/2023-07-27_091251.sql

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker entrypoint入口文件详解

    docker entrypoint入口文件详解

    这篇文章主要介绍了docker entrypoint入口文件详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Docker容器中Elasticsearch内存不足问题的排查与解决方案

    Docker容器中Elasticsearch内存不足问题的排查与解决方案

    在使用Docker运行Elasticsearch(ES)时,可能会遇到内存不足的问题,导致ES无法启动,以下是一次完整的排查和解决过程,需要的朋友可以参考下
    2025-08-08
  • Docker 和 Containerd 目录结构及存储机制详解

    Docker 和 Containerd 目录结构及存储机制详解

    Docker和Containerd是两种流行的容器运行时工具,它们都有自己的目录结构和存储机制,本文详细介绍了Docker和Containerd的目录结构和存储机制,并对比了它们之间的主要区别,包括存储路径、挂载点管理、配置文件和日志文件,感兴趣的朋友一起看看吧
    2025-02-02
  • 在Docker中部署Mysql并挂载配置文件的步骤详解

    在Docker中部署Mysql并挂载配置文件的步骤详解

    Docker是一种流行的容器化平台,可以简化应用程序的部署和管理,本文我们将给大家详细介绍在 Docker 中部署 MySQL 并挂载配置文件的详细步骤,需要的朋友可以参考下
    2023-09-09
  • 深入理解docker镜像的分层(小白必看)

    深入理解docker镜像的分层(小白必看)

    本文关键详细介绍了Docker镜像层次的基本原理详细说明,原文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 启动docker错误systemctl status docker.service问题及解决

    启动docker错误systemctl status docker.service问题及解决

    文章讨论了启动Docker和执行docker ps命令失败的问题,但docker -v显示成功,解决办法包括在阿里云容器镜像中找到镜像加速器或使用公共镜像地址,默认情况下,Docker使用官方地址
    2025-01-01
  • Docker部署FastDFS的实现方法

    Docker部署FastDFS的实现方法

    这篇文章主要介绍了Docker部署FastDFS的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker如何为容器指定虚拟网卡或IP

    docker如何为容器指定虚拟网卡或IP

    在Docker中,可以通过自定义网络和--network标志将容器绑定到特定的虚拟网卡或网络接口,此外,还可以使用host和macvlan等其他网络驱动,在使用这些模式时,需要注意一些注意事项
    2025-01-01
  • 使用远程Docker进行集成测试的环境搭建过程

    使用远程Docker进行集成测试的环境搭建过程

    使用docker可以帮助我们快速的搭建项目依赖环境,但是本地化的docker依赖,依然让我们的代码在测试时,不够纯粹,对其各个运行环境,都有本地docker安装的要求
    2021-07-07
  • 使用Docker Swarm 搭建Wordpress的方法

    使用Docker Swarm 搭建Wordpress的方法

    这篇文章主要介绍了使用Docker Swarm 搭建Wordpress的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论