参考 > 管理 > MongoDB备份方法 > 使用MongoDB工具备份和还原
本教程介绍了使用MongoDB随附的实用程序创建备份和还原数据的过程。
MongoDB地图集
MongoDB官方云服务MongoDB Atlas提供了2种完全托管的备份方法:
该mongodump和mongorestore与公用事业工作BSON数据转储,以及用于创建小型部署的备份有用。对于弹性备份和非破坏性备份,请使用文件系统或块级磁盘快照功能,例如MongoDB备份方法
文档中介绍的方法。
注意
mongodump并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
由于mongodump并mongorestore通过与正在运行的交互操作mongod例如,他们可以影响您运行的数据库的性能。这些工具不仅会为正在运行的数据库实例创建流量,还会迫使数据库通过内存读取所有数据。当MongoDB读取不经常使用的数据时,它将驱逐出更频繁访问的数据,从而导致数据库常规工作负载的性能下降。
使用MongoDB的工具备份数据时,请考虑以下准则:
mongodump,并mongorestore为您的使用情况是不可接受的。--oplog在操作期间捕获传入的写操作,mongodump以确保备份反映一致的数据状态。也可以看看
MongoDB备份方法和 MongoDB Cloud Manager备份文档 ,以获取有关备份MongoDB实例的更多信息。此外,请考虑以下有关MongoDB导入/导出工具的参考文档:
该mongorestore和mongodump与公用事业工作
BSON数据转储,以及用于创建小型部署的备份有用。对于弹性备份和非破坏性备份,请使用文件系统或块级磁盘快照功能,例如MongoDB备份方法文档中介绍的方法。
如果其他备份方法(例如MongoDB Cloud Manager或 文件系统快照) 不可用,请使用这些工具进行备份 。
mongodump注意
mongodump并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
要mongodump针对启用了访问控制的MongoDB部署
运行,您必须具有find为每个要备份的数据库授予操作权限的特权。内置backup角色提供了执行所有数据库备份所需的特权。
在版本3.2.1中更改:该backup角色提供了其他特权,可以备份system.profile
使用数据库概要分析运行时存在的集合。以前,用户需要
read访问此集合。
mongodump操作¶该mongodump实用程序通过连接到正在运行的服务器来备份数据mongod。
该实用程序可以为整个服务器,数据库或集合创建备份,也可以使用查询仅备份集合的一部分。
当您mongodump不带任何参数运行时,该命令将连接到localhost端口上本地系统(例如)上的MongoDB实例,27017并dump/在当前目录中创建一个数据库备份。
要从mongod同一计算机上的默认端口上运行的实例备份数据27017,请使用以下命令:
您还可以指定应该连接的MongoDB实例
的--host和
。例如:--portmongodump
mongodump会写BSON持有通过访问数据的拷贝文件mongod上的端口监听27017的的mongodb.example.net主机。有关更多信息,请参阅从非本地mongod实例创建备份。
要指定其他输出目录,可以使用以下选项:--out
or -o
要限制数据库转储中包含的数据量,可以指定--db和
--collection作为选项
mongodump。例如:
此操作将在当前工作目录的子目录中创建一个myCollection
从数据库命名的集合的转储。testdump/
mongodump如果备份文件文件夹中存在输出文件,则它们将被覆盖。在mongodump多次运行命令之前,请确保不再需要输出文件夹中的文件(默认为dump/文件夹),或者重命名文件夹或文件。
mongorestore注意
mongodump并且不能作为正在进行分片事务的4.2+分片群集的备份策略的一部分,因为使用创建的备份
不能保持分片事务的原子性保证。mongorestore
mongodump
对于具有正在进行中的分片事务的4.2+分片群集,请使用以下协调的备份和还原过程之一,该过程 确实维护了跨分片事务的原子性保证:
要将数据还原到已启用访问控制的MongoDB部署中,该restore角色提供必要的特权,以便从备份中还原数据(如果数据不包括system.profile
收集数据并且您mongorestore未--oplogReplay选择该
选项便可以运行)。
如果备份数据包括system.profile收集数据,或者您使用进行运行
--oplogReplay,则需要其他特权:
system.profile |
如果备份数据包括 内置角色 |
--oplogReplay |
要与之一起运行 仅授予必须 |
mongorestore操作¶该mongorestore实用程序将还原由创建的二进制备份
mongodump。默认情况下,mongorestore在dump/目录中查找数据库备份。
该mongorestore实用程序通过mongod直接连接到正在运行的设备来还原数据。
mongorestore 可以还原整个数据库备份或备份的子集。
注意
3.6版的新功能:
默认情况下,所有MongoDB集合都具有 UUID。当MongoDB还原集合时,还原的集合将保留其原始UUID。还原不存在UUID的集合时,MongoDB会为已还原的集合生成UUID。
有关集合UUID的更多信息,请参见 集合。
要用于mongorestore连接到主动设备
mongod,请使用以下原型形式的命令:
考虑以下示例:
在这里,mongorestore将dump-2013-10-25目录中的数据库备份导入到mongod默认端口上在localhost接口上运行的实例27017。
如果您使用创建的数据库转储--oplog选项,以确保点对点即时快照,调用
mongorestore与
--oplogReplay
选项,如下面的例子:
您还可以考虑
在将对象插入数据库中时使用该选项检查对象的完整性,或者可以考虑在从备份还原之前从数据库中删除每个集合的选项。mongorestore --objcheckmongorestore --drop
mongod实例¶默认情况下,mongorestore连接到在localhost接口和默认端口(27017)上运行的MongoDB实例。如果要还原到其他主机或端口,请使用--host和--port选项。
如果还原到强制执行访问控制的实例,请同时包含the --username和
--authenticationDatabase。省略
提示输入密码的--password选项mongorestore: