首页 MongoDB Shell脚本一键自动备份mongodb数据库

Shell脚本一键自动备份mongodb数据库

2024-09-13 08:59 编辑:  丽丽学习网

Shell脚本一键自动备份mongodb数据库, Shell脚本一键自动备份mongodb数据库,定义备份目录和文件名, 把该内容保存在此文件夹的位置,然后命名为。xxx.sh ,一会儿会执行这个文件, 使用 sh xxx.sh, 只需要配置数据库用户名和密码即可,使用sh xxx.sh 执行完毕后,此文件的同目录下会有一个备份好且压缩后的包, 此为一键备份mongodb数据库,全部表部分表均可。

#!/bin/bash
# 定义备份目录和文件名, 把该内容保存在此文件夹的位置,然后命名为。xxx.sh ,一会儿会执行这个文件, 使用 sh xxx.sh
BACKUP_DIR=/www/backup
# 数据库名称 -------------------需要设置---------------
DATANAME="databasename"
# 数据库密码------------------ -需要设置---------------
PASSWORD="123456"
# 需要读取的表,如果全部,为空即可,如果多个,使用逗号隔开 ("a","b")。---需要设置---------------
table_array=()
# 数据库端口地址及端口号设置,可以为ip , 如:127.0.0.1:600 --------------需要设置---------------
database_hostandport=www.hao366.net:600
# ----------------------------------- 以下无需要改动---------------------------------------------------
# 备份到的文件夹如果已存在,则删除
if [ ! -d $BACKUP_DIR/$DATANAME ]; then
    # 不存在
    echo "Folder $folder created."
else
    # 存在,先删除
    echo "Folder $folder already exists. already deleted"
    rm -rf $BACKUP_DIR/$DATANAME
fi
BACKUP_FILE="${DATANAME}_$(date +%Y%m%d%H%M%S).tar.gz"
# 循环读取数组中的每个元素
# 获取数组长度
array_length=${#table_array[@]}
if [ $array_length -eq 0 ]; then
    # 全备份
    mongodump -h $database_hostandport -u $DATANAME --password $PASSWORD --authenticationDatabase $DATANAME -d $DATANAME -o $BACKUP_DIR
else
    for i in "${table_array[@]}"; do
        # 执行备份命令 , --excludeCollection 后接要忽略的集合,或使用 -c 后接指定要导出的集合,一条指令只能一个
        mongodump -h $database_hostandport -u $DATANAME --password $PASSWORD --authenticationDatabase $DATANAME -d $DATANAME -c $i -o $BACKUP_DIR
    done
fi
# 压缩
tar -zcvf $BACKUP_FILE $DATANAME 2>/dev/null
# 检查命令是否执行失败
if [ $? -ne 0 ]; then
    echo "压缩 $DATANAME 失败"
else
    echo "压缩 $DATANAME successfully."
fi
# 删除压缩前的文件夹
rm -rf $BACKUP_DIR/$DATANAME 2>/dev/null
# 检查命令是否执行失败
if [ $? -ne 0 ]; then
    echo "删除压缩前的文件夹失败"
else
    echo "已删除压缩前的文件夹 , successfully."
fi

使用sh xxx.sh 执行完毕后,此文件的同目录下会有一个备份好且压缩后的包, 此为一键备份mongodb数据库,全部表部分表均可。