恢复单个数据库或集合
要从快照中恢复单个数据库或集合(或特定文档),可以使用可查询备份导出单个数据库或集合以恢复到目标部署。
Considerations
在尝试恢复之前,请确保目标部署的主机有足够的存储空间用于恢复文件和已恢复的数据库,以及用于数据集增长的额外空间。使用 db.stats() 查找当前数据库大小。
重要
使用最新版本的 MongoDB 数据库工具,包括 mongodump
和 mongorestore
。使用最新版本的 mongosh
。
旧版本的mongodump
存在一个问题,可能会导致集合选项中的键按错误顺序转储。 要了解更多信息,请参阅 工具 -3411 。
从可查询备份恢复数据库或集合
可以使用可查询备份快照导出数据库或集合的数据,然后恢复到目标部署。以下过程通过 Cloud Manager 提供的隧道连接到可查询备份实例 [1]。
打开可查询快照的备份隧道。
选择要查询的快照,然后单击 Next。
Start 查询快照的进程。您将收到双因素验证的提示。
选择 Backup Tunnel 作为与可查询快照的连接方法。[1]
选择您的平台并进行下载。
解压缩下载的文件。
注意
等待挂载可查询快照,然后再继续。 快照挂载时间取决于快照的大小。 要验证快照是否已挂载,请执行以下操作:
在MongoDB Cloud Manager中, Go项目的 Continuous Backup 页面。
如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
单击侧边栏中的 Continuous Backup(支持)。
显示“持续备份”页面。
选择 Restore History 标签页。
挂载快照时, Status列会报告挂载操作的日期和时间。
打开终端或命令提示符,转到解压缩的<隧道>目录。运行可执行文件,启动隧道。
隧道的默认端口是
27017
。要更改端口,请使用--local
标志,如下例所示:./<tunnel executable> --local localhost:27020 注意
如果您更改端口,则必须在连接时包含端口信息。
使用mongodump
从可查询备份中导出单个数据库或集合。
- 要导出数据库的数据,
mongodump --port <port for tunnel> --db <single-database> --out <data-dump-path> - 要导出集合的数据,
包括以下连接隧道的选项 [1]:
--port
设置为隧道的端口。--db
,设置为要导出的数据库的名称。--collection
用于单个集合。--out
设置为一个空目录,以输出数据转储。重要
确保运行
mongodump
的用户可以写入指定目录。
mongodump --port <port for tunnel> \ --db <single-database> \ --collection <collection-name> \ --out <data-dump-path> 例子
要连接到在端口
27020
上运行的隧道,以将restaurants
集合中的数据从test
数据库转储到/mydata/restoredata/
目录,请执行以下操作:mongodump --port 27020 \ --db test \ --collection restaurants \ --out /mydata/restoredata/ mongodump
将restaurants
集合数据输出到/mydata/restoredata/test/restaurants.bson
文件中。
使用mongorestore
恢复单个数据库或集合。
- 要恢复单个数据库,
包括以下
mongorestore
选项:或者,如果数据库已经存在,您可以添加
--drop
,以删除目标集群中的数据库。
mongorestore --port <port> --db <destination database> <data-dump-path/database> --drop
例如,要从 /mydata/restoredata/test
目录恢复到新数据库 restoredTest
:
mongorestore --port 27017 --db restoredTest /mydata/restoredata/test --drop
该示例假设目标副本集的主节点或目标分片集群的 mongos
监听端口 27017
。
- 若要恢复单个集合,
包括以下
mongorestore
选项:或者,如果集合已经存在,您可以添加
--drop
以删除目标集群中的集合。
mongorestore --port <port> --db <destination database> --collection <collection-name> <data-dump-path/dbname/collection.bson> --drop
例如,要从 /mydata/restoredata/test/restaurants.bson
数据文件恢复到 test2
数据库中的新集合 rest2
:
mongorestore --port 27017 --db test2 --collection rest2 /mydata/restoredata/test/restaurants.bson --drop
该示例假设目标副本集的主节点或目标分片集群的 mongos
监听端口 27017
。
[1] | (1, 2, 3, 4) 另外,您也可以使用提供的 X.509 PEM 文件直接连接到可查询备份,而不是通过隧道连接。如果直接连接到可查询备份,则必须指定主机名和端口、TLS/SSL 选项和 X.509 证书。 |