MongoDB数据文件备份与恢复
备份与恢复数据对于管理任何数据存储系统来说都是非常重要的。
1、冷备份与恢复——创建数据文件的副本(前提是要停止MongoDB服务器),也就是直接copy
MongoDB将所有数据都存储在数据目录下,默认是/data/db/(Windows下是C:\data\db\),启动MongoDB时也可以用--dbpath指定我们自己设置的数据存储目录。
备份MongoDB数据:只要简单的创建数据存储目录的副本就可以了,直接copy一份。
恢复MongoDB数据:在MongoDB启动时用--dbpath指定数据存储目录副本位置。
在服务器运行的情况下直接copy是有风险的,可能copy出来时,数据已经遭到破坏,这种方式下创建数据目录的副本需要在关闭MongoDB服务器的前提下,数据目录中存储的就是关闭那一刻数据的快照,在服务器重新启动之前可以复制目录作为备份。
2、热备份与恢复——MongoDB bin目录下自带的mongodump和mongorestore工具
mongodump是一种能在运行时备份的方法。该命令详细参数如下:

mongorestore获取mongodump的输出结果,并将备份的数据插入到运行的MongoDB实例中实现数据恢复。该命令详细参数如下:

mongodump(备份)与mongorestore(恢复)示例:
1、创建mongodb数据库:

2、mongodump备份mongodb数据库:

-d指定需要备份的数据库,-o指定备份位置,上述表示备份mongodb数据库到与当前mongodump命令同一位置backup目录下

3、mongorestore恢复mongodb数据库,并重命名为mongodb2数据库:

-d指定要恢复为的数据库,可以将备份的数据库恢复到与原来不同名的数据库中,这里为mongodb2,--drop表示在恢复前删除集合(若存在)。否则,数据就会与现有集合数据合并,可能会覆盖一些文档。
恢复之后数据存储目录中的数据:

此时在MongoDB shell下可以查看到mongodb2数据库,及其中的mongodb集合和数据文档。

3、fsync和锁方式备份
上面的1,2两点都不能保证备份时获取数据的实时性,因为我们在备份的时候可能还有数据在内存缓冲区中没有写入到磁盘,MongoDB给我们提供了fsync+lock机制就能满足我们的需求。
fsync(注意,只支持1.3+版本):该命令会强制服务器将所有缓冲区中的内容写入磁盘,
让我们可以实时性获取数据。
lock(写入锁):通过lock给数据库一个写入锁,阻止对数据库的进一步写入操作,其他实例的写入操作全部被阻
塞,直到释放锁为止。写入锁是让fsync在备份时发挥作用的关键。
1、在shell中强制执行fsync并获得lock(写入锁),在备份之前fsync并加锁:
fsync并加锁: db.runCommand({"fsync":1,"lock":1}),该命令用于admin db。

该操作强制服务器将所有缓冲区中的内容写入磁盘并对数据库上锁,不允许执行写数据操作,一般在执行数据库备份时有用。
2、db.$cmd.sys.unlock.findOne():释放锁,备份好了就要解锁,该命令用于admin db。

3、db.currentOp():查看当前锁状态
已经解锁状态: www.2cto.com

上锁状态:

