MongoDB 数据库基础 之 mongodb的备份与恢复

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数据库的备份数据,也可以通过定时任务实现自动化备份。

数据库标签