1. 简介
MongoDB是一个高性能、开源、无模式的文件数据库,可以用于存储非结构化的数据。备份数据是十分重要的,特别是在出现故障时,备份可以保障数据的安全性和完整性。以下是mongodb备份与恢复的相关介绍。
2. 备份
2.1 命令行备份
在mongodb中,可以使用mongodump命令来备份数据库。mongodump将数据以BSON文件的格式打包,压缩并保存到指定目录下。备份命令如下:
mongodump -h dbhost -d dbname -o dbdirectory
-h:指定mongodb的主机名和端口号,默认为localhost:27017。
-d:指定要备份的数据库名称。
-o:指定备份数据的目录。
例如,要备份一个本地的test数据库,备份到/home/mongoback/目录下,命令如下:
mongodump -d test -o /home/mongoback/
备份完成后,会在/home/mongoback/目录下生成一个test目录,包含数据库的备份数据。
2.2 mongodump选项说明
mongodump命令支持一些选项,用于备份特定的数据和集合等。下面是一些重要的选项说明:
--gzip:备份数据时压缩存储。
--archive:将备份数据打包成一个归档文件。
--collection:备份指定集合。
--query:备份符合指定条件的文档。
--excludeCollection:排除备份指定集合。
--excludeCollectionsWithPrefix:排除备份以指定前缀开头的集合。
3. 恢复
3.1 命令行恢复
使用mongorestore命令可以还原备份数据到mongodb数据库。mongorestore命令会将备份数据解压,并将数据还原到指定的数据库中。还原命令如下:
mongorestore -h dbhost -d dbname --dir=dbdirectory
-h:指定mongodb的主机名和端口号,默认为localhost:27017。
-d:指定要还原的数据库名称。
--dir:指定备份数据的目录。
例如,要将/home/mongoback/test目录下的备份数据还原到本地的test2数据库,命令如下:
mongorestore -d test2 --dir=/home/mongoback/test
还原完成后,test2数据库将包含备份数据。
3.2 mongorestore选项说明
mongorestore命令支持一些选项,用于指定要还原的数据和集合等。下面是一些重要的选项说明:
--gzip:还原gzip压缩的备份数据。
--drop:还原数据时,删除目标数据库中已经存在的集合。
--nsInclude:只还原指定集合。
--nsExclude:排除还原指定集合。
--db:只还原指定数据库。
--excludeCollectionsWithPrefix:排除还原以指定前缀开头的集合。
4. 自动备份
要定期备份mongodb数据,可以使用crontab和shell脚本等方式来自动执行mongodump命令。以下是一个简单的备份shell脚本:
#!/bin/bash
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017
MONGODB_USER=admin
MONGODB_PASS=123456
BACKUP_PATH=/data/mongodb_backup
DAYS=7
TIMESTAMP=`date +%Y%m%d-%H%M%S`
BACKUP_NAME="mongodb-$TIMESTAMP"
mongodump --host $MONGODB_HOST --port $MONGODB_PORT --username $MONGODB_USER --password $MONGODB_PASS --out $BACKUP_PATH/$BACKUP_NAME
find $BACKUP_PATH -type d -mtime +$DAYS -exec rm -rf {} ;
该脚本备份了本地的mongodb数据库,将备份数据保存到/data/mongodb_backup目录下,并删除7天之前的备份数据。
5. 结论
备份是mongodb管理的重要环节,只有有效的备份措施才能保障数据的安全。通过命令行备份和恢复,我们可以方便地管理mongodb数据库的备份数据,也可以通过定时任务实现自动化备份。