docker下mysql备份

首先创建两个目录

mkdir /home/mysql

mkdir /home/backup

  1. vi /home/mysql/db-backup.sh 创建脚本

记得修改脚本账号密码哦~

#!/bin/bash

echo '开始备份数据'

# 定义 MySQL 容器名称和备份目录
MYSQL_CONTAINER="mysql"
BACKUP_DIR="/home/backup"

# 定义 MySQL 容器中的数据库用户名、密码和备份文件名
MYSQL_USER="root"
MYSQL_PASSWORD="root"
BACKUP_FILE="${BACKUP_DIR}/db_backup_$(date +%Y%m%d%H%M%S).sql"

# 执行备份命令
docker exec ${MYSQL_CONTAINER} mysqldump --default-character-set=utf8mb4 --single-transaction -u ${MYSQL_USER} -p${MYSQL_PASSWORD} --all-databases > ${BACKUP_FILE}

# 检查备份是否成功
if [ $? -eq 0 ]; then
  echo "MySQL 数据库备份成功:${BACKUP_FILE}"
else
  echo "MySQL 数据库备份失败"
fi

# 删除14天前的备份文件
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete

echo '完成备份'

2,运行脚本,查看是否可以备份文件。

sh /home/mysql/db-backup.sh

查看/home/backup 是否有备份的文件

3,设置定时任务

yum install crontabs (安装 crontabs)

systemctl enable crond (设为开机启动)

systemctl start crond(启动crond服务)

systemctl status crond (查看状态)

crontab -e 编辑定时任务

1 1 * * * sh /home/mysql/db-backup.sh 每天凌晨一点一分运行

esc --> :wq 保存
  
  保存定时任务之后出现这个 就表示成功了
  crontab: installing new crontab

crontab -l 查看定时任务
  注:为了测试定时任务是否可用 可以把前两个1 改成当前时间的晚几分钟进行测试
  定时任务 第一个数是分 第二个数是时(0-23)

导入备份

将db.sql文件导入到容器/目录下

//docker cp 数据库备份文件 docker容器的ID:/
docker cp db_20200904.sql 77cd88f28cb7:/var/backups

进Docker入容器内

docker exec -it docker容器的ID bash

在容器内执行命令即可成功导入

source /var/backup/db_20200904.sql
退出容器  exit
或者
mysql -u root -p < /var/backup/db_backup_2023-06-09.sql

注:
导出所有库到一个sql文件中,通过Navicat或者将sql粘贴到工具中是无法导入成功的
环境中不能有和server-mysql相同的服务

你可能感兴趣的:(docker,mysql,容器)