加载中...

MongoDB数据备份和恢复


1.1 备份概述

mongodb数据备份和还原主要分为二种,一种是针对于库的mongodumpmongorestore,一种是针 对库中表的mongoexportmongoimport

mongodump备份的原理是通过一次查询获取当前服务器快照,并将快照写入磁盘中,因此这种方式保 存的也不是实时的。在获取快照后,服务器还会有数据写入,为了保证备份的安全,可以利用fsync锁使 服务器数据暂时写入缓存中。

mongodb备份恢复方式通常有以下三种:

  1. 文件快照方式
  2. 复制数据文件方式
  3. 使用mongodumpmongorestore方式

1.2 文件快照方式

此方式相对简单,需要系统文件支持快照和mongod必须启用journal

可以在任何时刻创建快照。 恢复时,确保没有运行mongod,执行快照恢复操作命令,然后启动mongod进程,mongod重放 journal日志。

1.3 复制文件方式

直接拷贝数据目录下的一切文件,但是在拷贝过程中必须阻止数据文件发生更改。因此需要对数据库 加锁,以防止数据写入。

db.fsyncLock() #锁定,将阻塞写入操作,并将脏数据刷新到磁盘上,确保数据 一致。
cp -R /data/db/* /backup #拷贝数据文件到备份目录下 
db.fsyncUnlock() #文件复制完成后,对数据库进行解锁,允许写操作 
#注意: 在执行db.fsyncLock()和db.fsyncUnlock()时,不能关闭当前的shell窗口,否则可能无法 连接而需要重新启动mongod服务。 恢复时,确保mongod没有运行,清空数据目录,将备份的数据拷贝到数据目录下,然后启动mongod 
cp -R /backup/* /data/db/ 
mongod -f mongod.conf

1.4 Mongodump数据备份

Mongodb中我们使用mongodump命令来备份MongoDB数据。

该命令可以导出所有数据到指定目录 中。 mongodump命令可以通过参数指定导出的数据量级转存的服务器。

命令格式如下

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径

1.5 Mongorestore数据恢复

Mongodb中我们使用mongorestore命令来恢复MongoDB数据。该命令可以从指定目录恢复相应数据。

命令格式如下

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存储路径

1.6 定时备份脚本

定时任务进行每天备份

#!/bin/sh
DUMP=mongodump
OUT_DIR=/data/backup/mongod/tmp
TAR_DIR=/data/backup/mongod
DATE=`date +%Y_%m_%d_%H_%M_%S`
DB_USER=test
DB_PASS=test
DATABASE=test
DAYS=14
TAR_BAK="mongod_bak_$DATE.tar.gz"
cd $OUT_DIR
rm rf $OUT_DIR/
mkdir p $OUT_DIR/$DAT
$DUMP -h 192.168.0.135 --port 27017 -u $DB_USER -p $DB_PASS -d $DATABASE -o $OUT_DIR/$DATE
tar zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
find $TAR_DIR/ -mtime +$DAYS -delete
30 02 * * * sh /root/mongod_bak.sh

文章作者: huhuhahei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 huhuhahei !
评论
  目录