从可查询的传统备份中恢复集合
重要
传统备份已弃用
自 2020 年 3 月 23 日起,所有新集群只能使用云备份。
当升级到 5.0 时,如果备份系统当前设置为传统备份,则它会升级到云备份。在进行该升级后:
所有现有的传统备份快照仍然可用。根据您的保留策略,它们会随着时间的推移而过期。
Atlas 支持通过查询旧版备份快照来恢复collection。
重要
Atlas 不支持查询云备份。
您可以使用可查询备份 snapshot导出 collection 的数据并恢复到目标部署。 以下过程通过 Atlas 提供的隧道连接到可查询备份实例。
注意
您必须具有包含源集群和目标集群的 Atlas 项目的 Project Owner
角色,才能将数据从一个 Atlas 集群恢复到另一个集群。
先决条件
恢复期间的客户端操作
您必须确保目标 Atlas 集群在恢复期间不会收到客户端请求。 适用于以下使用案例:
如果计划恢复到同一数据库,则必须在恢复期间停止客户端操作。
如果计划恢复到其他数据库,则无需停止客户端应用程序。 在这种情况下,您可以恢复到新的 Atlas 集群,并在新部署运行后重新配置应用程序以使用该新集群。
步骤
使用mongodump
从可查询备份中导出单个集合。
- 要导出collection的数据,请执行以下操作:
包括以下连接到隧道的选项:
--port
设置为隧道的端口。--db
,设置为要导出的数据库的名称。--collection
设置为要导出的collection的名称。--out
设置为一个空目录,以输出数据转储。重要
确保运行
mongodump
的用户可以写入指定目录。
mongodump --port <port for tunnel> --db <single-database> --collection <collection-name> --out <data-dump-path> 例如,要连接到在端口
27020
上运行的隧道,以将collection中的数据从数据库转储到目录restaurants
test
/mydata/restoredata/
:mongodump --port 27020 --db test --collection restaurants --out /mydata/restoredata/ mongodump
将restaurants
集合数据输出到/mydata/restoredata/test/restaurants.bson
文件中。
使用mongorestore
恢复单个集合。
- 要恢复单个collection:
包括以下
mongorestore
选项:注意
要恢复到 Atlas 集群,我们建议您使用
--uri
选项连接 DNS 种子列表。--uri
设置为目标集群的连接字符串。--db
设置为目标数据库的名称。--collection
设置为目标collection的名称。
(可选)可以包含
--drop
选项,以便在集合已存在时删除目标集群中的集合。
mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db <destination-database> --collection <destination-collection> <data-dump-path/dbname/collection.bson> --drop
例如,要从 /mydata/restoredata/test/restaurants.bson
数据文件恢复到 test2
数据库中的新集合 rest2
:
mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db test2 --collection rest2 /mydata/restoredata/test/restaurants.bson --drop