参考 > 管理 > 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
和
。例如:--port
mongodump
mongodump
会写BSON持有通过访问数据的拷贝文件mongod
上的端口监听27017
的的mongodb.example.net
主机。有关更多信息,请参阅从非本地mongod实例创建备份。
要指定其他输出目录,可以使用以下选项:--out
or -o
要限制数据库转储中包含的数据量,可以指定--db
和
--collection
作为选项
mongodump
。例如:
此操作将在当前工作目录的子目录中创建一个myCollection
从数据库命名的集合的转储。test
dump/
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 --objcheck
mongorestore --drop
mongod
实例¶默认情况下,mongorestore
连接到在localhost接口和默认端口(27017
)上运行的MongoDB实例。如果要还原到其他主机或端口,请使用--host
和--port
选项。
如果还原到强制执行访问控制的实例,请同时包含the --username
和
--authenticationDatabase
。省略
提示输入密码的--password
选项mongorestore
: