1.备份mysql数据库数据,并删除老数据,留取最新十个文件:
#!/bin/bash
#set -x
# MySQL连接信息
DBHOST="127.0.0.1"
USERNAME="root"
PORT="3306"
DATABASES=("test" "test2")
# 容器内备份目录 删掉了没用到
CONTAINER_BACKUP_DIR="/backup"
# 容器外备份目录
HOST_BACKUP_DIR="/data/backup/mysql/sql_file"
# 创建容器外备份目录(如果不存在)
mkdir -p $HOST_BACKUP_DIR
for DB in "${DATABASES[@]}"
do
# 备份文件名格式:db_backup_数据库名_日期时间.sql
BACKUP_FILE="db_backup_${DB}_$(date +'%Y%m%d_%H%M%S').sql"
# 在容器内执行备份命令
docker exec -i mysql bash -c "mysqldump --host=$DBHOST --user=$USERNAME --password='在这里输入密码' --port=$PORT --opt --triggers --routines --single-transaction --set-gtid-purged=OFF $DB > $BACKUP_FILE"
sleep 30
# 复制备份文件到容器外备份目录
docker cp mysql:$BACKUP_FILE $HOST_BACKUP_DIR
# 删除容器内的备份文件
docker exec mysql rm $BACKUP_FILE
# 在容器外备份目录中删除旧备份,保留最新的10个备份文件
cd $HOST_BACKUP_DIR
ls -t | grep -E "db_backup_${DB}_" | tail -n +11 | xargs rm -f
echo "Backup completed and old