【数据库备份】docker中数据库备份脚本——MySql备份脚本
docker中数据库备份脚本——MySql备份脚本
#!/bin/bash
# MySQL数据库信息
DB_USER="root"
DB_PASSWORD="你的密码"
# 备份保存主目录
BACKUP_ROOT="/data/data_backup/mysql"
# 最多保留的备份日期文件夹数
MAX_DATE_FOLDERS=15
# 数组包含要备份的数据库名称
DB_NAMES=("数据库名称1" "数据库名称2" "数据库名称3" "数据库名称4")
# 获取当前日期
CURRENT_DATE=$(date +%Y%m%d)
# 循环备份每个数据库
for DB_NAME in "${DB_NAMES[@]}"; do
# 创建日期文件夹(如果不存在)
BACKUP_DIR="$BACKUP_ROOT/$CURRENT_DATE"
mkdir -p "$BACKUP_DIR"
# 备份文件名
BACKUP_FILE="$BACKUP_DIR/backup_${DB_NAME}_${CURRENT_DATE}.sql"
# MySQL备份命令
docker exec -i mysql mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE
# 删除过期的日期文件夹
CURRENT_DATE_FOLDERS=$(ls -1 -d $BACKUP_ROOT/*/ 2>/dev/null)
NUM_DATE_FOLDERS=$(echo "$CURRENT_DATE_FOLDERS" | wc -l)
if [ $NUM_DATE_FOLDERS -gt $MAX_DATE_FOLDERS ]; then
OLDEST_DATE_FOLDER=$(echo "$CURRENT_DATE_FOLDERS" | head -n 1)
rm -r "$OLDEST_DATE_FOLDER"
echo "Deleted expired date folder: $OLDEST_DATE_FOLDER"
fi
echo "Backup completed for $DB_NAME: $BACKUP_FILE"
done
定时任务
命令:crontab -e
0 0 * * * /data/data_backup/mysql/backup.sh
每天0点开始备份