Mysql 定时备份 Docker 全库数据
编辑
26
2025-05-23

单库 Linux Shell 脚本
#!/bin/bash
# 配置参数
CONTAINER_NAME="mysql"
USER="root"
PASSWORD="admin@mysql"
DATABASE="xxx"
BACKUP_DIR="/etc/bak"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DATABASE-$DATE.sql"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 备份数据库
docker exec $CONTAINER_NAME mysqldump -u $USER -p$PASSWORD $DATABASE > $BACKUP_FILE
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "数据库备份成功: $BACKUP_FILE"
else
echo "数据库备份失败"
exit 1
fi
# 可选:删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -exec rm {} \;
# 设置文件权限
chmod 600 $BACKUP_FILE
全库 Linux Shell 脚本
#!/bin/bash
# 配置参数
CONTAINER_NAME="mysql"
USER="root"
PASSWORD="admin@mysql"
BACKUP_DIR="/etc/bak"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/all-databases-$DATE.sql"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 全库备份
docker exec "$CONTAINER_NAME" mysqldump -u"$USER" -p"$PASSWORD" --all-databases > "$BACKUP_FILE"
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "全库备份成功: $BACKUP_FILE"
else
echo "全库备份失败"
exit 1
fi
# 可选:删除超过7天的备份文件
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -exec rm -f {} \;
# 设置文件权限
chmod 600 "$BACKUP_FILE"
Linux Cron 定时任务脚本
打开定时任务列表
crontab -e
配置执行脚本
# 每天凌晨 2 点执行
0 2 * * * /opt/mysql/mysqlbak.sh
各字段含义
* * * * * 命令
| | | | |
| | | | └───── 星期几 (0 - 7)(0和7都代表星期日)
| | | └────────── 月份 (1 - 12)
| | └─────────────── 日期 (1 - 31)
| └──────────────────── 小时 (0 - 23)
└───────────────────────── 分钟 (0 - 59)
- 0
- 1
-
赞助
赞赏
-
分享