1 备份
1.1 准备工作
创建备份的user:仅需读取权限即可。
db.createUser({ user: "readuser", pwd: "password", roles: [ { role: "readAnyDatabase", db: "admin"} ]}) ;
1.2 备份命令
mongodump:导出所有数据库到指定目录。
参数说明:
--host:MongoDB所在服务器IP。
--port:MongoDB所在服务器端口。
-d:需要备份的数据库实例。
--out, -o:备份的数据存放位置。
-u : 指定登录用户
-p : 指定登录用户的密码
-c : 指定要备份的集合--authenticationDatabase:指定密码验证的库实例
示例:
(1)备份所有数据库实例:
mongodump --host 127.0.0.1 --port 27017 --authenticationDatabase admin -u readuser -p password -o /path/mongodb_backup/all/
(2)备份某个数据库实例db1:
mongodump --host 127.0.0.1 --port 27017 --authenticationDatabase "admin" -u readuser -p password -d db1 --out /path/mongodb_backup/db1
(3)备份数据库实例db1的collection1
mongodump --host 127.0.0.1 --port 27017 --authenticationDatabase admin -u readuser -p password -d db1 -c collection1 -o /path/mongodb_backup/db1/collection1
1.3 备份脚本
编写备份脚本backup_mongodb.sh,向该脚本传递一个参数指定备份的数据库库实例名称。
#!/bin/bash
if [ $# = 0 ]; then
echo "Input the parameter: dbname, please."
exit 1
fi
BACKUP_DATE=`date +%Y%m%d`
DB_NAME=$1
echo "###########################################################"
date +"%Y-%m-%d %H:%M.%S"
echo "Begin backup mongodump database: $DB_NAME"
echo "###########################################################"
./mongodb-3.2.8/bin/mongodump -d $DB_NAME --authenticationDatabase "admin" -u readuser -p 9iHjhLj4dC --out /u01/mongodb_backup/$DB_NAME/$BACKUP_DATE
du -sh /mongodb_backup/$DB_NAME/$BACKUP_DATE
echo "###########################################################"
date +"%Y-%m-%d %H:%M.%S"
echo "END backup mongodump database: $DB_NAME"
echo "###########################################################"
调用方式:
backup_mongodb.sh db1
2 恢复数据库
2.1恢复命令
mongorestore
参数说明:
-h, --host:MongoDB所在服务器IP。
--port:MongoDB所在服务器端口。
-d:需要恢复的数据库实例。
-u:指定登录用户
-p:指定登录用户的密码
-c:指定要恢复的集合
--drop:恢复的时候把之前集合drop掉--authenticationDatabase:指定密码验证的库实例
示例:
(1)恢复所有数据库
mongorestore --host 127.0.0.1 --port 27017 --authenticationDatabase admin -u admin -p 123456 /path/mongodb_backup/all/
(2)恢复指定的库
mongorestore --host 127.0.0.1 --port 27017 --authenticationDatabase admin -u admin -p 123456 -d db1 /path/mongodb_backup/db1
若恢复之前,数据库已经存在,则会报错:
此时,可以使用--drop参数:
mongorestore --host 127.0.0.1 --port 27017 --authenticationDatabase admin -u admin -p 123456 -d db1 --drop /path/mongodb_backup/db1