备份
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。