Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

从可查询旧版备份恢复数据库

在此页面上

  • 先决条件
  • 步骤

重要

传统备份已弃用

自 2020 年 3 月 23 日起,所有新集群只能使用云备份。

当升级到 5.0 时,如果备份系统当前设置为传统备份,则它会升级到云备份。在进行该升级后:

  • 所有现有的传统备份快照仍然可用。 根据您的保留策略,它们会随着时间的推移而过期。

  • 您的备份策略将重置为默认计划。如果传统备份应用的是自定义备份政策,则须按照云备份文档中的步骤说明重新创建该政策。

Atlas 支持通过查询旧版备份快照来恢复数据库。

重要

Atlas 不支持查询云备份。

您可以使用可查询备份快照导出数据库的数据并恢复到目标部署。 以下过程通过 Atlas 提供的隧道连接到可查询备份实例。

重要

仅当恢复到同一数据库时,才必须在恢复期间停止客户端操作。

您必须确保目标 Atlas 集群在恢复期间不会收到客户端请求。 适用于以下使用案例:

  • 如果计划恢复到同一数据库,则必须在恢复期间停止客户端操作。

  • 如果计划恢复到其他数据库,则无需停止客户端应用程序。 在这种情况下,您可以恢复到新的 Atlas 集群,并在新部署运行后重新配置应用程序以使用该新集群。

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示该页,请从导航栏的 Project(项目)菜单中选择所需的项目。

  3. 单击侧边栏中的 Legacy Backup(支持)。

2

Legacy Backup页面上的Overview标签页列出了项目的集群。

  • 如果为集群启用了备份,则StatusActive

  • 如果已禁用集群备份,则StatusInactive

对于要查询其备份的部署,请单击Options列中的省略号并选择Query

您也可以单击View All Snapshots 查看其快照,然后单击所需快照的Query Actions列下的 。

3
  1. 选择要查询的快照,然后单击 Next

  2. Start 查询快照的进程。系统将提示您输入 Atlas 密码。

  3. 选择 Backup Tunnel 作为与可查询快照的连接方法。

  4. 选择您的Platform

  5. 单击 Download Backup Tunnel(连接)。

  6. 解压缩下载的文件。

  7. 打开终端或命令提示符,转到解压缩的<隧道>目录。运行可执行文件,启动隧道。

    隧道的默认端口是 27017。要更改端口,请使用 --local 标志,如下例所示:

    ./<tunnel executable> --local localhost:27020

    注意

    如果您更改端口,则必须在连接时包含端口信息。

4
要从数据库导出数据:

包括以下 mongodump选项以连接到隧道:

  • --port 设置为隧道的端口。

  • --db ,设置为要导出的数据库的名称。

  • --out 设置为一个空目录,以输出数据转储。

    重要

    确保运行 mongodump 的用户可以写入指定目录。

mongodump --port <port for tunnel> --db <single-database> --out <data-dump-path>

例如,要连接到在端口27020上运行的隧道,将数据从test数据库转储到/mydata/restoredata/目录:

mongodump --port 27020 --db test --out /mydata/restoredata/

mongodump 会将 test 数据库文件输出到 /mydata/restoredata/test/ 目录中。

如果mongodump不在$PATH中,请在运行命令时指定该工具的路径。

5
要恢复单个数据库,请执行以下操作:

包括以下 mongorestore 选项:

注意

要恢复到 Atlas 集群,我们建议您使用--uri选项通过 DNS 种子列表连接字符串进行连接。

  • --uri 设置为目标集群的连接字符串。

  • --db 设置为目标数据库的名称。

注意

如果密码包含特殊字符,则必须使用百分号编码。

(可选)可以包含--drop选项,以便在数据库已存在的情况下删除目标集群中的数据库。

mongorestore --uri "mongodb://username:password@mongodb0.example.com:<Port>,mongodb1.example.com:<Port1>,mongodb2.example.com:<Port2>" --ssl --db <destination database> <data-dump-path/database> --drop
mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db <destination database> <data-dump-path/database> --drop

注意

如果在 Ubuntu 18.04上使用mongodumpmongorestore ,则在使用带有--uri选项的SRV 连接字符串(采用mongodb+srv://形式)时,您可能会遇到cannot unmarshal DNS错误消息。 如果是这样,请改用以下选项之一:

  • 带有非 SRV 连接string--uri 选项(采用 mongodb:// 形式)

  • --host 选项指定直接连接的主机

例如,要从 /mydata/restoredata/test 目录恢复到新数据库 restoredTest

mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017" --ssl --db restoredTest /mydata/restoredata/test --drop

该示例假设目标副本集的主节点 (primary node in the replica set)mongos分片的端口27017

mongorestore --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" --db restoredTest /mydata/restoredata/test --drop
6

完成后,可以终止可查询实例:

  1. 单击左侧导航窗格中的Legacy Backup ,然后单击Restores & Downloads标签页。

  2. 将鼠标悬停在目标部署项的Status列上,然后单击Cancel

  3. 单击 Cancel Restore Job(连接)。

7

重新启动应用程序并确保其使用新的目标集群。

后退

查询快照

在此页面上