MongoDB 备份和还原数据库
Posted 小伍
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 备份和还原数据库相关的知识,希望对你有一定的参考价值。
备份
mongodump --host=mongodb.example.net --port=27017 --username=user --password="pass" --authenticationDatabase=test --db=test --collection=myCollection --oplog --out=/opt/backup/test-2013-10-24
- --host:默认
localhost:27017
,指定连接主机 - --port:默认
27017
,指定连接端口 - --username:指定进行身份验证的用户名
- --password:指定进行身份验证的密码
- --authenticationDatabase:指定进行身份验证的数据库,如果未指定,则假设为导出的数据库
- --db:指定要备份的数据库,默认为所有数据库
- --collection:指定要备份的集合,默认为所有集合
- --oplog:创建一个
oplog.bson
文件作为备份的内容,包含 mongodump 备份操作期间发生的操作日志。--oplog 不能与 --db 和 --collection 一起使用,必须创建完整的转储才可以使用。 - --out:默认当前目录下的 dump 目录,指定备份保存的目录。使用"
-
"代替路径可以发送到标准输出。--out 不能与 --archive 一起使用。
还原
mongorestore --host=mongodb1.example.net --port=3017 --username=user --password="pass" --authenticationDatabase=test_bak --oplogReplay --drop /opt/backup/test-2013-10-24/
- --host:默认
localhost:27017
,指定连接主机 - --port:默认
27017
,指定连接端口 - --username:指定进行身份验证的用户名
- --password:指定进行身份验证的密码
- --authenticationDatabase:指定进行身份验证的数据库
- --oplogReplay:恢复数据库转储后,从bson文件重新执行oplog内容。--oplogReplay 不能与 --db --collection --nsInclude --nsExclude 一起使用,必须还原完整的转储才可以使用。
- --drop:还原集合之前,从目标数据库中删除集合。
备份脚本
#!/bin/bash
# 连接参数
username=""
password=""
host="127.0.0.1"
port="27017"
# 备份参数
backup_dir=/root/scripts/mongo_backup
backup_dbs=(\'wu_test\')
backup_date=$(date +"%Y-%m-%d")
# 备份逻辑
echo "Backup Start!" ${backup_date}
for db in ${backup_dbs[@]}; do
echo -e "Backup Begin DB: " ${db}
/usr/bin/mongodump --host=$host --port=$port --db=${db} --out=$backup_dir/mongo-${backup_date}/
echo -e "Backup Succeed DB: " ${db} \'\\n\\n\'
done
echo "Backup Fihish!" ${backup_date}
# 清除旧数据
find $backup_dir -mtime +14 -type d -name "mongo*" -exec rm -rf {} \\;
echo -e "\\n======================================================="
计划任务
00 01 * * * bash /root/scripts/mongo_backup.sh >> /root/scripts/mongo_backup.log 2>&1
以上是关于MongoDB 备份和还原数据库的主要内容,如果未能解决你的问题,请参考以下文章