【数据库备份】docker中数据库备份脚本——Mongo备份脚本

docker中数据库备份脚本——Mongo备份脚本

#!/bin/bash

# MongoDB数据库信息
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"

declare -A MONGO_CREDENTIALS
MONGO_CREDENTIALS["数据库1"]="数据库1帐号:密码"
MONGO_CREDENTIALS["数据库2"]="数据库2帐号:密码"
MONGO_CREDENTIALS["数据库3"]="数据库3帐号:密码"

# 备份保存主目录
BACKUP_ROOT="/data/data_backup/mongo"

# 最多保留的备份日期文件夹数
MAX_DATE_FOLDERS=10

CURRENT_DATE=$(date +%Y%m%d)

# 循环备份每个数据库
for DB_NAME in "${!MONGO_CREDENTIALS[@]}"; do
    # 创建日期文件夹(如果不存在)
    BACKUP_DIR="$BACKUP_ROOT/$CURRENT_DATE"
    mkdir -p "$BACKUP_DIR"

    # 备份文件名
    BACKUP_FILE="$BACKUP_DIR/backup_${DB_NAME}_${CURRENT_DATE}"

    # MongoDB备份命令
    CREDENTIALS=(${MONGO_CREDENTIALS[$DB_NAME]//:/ })
    USERNAME=${CREDENTIALS[0]}
    PASSWORD=${CREDENTIALS[1]}
    echo "Executing mongodump command: docker exec mongo mongodump --host $MONGO_HOST --port $MONGO_PORT --username ${USERNAME} --password ${PASSWORD} --db $DB_NAME --out $BACKUP_FILE"
    docker exec mongo mongodump --host $MONGO_HOST --port $MONGO_PORT --username ${USERNAME} --password ${PASSWORD} --db $DB_NAME --out $BACKUP_FILE
    # 将容器里的数据数据拷贝出来
    docker cp mongo:$BACKUP_FILE $BACKUP_FILE
    # 删除容器里的数据
    docker exec  mongo rm -r $BACKUP_DIR
    # 删除过期的日期文件夹
    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 2 * * * /data/data_backup/mysql/backup.sh

每天2点开始备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值