docker容器mongodb实现数据库备份

本文介绍了一个用于Docker环境下MongoDB数据库备份的Shell脚本,通过定时任务实现数据库的定期备份,并自动清理过期备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker容器mongodb实现数据库备份
脚本mongodb.sh

#!/bin/bash

#加上环境变量

source /etc/profile
source ~/.bash_profile

dump 命令执行路径,根据mongodb安装路径而定

mongo的容器名称

MONGODB_CONTAINER_NAME=ffmongo
DUMP="docker exec -i ${MONGODB_CONTAINER_NAME}" 

#踩坑,加到定时crontab定时任务备份,-i是交换式会话,-t回显。

临时备份路径(注:docker 容器内的路径)

OUT_DIR=/dump/tmp

压缩后的备份存放路径(注:docker 容器内的路径)

TAR_DIR=/dump/list

当前系统时间

DATE=`date +%Y%m%d%H%M`

数据库账号

DB_USER=aaa

数据库密码

DB_PASS=aaa

数据库名称,多个用空格隔开

DB_NAME_ARR=("aaa") 

代表删除7天前的备份,即只保留近 7 天的备份

DAYS=7

最终保存的数据库备份文件

for DBNAME in ${DB_NAME_ARR[@]}
do
# 删除临时目录内容
$DUMP rm -rf $OUT_DIR/*
# 文件名称:数据库名_时间
FILE_NAME="${DBNAME}_${DATE}"
# 导出数据的临时目录
TARGET_DIR="$OUT_DIR/$FILE_NAME"
$DUMP mkdir -p $TARGET_DIR
# 临时目录打包压缩后的文件
TARGZ_FILE="${FILE_NAME}.tar.gz"
# 存放压缩后文件的目录
TARGET_FILE="$TAR_DIR/$TARGZ_FILE"
# 执行导出命令
  $DUMP mongodump -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS  --authenticationDatabase $DBNAME -o $TARGET_DIR
# 判断导出结果
flag=`echo $?`
if [ $flag == "0" ];then
        echo "database $DBNAME success backup to $TARGET_DIR"
else
        echo "database $DBNAME backup fail!"
fi
# 压缩格式为 .tar.gz 格式
# -P tar 默认采用相对路径压缩打包,需要(-P)允许使用绝对路径 
$DUMP tar -zcPf $TARGET_FILE $TARGET_DIR/$DBNAME
# 将容器内的压缩文件,复制到宿主机与备份脚本同级的dump目录下
 docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE $PWD/dump
   
done

删除 $DAYS 天前的备份文件

find /dump -mtime +$DAYS -delete

定时任务crontab -l
#每天凌晨2点进行备份

0 2 * * * bash -x /dump/mongobk.sh >> /home/mg.log
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值