给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 任务文件。
相关推荐
阳小江1 小时前
Docker知识点
运维·docker·容器
极客柒2 小时前
RustDesk 开源远程桌面软件 (支持多端) + 中继服务器伺服器搭建 ( docker版本 ) 安装教程
服务器·docker·开源
振鹏Dong2 小时前
MySQL 事务底层和高可用原理
数据库·mysql
·云扬·2 小时前
深度剖析 MySQL 与 Redis 缓存一致性:理论、方案与实战
redis·mysql·缓存
方渐鸿3 小时前
【2025】快速部署安装docker以及项目搭建所需要的基础环境(mysql、redis、nginx、nacos)
java·运维·docker·持续部署·dockercompse
努力的小Qin4 小时前
银河麒麟V10 aarch64架构安装mysql教程
数据库·mysql·架构
WCL-JAVA6 小时前
Docker快速安装MongoDB并配置主从同步
mongodb·docker·容器
运维开发那些事6 小时前
Mysql MIC高可用集群搭建
mysql
下一秒_待续6 小时前
.Net8项目使用docker、docker-compose部署步骤
docker·容器·.net