对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

播种 mongorestore

注意

本页面适用于 Atlas Core 集群。要使用 mongodump 和 mongorestore 将数据加载到 Atlas Infinite 集群中,请参阅 从 MongoDB 部署恢复数据。

您可以使用 mongodump 和 mongorestore 将现有 MongoDB 独立集或副本集的数据作为 MongoDB Atlas 集群的种子。有关从现有 MongoDB 分片集群配置种子数据的指导,请联系 Atlas 支持部门:

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 单击导航栏中的 Support 图标。

  3. 单击 View plan(连接)。

显示“支持”页面。

2

虽然您可以使用Atlas 用户界面将免费集群(以前称为 M0)扩展到 M10+专用集群,但您也可以使用本节中的 mongodump 和 mongorestore 过程将数据从免费集群复制到一个 M10+集群。

对于此过程,请使用最新稳定版本的mongodump和mongorestore 。

为确保最新的迁移,请安排一个维护窗口,您可以在其中停止对源集群的所有写入。 在此过程的mongodump部分完成后,向源集群发出的任何写操作都不会迁移到目标集群。

如果无法在整个 mongodump 期间停止写入,请运行 mongodump --oplog 并使用 mongorestore --oplogReplay 来捕获和重放转储期间发生的写入。这将恢复源部署在 mongodump 完成时的快照。--oplog 选项只能与副本集一起使用。

注意

mongorestore当您将--oplogReplay 与 结合使用时,--nsExclude 会失败。如果使用 --oplogReplay,则从 mongorestore 命令中省略 --nsExclude,并从使用 mongodump --oplog 创建的 dump 目录中删除 admin 和 config 目录,取而代之。

mongorestore 完成数据恢复后,您必须将应用程序切换到目标Atlas 集群,然后才能恢复写入操作。要连接到Atlas 集群,请参阅连接到Atlas集群。

所需的总停机时间取决于多种因素,例如要迁移数据的大小以及源集群与 Atlas 之间的网络连接。如果您对延长的停机时间有任何疑问或顾虑,请联系 Atlas 支持部门:

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 单击导航栏中的 Support 图标。

  3. 单击 View plan(连接)。

显示“支持”页面。

2

Atlas 管理数据库用户创建。如果源集群强制执行身份验证:

  • 允许对主节点进行读取访问。

  • 如果您要使用 mongorestore 和 --oplogReplay 选项,则必须从 mongodump 创建的 dump 目录中删除 admin 和 config 目录。admin 和 config 目录包含您无法使用 mongorestore 添加到 Atlas 集群中的数据库用户信息。

您不能将任何现有用户或角色信息迁移到 Atlas。为目标 Atlas 集群创建适当的数据库用户,支持应用程序的使用模式。作为切换过程的一部分,更新应用程序,使用新的数据库用户。要了解更多信息,请参阅配置数据库用户。

此过程需要在源集群中的主机上运行mongodump和mongorestore 。 这些程序会占用 CPU 和内存等系统资源,可能会影响主机的性能。

在非系统使用高峰期或计划维护窗口期间运行此程序。如果来源是副本集,则可以在从节点的主机上运行此过程。停止写入集群后,在启动此过程之前,让从节点集群赶上主节点集群。

此过程使用Linux 管道将mongodump的输出流到mongorestore。如果mongorestore进程跟不上mongodump进程,您可能会看到管中断错误。

有关解决持续性管道中断错误的指导,请联系 Atlas 支持部门:

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 单击导航栏中的 Support 图标。

  3. 单击 View plan(连接)。

显示“支持”页面。

2

以下教程使用mongodump和mongorestore将数据从现有MongoDB cluster上传到Atlas集群:

1

如果源部署强制执行身份验证,则必须为此过程的一部分向数据库用户提供读取任何数据库的特权。 要了解有关数据库用户权限的更多信息,请参阅MongoDB 基于角色的访问控制。

如果不存在这样的用户,请在源 MongoDB 副本集中创建一个具有admin数据库备份角色的用户。

例子

在 mongosh 中运行以下命令,在 admin 数据库上创建 mySourceUser,并为其分配 backup 角色。对于副本集,必须针对主节点运行此命令。

use admindb.createUser( { user: "<mySourceUser>", pwd: "<mySourcePassword>", roles: [ "backup" ] })
2

根据您使用的连接字符串类型,将以下模板之一复制到您的首选文本编辑器中:

注意

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

mongodump --uri "mongodb://username:password@mongodb0.example.com:<Port>,mongodb1.example.com:<Port1>,mongodb2.example.com:<Port2>/?replicaSet=<ReplicaSetName>&authSource=admin" \ --archive

用副本集节点的信息替换主机示例。将 <ReplicaSetName> 替换为源副本集的名称。

对于独立运行的部署,请排除 replicaSet=<ReplicaSetName> 并仅指定独立运行的部署的主机名。例如,--uri "mongodb://standalone-mongod.example.net:27017"

注意

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

先不要运行此命令。修改模板后请继续下一步操作。

3

要针对Atlas 集群运行mongorestore,您必须在Atlas 集群中指定具有Atlas admin角色的数据库用户。

如果不存在该用户,则创建该用户:

  1. 在 Atlas 中,进入项目的 Database Access 页面。

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

    2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

    3. 在侧边栏中,单击 Security 标题下的 Database & Network Access。

      显示“数据库和网络访问”页面。

  2. 单击 Add New Database User(添加新的数据库用户)。

  3. 添加 Atlas admin 用户。

要了解有关用户管理的更多信息,请参阅配置数据库用户。

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

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

  3. 在侧边栏中,单击 Database 标题下的 Clusters。

会显示集群页面。

5

单击集群菜单中的 Command Line Tools。

6

Command Line Tools标签页的Binary Import and Export Tools部分显示一个可复制的模板,其中包含将mongorestore连接到 Atlas 集群所需的最低选项。

此模板包含某些选项的占位符值。 将模板复制粘贴到您的首选文本编辑器中, 然后进行以下修改:

  • password:将其替换为 username 中指定的用户的密码。该模板包括一个项目数据库用户,作为 username 的值。如果要以其他用户身份进行身份验证,请替换 username 的值,并在 password 中指定该用户的密码。

  • 添加--nsExclude并将其值设置为"admin.system.*" 。

根据使用的连接字符串类型,您的模板应类似于以下命令之一:

mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myRepl&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"
7

重要

确保运行 mongodump 和 mongorestore 的主机在项目 IP 访问列表中。

要查看项目 IP 访问列表,请单击侧边栏 Security 部分中的 Network Access。随后会显示 IP Access List 标签页。要了解更多信息,请参阅 IP 访问列表。

在您的首选文本编辑器中,使用竖线|操作符分隔mongodump和mongorestore命令。 根据您使用的连接string类型,最终命令应类似于以下命令之一:

mongodump --uri "mongodb://username:password@mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=sourceRS&authSource=admin" \ --archive \| \mongorestore --uri "mongodb://username:password@00.foo.mongodb.net:27017,01.foo.mongodb.net:27017,02.foo.mongodb.net:27017/?replicaSet=myAtlasRS&authSource=admin" \ --archive \ --ssl \ --nsExclude "admin.system.*"

从连接到源群集主机的终端 或 Shell 运行已完成的命令。

成功完成该过程后,使用 连接到您的Atlasmongosh 集群并验证该过程的结果。要学习;了解如何操作,请参阅通过mongosh连接到集群。

在恢复写入操作之前,您必须更新应用程序以点Atlas 集群。要学习;了解如何将应用程序连接到Atlas,请参阅通过客户端库连接到集群。

给本页内容打分