docker中mysql数据备份脚本(可规定保存天数)

前提

  1. mysql使用docker部署
  2. 有一个文件映射出来看备份文件(参数DOCKER_BACKUP文件夹要映射BACKUP文件夹)
  3. 使用crontab定时器自动执行

脚本

#!/bin/bash
# 备份目录
BACKUP=
# 当前时间
DATETIME=$(date +%Y-%m-%d_%H%M%S)
echo $DATETIME
# 数据库的地址
HOST=
# 数据库的用户名
DB_USER=
# 数据库的密码
DB_PW=
# 备份的数据库名
DATABASE=
# 容器名称
DOCKER_DB_NAME=
# 容器备份目录
DOCKER_BACKUP=
# 保留备份天数
BACKUP_DAYS=

#创建备份目录 如果不存在就创建
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"

# 备份数据库
docker exec -i ${DOCKER_DB_NAME} sh -c "mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} > ${DOCKER_BACKUP}/${DATETIME}/$DATETIME.sql"

# 将文件处理成 tar.gz
cd ${BACKUP}
tar -zcvf $DATETIME.tar.gz ${DATETIME}
# 删除对应的备份目录
rm -rf ${BACKUP}/${DATETIME}


# 删除备份文件
find ${BACKUP} -atime +${BACKUP_DAYS} -name "*.tar.gz" -exec rm -rf {} \;
echo "备份数据库 ${DATABASE} 成功"

crontab定时器

chmod +x backup.sh # 给backup.sh执行权限
0 2 * * * /data/mysql/backup.sh # 每天凌晨2点执行backup.sh

数据恢复

mysql -uroot -p'123456' < /data/test.sql

注意:该操作会重新创建数据库,请谨慎操作

你可能感兴趣的:(mysql,docker,mysql,数据库)