mongodb 数据库备份脚本

写了小shell bash, 用于给mongodb数据进行备份

 #!/bin/bash  
 #backup MongoDB  
 
#文件目录
#backup MongoDB  
 #!/bin/bash  
#backup MongoDB  
#文件目录
MONGO_HOME=/usr/work/mongoDB
#mongodump命令路径  
 
DUMP=$MONGO_HOME/mongo/bin/mongodump
 #临时备份目录  
if [ ! -d "$MONGO_HOME/mongodb_bak_now" ]; then
         mkdir $MONGO_HOME/mongodb_bak_now
fi
OUT_DIR=$MONGO_HOME/mongodb_bak_now
#备份存放路径  
if [ ! -d "$MONGO_HOME/mongodb_bak_list" ]; then
         mkdir $MONGO_HOME/mongodb_bak_list
fi
TAR_DIR=/usr/work/mongoDB/mongodb_bak_list
#获取当前系统时间  
DATE=`date +%Y_%m_%d`
#DAYS=15代表删除15天前的备份,即只保留近15天的备份  
DAYS=15
#最终保存的数据库备份文件  
TAR_BAK="mongodb_bak_$DATE.tar.gz"

cd $OUT_DIR
rm -rf $OUT_DIR/*
mkdir -p $OUT_DIR/$DATE
#备份全部数据库  
$DUMP -h dev.iwhere.com:27017 -o $OUT_DIR/$DATE

# 带密码链接方式
mongodump -h 172.27.137.26:36137 -d ssdb -o f:\data\ssdb170505 -u=administrator -p=qqddd.222
#压缩为.tar.gz格式 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #删除15天前的备份文件 find $TAR_DIR/ -mtime +$DAYS -delete

exit

写了个远程的, 不太管用

#!/usr/bin/expect 
set host_ip [index $argv 0]
set username [index $argv 1]
set passwd [index $argv 2]

spawn scp  -r $TAR_DIR/$TAR_BAK $username@$host_ip:/opt/mongodb_bak/
expect {
        "(yes/no)?"
                {
                        send "yes\n"
                        expect "*assword:" {send "$password\n"}
                }
        "*assword:"
                {
                        send "$password\n"
                }
}
expect "100%"
expect eof

 可加入到linux执行计划里面, 就会实现自动备份了

vim /etc/crontab
00 00 * * 7 root /usr/work/mongoDB_back.sh
#秒, 分  时, 日 周, 用户  执行脚本

 ps: 当带有密码的备份报错时, 需要添加: 

当备份时报错: 
Failed: error connecting to db server: server returned error on SASL authentication step: Authentication failed.

需要添加--authenticationDatabase admin

 

然后, 数据恢复( 使用mongorestore)

./mongorestore -h www.wenbronk:27017 -d test /opt/wenbronk_soft
/mongo/mongodb-3.4v/datas/iwhere/project/bak/mongdb_136/mongodb_bak_now/2017_05_03/test/

参数解释: 

-h 指定要同步的服务器
-d 指定要同步后的数据库名, 可不同名
然后是本地保存的数据存放路径
–drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用.

 

posted @ 2017-03-07 15:55  bronk  阅读(468)  评论(0编辑  收藏  举报