mongodump备份数据

使用mongodump备份数据库,以下是备份脚本。可以用 which -a mongodump 查看PATH的位置。

把脚本保存为backup.sh, {{ mongodump_path }} 换成你的mongodump的PATH位置,修改dbHost、dbPort、dbName、dbUsername、dbPassword,增加可执行权限:  chmod a+x backup.sh ,然后执行脚本:  ./backup.sh 

 1 #!/bin/sh 
 2 #备份Mongo 数据库:
 3 echo "1.初始化..."
 4 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:{{ mongodump_path }}
 5 export PATH 
 6 
 7 #数据库
 8 dbHost="127.0.0.1"
 9 dbPort=27017
10 dbName=""
11 dbUsername=""
12 dbPassword=""
13 
14 #备份目录
15 bakDir="`pwd`/db_backup"
16 timeStr="`date +%Y%m%d`"
17 fileName=$dbName"_${timeStr}.tar"
18 realDbBakDir=$bakDir/$timeStr
19 
20 if [ ! -x "$bakDir" ];then
21 mkdir $bakDir
22 fi
23 cd $bakdir
24 echo "备份的数据库为:" $dbName
25 echo "备份目录为:" $bakDir
26 echo $dbName "数据库备份文件目录为:" $realDbBakDir
27 echo "2.备份开始:"
28 mongodump2 -h $dbHost:$dbPort -u $dbUsername -p $dbPassword  --authenticationDatabase $dbName -d $dbName -o $realDbBakDir
29 echo "3.备份结束,开始打包"
30 for((i=1;i<10;i++))
31 do
32    echo "当前等待时间" $i ""
33    sleep 1
34 done
35 echo "备份文件:" $realDbBakDir/$dbName/$fileName
36 tar -czvf $realDbBakDir/$fileName $realDbBakDir/$dbName/
37 echo "4.打包完成,开始scp上传"
38 #scp $realDbBakDir/$fileName  root@xxxx
39 echo "5.上传成功"
40 echo "备份成功日志`date`" >> $realDbBakDir/bak.log

如果不打包,可以把29~39行注释掉。

mongodump参数解析:(可以用mongodump --help查看)

  • -h:mongodb连接的host和port;用 --host <mongodb_host> --port <port> 也是相同的
  • -u:用户名(--username)
  • -p:密码(--password)
  • --authenticationDatabase:认证数据库
  • -d:指定数据库名称
  • -c:指定集合名称
  • -o:指明要导出的文件名
  • -q:指明导出数据时的查询条件
原文地址:https://www.cnblogs.com/shengmading/p/14626760.html