【Linux学习笔记】Docker下的mysql定时备份

Docker下的mysql定时备份

  • 一、概要
  • 二、shell备份脚本
  • 三、脚本说明
    • 3.1、进入到容器后,创建一个容器内部的备份文件夹
    • 3.2、使用mysqldump进行数据备份
    • 3.3、宿主机上需要提前创建文件夹
  • 四、定时器配置
    • 4.1、首先将备份脚本backups.sh文件放到/backups/mysql文件夹中。
    • 4.2、安装定时工具
    • 4.3、配置定时任务

一、概要

最近因为项目需要,之前在docker下部署了mysql5.7.29版本。现在项目接近暂告一个段落,需要进行各种备份,下面就给出,本次在项目中实际用到的Linux下的docker中的MySQL数据备份的案例。

本方案的逻辑是:通过shell脚本进入到容器内部,然后通过mysqldump工具将数据文件备份到容器内部的一个/backups/mysql文件夹下。然后通过docker cp命令将容器中的文件拷贝到宿主机的文件夹上。

二、shell备份脚本

# 保留10天数据,
# mysqldocker 为安装mysql的docker
docker exec -i mysql5.7.29 bash<<'EOF'
# 判断目录是不是已经存在,如果不存在则创建
if [ ! -d "/backups/mysql" ]; then
  mkdir -p /backups/mysql
fi
# supervision 为数据库的名称
mysqldump -h localhost -uroot -p123456 supervision > /backups/mysql/supervision_$(date +%Y%m%d).sql
#删除超过10天的数据
rm -f /backups/mysql/supervision_$(date -d -10day +%Y%m%d).sql
exit
EOF
# 判断目录是不是已经存在,如果不存在则创建
#if [ ! -d "/backups/mysql" ]; then
#  mkdir -p /backups/mysql
#fi
# 将docker中的备份的数据拷贝到宿主机上。
sudo docker cp mysql5.7.29:/backups/mysql/supervision_$(date +%Y%m%d).sql /home/backups/mysql
#删除超过10天的数据
#rm -f /home/backups/mysql/supervison_$(date -d -10day +%Y%m%d).sql

三、脚本说明

首先从网上找的资料脚本中已经给出了比较详细的代码注释,但是落实到实际的时候也发现了几个地方的问题。下面给出解释。

3.1、进入到容器后,创建一个容器内部的备份文件夹

【Linux学习笔记】Docker下的mysql定时备份_第1张图片

3.2、使用mysqldump进行数据备份

分别对应ip地址、用户名、密码、数据库名
在这里插入图片描述

3.3、宿主机上需要提前创建文件夹

下图为文件夹的结构
在这里插入图片描述

四、定时器配置

4.1、首先将备份脚本backups.sh文件放到/backups/mysql文件夹中。

在这里插入图片描述

4.2、安装定时工具

yum -y install vixie-cron
yum -y install crontabs

4.3、配置定时任务

# 配置定时任务
crontab -e

【Linux学习笔记】Docker下的mysql定时备份_第2张图片

你可能感兴趣的:(Linux)