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:指明导出数据时的查询条件