zoukankan      html  css  js  c++  java
  • Mongodb之备份恢复脚本

    本分脚本:

    !/bin/bash
    #备份文件执行路径 which mongodump
    DUMP=
    #临时备份目录
    OUT_DIR=
    #本分存放目录
    TAR_DIR=
    #获取当前系统时间==> 2016_04_11 
    DATE=`date +%Y_%m_%d`
    #数据库账号
    DB_USER=
    #数据库密码
    DB_PASS=
    #保留最近N天的备份
    DAYS=
    #最后保存的数据库备份名称
    TAR_BAK=“mongod_bak_$DATE.tar.gz”
    
    #进入临时备份目录
    cd $OUT_DIR
    #删除临时备份目录中的文件 #rm -rf $OUT_DIR/*
    mv $OUT_DIR/* /tmp/ 
    #本次临时备份目录
    mkdir -p $OUT_DIR/$DATE
    #备份全部数据库
    #mongoexport -d foobar -c persons -o D:/persons.json
    #mongodump --host 127.0.0.1:27017 -d foobar -o d:/foobar
    
    $DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE
    #压缩
    tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
    #删除N天前的备份文件
    find $TAR_DIR/ -mtime +$DAYS -delete
    

    恢复脚本:

    #!/bin/bash
    ###########################
    #恢复mongodb 数据库
    #author:similarface
    #date:2016-04-26
    #email:similarface@outlook.com
    ###########################
    #恢复数据库的名称 如果不书写恢复的数据库名称 会删除数据库的所有dbs然后恢复,给了就会重新生成加dateflag的库
    RECONVERDBNAME=cube_test_
    #恢复命令
    RECONVERYBIN=/usr/local/mongodb/bin/mongorestore
    #备份目录
    BACKUPBASEDIR=/BAK/mongodbak/current
    #存放的老数据
    BACKUPBASEOLDDIR=/BAK/mongodbak/olddata/
    #解压所文件的目录
    BACKUPBASEEXTRACT=/BAK/mongodbak/extract/
    
    for file in $BACKUPBASEDIR/*
    do
            if test -f $file 
            then
                    #压缩文件的文件名 去除了绝对路径
                    tarfilename=${file##*/}
                    #获取时间标签 mongod_bak_DATE.tar.gz 就是这儿的DATE的值
                    dateflag=${tarfilename:11:10}
                    #解压文件到指定的目录
                    tar -xf $file -C ${BACKUPBASEEXTRACT}
                    if [[ $? -eq 0 ]];then
                            echo "解压缩成功,备份文件有效!"
                    else
                            echo "解压缩失败,备份文件有可能无效,请检查!"
                            exit 0
                    fi
                    #获取解压缩的绝对路径
                    gunzipdir=${BACKUPBASEEXTRACT}/home/davy/mongoBak/${dateflag}/
                    #进行数据库的恢复
                    if [ -z "$RECONVERDBNAME" ];then
                            ${RECONVERYBIN} --drop ${gunzipdir} 2> /tmp/mongoright${dateflag}.log >>/tmp/mongoerr${dateflag}.err
                    else
                            ${RECONVERYBIN} --db ${RECONVERDBNAME}${dateflag} ${gunzipdir}/cube_test 2> /tmp/mongoright${dateflag}.log >>/tmp/mongoerr${dateflag}.err
                    fi
                    if [[ $? -eq 0 ]];then
                            echo "数据库恢复成功,查看恢复日志/tmp/mongoright${dateflag}.log."
                    else
                            echo "数据库恢复失败,查看错误日志/tmp/mongoerr${dateflag}.err."
                    fi
                    rm -rf ${BACKUPBASEEXTRACT}/*
                    if [[ $? -eq 0 ]];then
                            echo "清除压缩文件成功."
                    else
                            echo "清除压缩文件失败
    ."
                    fi
                    #将恢复后的文件放在olddata下去
                    mv ${BACKUPBASEDIR}/* ${BACKUPBASEOLDDIR}
            fi
    done
    
  • 相关阅读:
    如何区分JS中的this?!
    JavaScript----函数的封装、继承和多态
    正则知识点解读及常用表达式(判断有效数字、手机号邮箱等)
    Java-集合练习5
    输入输出练习
    集合练习5
    集合练习4
    集合练习题2
    Java-集合练习题1
    Java-小练习简单银行程序
  • 原文地址:https://www.cnblogs.com/similarface/p/5435364.html
Copyright © 2011-2022 走看看