给docker容器中的mysql做定时数据备份

给docker容器中的mysql做定时数据备份

1、写脚本

#!/bin/bash

# MySQL数据库配置
DB_HOST="127.0.0.1"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="123456"
DB_NAME_AUTHORITY="stu_authority"
DB_NAME_WEB="stu_web"

# 备份目录和文件名,需要修改备份目录
BACKUP_DIR_WEB="/var/lib/mysql/mysql_backup/web"
BACKUP_DIR_AUTH="/var/lib/mysql/mysql_backup/authority"
BACKUP_FILENAME_WEB="web_backup_$(date +"%Y%m%d%H%M%S").sql.gz"
BACKUP_FILENAME_AUTHORITY="authority_backup_$(date +"%Y%m%d%H%M%S").sql.gz"
# 创建备份目录(如果目录不存在)
mkdir -p $BACKUP_DIR_WEB
mkdir -p $BACKUP_DIR_AUTH

# 执行备份命令
docker exec <容器id> mysqldump -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASSWORD $DB_NAME_AUTHORITY | gzip > $BACKUP_DIR_AUTH/$BACKUP_FILENAME_AUTHORITY

docker exec <容器id> mysqldump -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASSWORD $DB_NAME_WEB | gzip > $BACKUP_DIR_WEB/$BACKUP_FILENAME_WEB
# 输出备份完成信息
echo "MySQL backup completed: $BACKUP_DIR_WEB/$BACKUP_FILENAME_WEB"
echo "MySQL backup completed: $BACKUP_DIR_AUTH/$BACKUP_FILENAME_AUTHORITY"

2、编写定时任务

#编辑定时任务,如果第一次执行。可能需要选择下编辑器,nano和vi模式,这里我常用的是vi
crontab -e

#进入编辑模式,加入在末尾追加定时任务,每天凌晨2点执行,mysql_backup.sh就是上面脚本的文件名字
0 2 * * * /path/to/mysql_backup.sh

# 保存并关闭文件,就可以正常执行了
# 查看定时任务状态命令
systemctl status cron
# [选择性执行] 如果定时任务状态不是启动的,可以执行启动定时任务命令
sudo systemctl start cron

至此,定时备份数据的任务就算完成了。

注意事项

如果第一次编辑定时任务(crontab -e),然后编辑模式选错了,选成nano,但是只会用vi的话,以下是帮你解决的方法:

# 1、输入以下命令以更改默认编辑器设置:
export VISUAL=vim
export EDITOR=vim

# 2、运行以下命令来编辑 Cron 任务文件:
crontab -e

# 3、现在,应该会看到 vi 编辑器打开了 Cron 任务文件。
相关推荐
鸠摩智首席音效师2 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器
Michaelwubo2 小时前
Docker dockerfile镜像编码 centos7
运维·docker·容器
jingyu飞鸟3 小时前
centos-stream9系统安装docker
linux·docker·centos
好像是个likun3 小时前
使用docker拉取镜像很慢或者总是超时的问题
运维·docker·容器
White_Mountain4 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
老王笔记4 小时前
GTID下复制问题和解决
mysql
玖疯子5 小时前
介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用。
docker
暴富的Tdy5 小时前
【快速上手Docker 简单配置方法】
docker·容器·eureka
Lojarro6 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
TianyaOAO6 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql