mongo 备份脚本


#!/bin/bash 
#created by qiqi 2018-5-4

#创建备份用户
#use admin;
#db.createUser(
#  {
#    user: "myuser",
#    pwd: "xxxxxxx",
#    roles: [ { role: "backup", db: "admin" } ]
#  }
#)
#db.auth("myuser","xxxxxxx") #验证用户是否创建成功


USERNAME=myuser #备份的用户名 
PASSWORD=xxxxxxx #备份的密码
HOST=1.1.1.1 #备份主机
PORT=3717

DATE=`date +%Y-%m-%d`  #用来做备份文件名字的一部分
OLDDATE=`date +%Y-%m-%d -d '-7 days'`  #本地保存天数  

#指定命令所用的全路径
MONGODUMP=/data/mongo_slave/bin/mongodump
MONGO=/data/mongo_slave/bin/mongo
#创建备份的目录和文件
BACKDIR=/data/backup/mongodb
[ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
[ -d ${BACKDIR}/${DATE} ] || mkdir ${BACKDIR}/${DATE}
[ ! -d ${BACKDIR}/${OLDDATE} ] || rm -rf ${BACKDIR}/${OLDDATE} #保存5天 多余的删除最前边的
#开始备份  for循环想要备份的数据库

#MONGODBLIST=(admin blockchain copyright_filing copyright_monitor  test)
#MONGODBLIST=$(/data/mongo_slave/bin/mongo 1.1.1.1:3717/admin  -u'admin' -p'banquanjia2017!'  --eval "printjson(db.getMongo().getDBNames())" | grep -iv "\[\|\]\|MongoDB\|connecting\|local" | sed  's/"//' | sed 's/",//' | sed 's/"//')

#以下这条命令要先在命令行 试试 在用到脚本里 MONGODBLIST
=`${MONGO} ${HOST}:${PORT}/admin -u$USERNAME -p$PASSWORD --eval "printjson(db.getMongo().getDBNames())" | grep -iv "\[\|\]\|MongoDB\|connecting\|local" | sed 's/"//' | sed 's/",//' | sed 's/"//'` for db in ${MONGODBLIST[*]} do ${MONGODUMP} --host ${HOST}:${PORT} -u ${USERNAME} -p ${PASSWORD} -d ${db} -o ${BACKDIR}/${DATE}/ --authenticationDatabase=admin done ##恢复的方法如下 #/mongorestore --port 端口 -d 数据库 -o 备份的路径 #/mongorestore --port 27017 -d admin --drop backup/admin/ #mongoimport 是导入数据 同样的覆盖 不同的新增 #mongorestore 会覆盖所有 mongorestore --host 127.0.0.1:27017 -u admin -p root123 -d copyright_filing --authenticationDatabase=admin #mongoimport 相同的覆盖 不同的导入

 核心点

/data/mongodb-3.2.16/bin/mongo 1.1.1.1:3717/admin  -u'xxx' -p'xxxx'  --eval "printjson(db.getMongo().getDBNames())" | grep -iv "\[\|\]\|MongoDB\|connecting\|local" | sed  's/"//' | sed 's/",//' | sed 's/"//'
# --eval 可以不进入数据库 就执行一些命令 对于写脚本 十分的方便
#show dbs; 在这种格式里不能用 db.getMongo().getDBNames() 这是查看数据库的另一种方式

猜你喜欢

转载自www.cnblogs.com/lazyball/p/8991528.html