img

MongDB数据导入导出与备份

旁观者 1年前 ⋅ 834 阅读

MongDB数据导出与备份

MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB的导入导出以及数据备份还原

一.数据的导入导出:

1.导出数据

mongoexport -h dbhost -d databaseName -c collectionName -o filename --type json/txt/csv -f 

参数说明

-f :输出的字段,如果-type为csv,则需要加上-f "字段名"

2.导入数据

mongoimport -h dbhost -d databaseName -c collectionName --file filename --headerline --type json/csv -f field

参数说明

-f :导入的字段名

--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段(-f的字段)

--file :要导入的文件

二.数据库备份与还原

1.数据库备份

mongodump -h dbhost -d databaseName -o fileDirectory

mongodb数据库备份脚本

#!/bin/bash
#定义备份数据库名
dbhost=localhost
dbname=image

#数据库备份路径
backuppath=/root/mongo_backup/

#数据库备份日志文件存储的路径
logfile=/root/mongo_backup/mongo_backup.log

#获取当前日期,用作数据库名
now=`date +%Y-%m-%d`

#拼接文件名
dumpfile=$dbname-$now

#使用下面函数备份数据库
back_mongodb(){
echo "------"$(date +%Y-%m-%d%t%A%t%T)" Beginning database "${dbname}" backup--------" >>${logfile}
mongodump -h localhost -u root -p root -d ${dbname} -o ${backuppath}${dumpfile} 2>> ${logfile}
echo "mongodump -h localhost -d ${dbname} -o ${backuppath}${dumpfile} 2>> ${logfile}"
echo $(date +%Y-%m-%d%t%A%t%T)" Beginning zip ${backuppath}${dumpfile}" >>${logfile}
tar zcvf ${dumpfile}.tar.gz ${dumpfile} && rm -rf ${dumpfile} 2>> ${logfile}
echo "backup file name:"${dumpfile}".tar.gz" >>${logfile}
echo -e "-------"$(date +%Y-%m-%d%t%A%t%T)" Ending database "${dbname}" backup-------\n" >>${logfile}
}

#删除一周前的备份文件
rm_oldfile(){
find ${backuppath} -type f -mtime +7 -exec rm {} \;
}
cd ${backuppath}
back_mongodb
rm_oldfile

2.数据库还原

mongorestore -h dbhost -d databaseName --dir fileDirectory 

(--drop删除还原前的数据,慎用)


全部评论: 0

    我有话说: