Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

播种 mongorestore

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

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

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

  3. Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。

    显示项目支持页面。

2

您可以使用 Atlas 用户界面将 M0 免费套餐集群扩展M10+ 付费集群,也可以使用本节中的 mongodumpmongorestore 过程将数据从 M0 免费套餐集群复制到 M10+ 集群。

对于此过程,请使用最新稳定版本的mongodumpmongorestore

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

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

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

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

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

  3. Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。

    显示项目支持页面。

2

有关 之前的MongoDB版本的指导性最短停机时间迁移过程,请参阅副本集实时迁移。6.0

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

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

  • 如果要将mongorestore--oplogReplay选项一起使用,则必须从mongodump创建的dump目录中删除adminconfig目录。 adminconfig目录包含您无法使用mongorestore添加到 Atlas 集群的数据库用户信息。 使用mongorestore --nsExclude排除admin.system.*命名空间。

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

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

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

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

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

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

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

  3. Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。

    显示项目支持页面。

2

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

1

重要

Optional

如果您的源集群强制执行身份验证,则跳过此步骤。

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

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

例子

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

use admin
db.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"

mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \
--archive

注意

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

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

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

注意

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

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

3

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

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

  1. 在 Atlas 中,前往 Organization Access Manager 页面。

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

    2. 执行以下步骤之一:

      • 从导航栏的Access Manager菜单中选择Organization Access

      • 单击侧边栏中的 Access Manager(支持)。

      显示“组织访问经理”页面。

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

  3. 添加 Atlas admin 用户。

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

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

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

  3. 如果尚未出现,请单击侧边栏中的 Clusters(集群)。

    会显示集群页面。

5

单击集群菜单中的 Command Line Tools

6

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

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

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

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

  • 添加--archive

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

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.*"
mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \
--archive \
--nsExclude "admin.system.*"
7

重要

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

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

在您的首选文本编辑器中,使用竖线|操作符分隔mongodumpmongorestore命令。 根据您使用的连接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.*"
mongodump --uri "mongodb+srv://username:password@cluster0.example.mongodb.net" \
--archive \
| \
mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \
--archive \
--nsExclude "admin.system.*"

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

成功完成该过程后,使用 mongosh 连接到 Atlas 集群,然后验证过程结果。要了解操作方法,请参阅通过 mongosh 连接。

您必须更新应用程序,指向 Atlas 集群,然后才能恢复写操作。如需了解如何将应用程序连接到 Atlas,请参阅通过驱动程序连接

提示

另请参阅:

后退

mongormirror 版本