1、创建脚本文件backup_mysql_multi.sh
文件的解释都放在注释里面,自行观看
#!/bin/bash
# 设置时区为上海
export TZ='Asia/Shanghai'
# 定义 MySQL 容器名称和数据库信息
CONTAINER_NAME="mysql镜像名称"
DB_USER="数据库账号"
DB_PASSWORD="数据库密码"
# 要备份的数据库列表
DATABASES=("test-sql" "rabbit_dev")
# 备份文件存储路径(宿主机路径)
BACKUP_DIR="/mydata/mysql-backup/sqlback"
# 备份日志
LOG_FILE="/mydata/mysql-backup/log/backup.log"
# 创建日志文件(如果不存在)
touch $LOG_FILE
# 设置日期格式(设置环境变量,不然有时候手动执行和自动执行日期格式不一样)
export LC_TIME=zh_CN.UTF-8
# 循环备份每个数据库
for DATABASE in "${DATABASES[@]}"
do
BACKUP_FILE="$BACKUP_DIR/${DATABASE}_backup_$(date +"%Y%m%d%H%M%S").sql"
# 备份 MySQL 数据库到宿主机
docker exec $CONTAINER_NAME mysqldump -u $DB_USER -p$DB_PASSWORD $DATABASE > $BACKUP_FILE
# 检查备份是否成功并记录日志
if [ $? -eq 0 ]; then
echo "[$(date)] 成功---数据库: $DATABASE 备份成功. 文件名和路径: $BACKUP_FILE" >> $LOG_FILE
else
echo "[$(date)] 成功---数据库: $DATABASE 备份失败" >> $LOG_FILE
fi
done
# 删除七天前的备份文件
find $BACKUP_DIR -name "*.sql" -type f -mtime +7 -exec rm {} \;
2、保存脚本为 backup_mysql_multi.sh
,然后赋予执行权限:
chmod +x backup_mysql_multi.sh
3、运行脚本来备份多个 MySQL 数据库并记录日志:
./backup_mysql_multi.sh
4、上一步如果没问题,编写linux定时任务
打开终端,输入
crontab -e
5、在打开的编辑器中,添加以下内容来设置每天凌晨执行 cleanup.sh
脚本:
0 0 * * * /你的sh文件路径/backup_mysql_multi.sh #每天凌晨备份一次
0 * * * * /你的sh文件路径/backup_mysql_multi.sh #每小时备份一次
提示:[root@lavm-25kkvqe2cb mysql-backup]# crontab -e no crontab for root - using an empty one crontab: installing new crontab
表示创建成功!