其中,fsyncLock为1表示MongoDB的fsync进程(负责将写入改变同步到磁盘)不允许其他进程执行写数据操作
fsync命令能非常灵活的备份,不用停掉服务器,也不用牺牲备份的实时特性。要付出的代价就是一些写入操作被暂时阻塞了。 唯一不耽误读写还能保证实时快照的备份方式就是通过“从服务器”备份。
4、从属备份
在从服务器上备份是MongoDB推荐的备份方式
相关推荐
MongoDB 是一个高性能、开源的文档型数据库,广泛应用于各种规模的企业和项目中。...通过上述方法,你可以有效地管理和保护MongoDB的分片和复制集数据,确保在系统出现问题时能够快速恢复,从而保障业务的连续性。
通过本文介绍的方法,你可以轻松地实现MongoDB数据的导入导出、备份恢复等功能。这对于日常维护、数据迁移、故障恢复等场景都非常有用。掌握这些基本操作可以帮助你更好地管理和保护你的数据资产。
使用场景及目标:帮助用户掌握 MongoDB 数据备份与恢复的基本技能,保障数据库系统的稳定性和数据的安全性,特别是在面对突发状况时能够迅速采取行动保护重要数据。 其他说明:在实际操作前需要确保 MongoDB 服务已...
**MongoDB数据同步与增量备份.pptx 和 MongoDB数据同步.pptx** 可能是关于如何执行MongoDB数据同步和增量备份的演示文稿,可能包含了具体的案例和操作流程,对于理解相关概念和操作流程非常有价值。 **tokusync** ...
MongoDB提供了`mongodump`和`mongorestore`命令行工具来进行数据备份与恢复。`mongodump`用于生成数据库的二进制备份,而`mongorestore`则用于从这些备份中恢复数据。 1. **基础全量备份**:执行全量备份是创建增量...
MongoDB 秒级备份恢复方案 ...本资源总结了 MongoDB 秒级备份恢复方案的技术创新和解决方案,包括备份恢复方案的重要性、备份策略、逻辑备份 vs 物理备份、增量备份原理、问题与挑战和解决方案等内容。
`mongodump`将数据库的数据和元数据转换为BSON格式的文件,便于存储和恢复。在`mongodump_oplog.py`脚本中,这一步可能包括连接到MongoDB服务器,指定需要备份的数据库和集合,然后调用`mongodump`命令执行备份。 ...
### MongoDB与Oracle11的备份还原命令详解 #### MongoDB备份与还原 **一、MongoDB备份命令** MongoDB提供了一套完整的工具集用于备份数据库,其中`mongodump`是进行备份的主要工具。 ``` mongodump [-u ] [-p ] ...
"基于Mysql和MongoDB的协同备份方案研究与实现" 本文研究了基于Mysql和MongoDB的协同备份方案,旨在解决两个数据库之间的数据备份问题。通过实践网站备份案例,介绍了基于Mysql和MongoDB的协同备份方案和实现。内容...
物理备份通过直接拷贝文件系统中的数据文件来完成备份,效率相对较高。在恢复时,可以直接使用这些拷贝的文件。 此外,阿里云MongoDB还提供了MongoDB Sharding架构下的备份与恢复。Sharding 是MongoDB的一种分布式...
mongodb备份方式有三种:文件快照方式、复制数据文件方式和使用mongodump方式。 一、备份单台mongodb 1. 文件快照方式 这是最简单的备份方法。但是,需要系统文件支持快照和mongod必须启用journal。如果都符合这...
在运维MongoDB的过程中,数据的备份与恢复是至关重要的环节,以确保数据的安全性和业务连续性。本篇文章将详细讲解MongoDB的常用备份工具`mongoexport`、`mongoimport`以及`mongodump`和`mongorestore`的使用方法。 ...
MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性和高性能而受到广大开发者的青睐...通过理解并熟练掌握MongoDB的备份与恢复操作,你可以确保在面临数据丢失或系统故障时,能够迅速恢复服务,保护业务连续性。
本文将深入探讨 MongoDB 的无参数备份与恢复以及带参数备份与恢复的实例。 1. 无参数备份与恢复 无参数备份是指不指定特定选项的备份操作。在 MongoDB 中,可以使用 `mongodump` 命令进行无参数备份。当在本地启动...
**定义**: 冷备份是指在MongoDB服务完全停止的情况下进行数据文件的备份。这种方式相对简单且易于实施,但由于需要停止数据库服务,因此可能会对在线服务造成一定的影响。 - **备份过程** - 首先,确保MongoDB服务...
### MongoDB数据还原 当需要恢复备份的数据时,可以使用`mongorestore`命令。基本语法如下: ```bash mongorestore -h <hostname> -u <username> -p <password> -d <database_name> --dir ``` - `-h`: 同`...
- **MongoDB数据恢复**: - 恢复全部数据库: ```bash mongorestore --drop --directoryPerDb /home/backup/mongod_bak/mongod_bak_now/2018_02_28_050502/ ``` - 恢复单个数据库: ```bash mongorestore --...
Mongodb 自带了mongodump和mongorestore这两个工具来实现对数据的备份和恢复。 mongodump能够在Mongodb运行时进行备份,它的工作原理是对运行的Mongodb做查询,然后将所有查到的文档写入磁盘。但是存在的问题时使用...
如果需要恢复数据,可以使用 mongorestore 工具,将备份的文件加载回MongoDB实例。这个过程相对简单,只需指定备份文件的目录和目标数据库。例如:`mongorestore --db myRestoredDatabase /path/to/backup/directory...
`mongodump`和`mongorestore`用于数据备份与恢复;`db.copyDatabase()`和`mongoshard`命令则用于数据库的复制和分片操作。 在提供的`mongodb_demo.php`文件中,我们可以看到PHP对MongoDB的操作示例。PHP的MongoDB...