#!/bin/bash
# 当前时间
CURRENT_TIME=$(date +"%Y%m%d%H")
# 容器名称
CONTAINER_NAME="4d4af96e1c43"
# 数据库用户
DB_USER="hooclub"
# 数据库密码
DB_PASSWORD="Wemall1@tinytiger"
# 备份文件存储路径
BACKUP_PATH="/www/mysql_5.7/data/backup/"
# 进入备份目录
cd "$BACKUP_PATH"
# 执行备份操作
if docker exec $CONTAINER_NAME mysqldump -u $DB_USER --password=$DB_PASSWORD --single-transaction -R -E --all-databases > "db_backup_$CURRENT_TIME.sql"; then
# 压缩备份文件
tar -czf "mysql_all.$CURRENT_TIME.tar.gz" "db_backup_$CURRENT_TIME.sql" && \
# 删除原始备份文件
rm -f "db_backup_$CURRENT_TIME.sql" && \
echo "Database backup completed."
# 清理过期备份文件
find . -type f -name "mysql_all.*.tar.gz" -mtime +30 -exec rm {} \;
echo "过期备份文件清理完成"
else
echo "MySQL 数据库备份失败"
exit 1
fi
使用 cron 定时执行:
将这个脚本设置为 cron 任务,以定期自动执行备份操作。
编辑 crontab 文件:
crontab -e
添加一行 cron 表达式,指定每天凌晨 3 点执行脚本:
0 3 * * * /path/to/backup_script.sh