播种 mongorestore
您可以使用 mongodump
和 mongorestore
将现有 MongoDB 独立集或副本集的数据作为 MongoDB Atlas 集群的种子。有关从现有 MongoDB 分片集群配置种子数据的指导,请联系 Atlas 支持:
在 Atlas 中,转到 Project Support(项目集成)页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。
显示项目支持页面。
您可以使用 Atlas 用户界面将 M0
免费套餐集群扩展到 M10+
付费集群,也可以使用本节中的 mongodump
和 mongorestore
过程将数据从 M0
免费套餐集群复制到 M10+
集群。
Considerations
建议的 mongodump
和 mongorestore
版本
对于此过程,请使用最新稳定版本的mongodump
和mongorestore
。
所需停机时间
为确保最新的迁移,请安排一个维护窗口,您可以在其中停止对源集群的所有写入。 在此过程的mongodump
部分完成后,向源集群发出的任何写操作都不会迁移到目标集群。
在 mongorestore
完成数据恢复后,您必须将应用程序切换到目标 Atlas 集群,然后才能恢复写操作。要连接到 Atlas 集群,请参阅连接集群。
所需的总停机时间取决于多种因素,例如要迁移数据的大小以及源集群与 Atlas 之间的网络连接。如果您对延长的停机时间有任何疑问或顾虑,请联系 Atlas 支持部门:
在 Atlas 中,转到 Project Support(项目设置)页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。
显示项目支持页面。
集群安全性
Atlas 管理数据库用户创建。如果源集群强制执行身份验证:
允许对主节点进行读取访问。
如果要将
mongorestore
与--oplogReplay
选项一起使用,则必须从mongodump
创建的dump
目录中删除admin
和config
目录。admin
和config
目录包含您无法使用mongorestore
添加到 Atlas 集群的数据库用户信息。 使用mongorestore
--nsExclude
排除admin.system.*
命名空间。
您不能将任何现有用户或角色信息迁移到 Atlas。为目标 Atlas 集群创建适当的数据库用户,支持应用程序的使用模式。作为切换过程的一部分,更新应用程序,使用新的数据库用户。要了解更多信息,请参阅配置数据库用户。
性能
此过程需要在源集群中的主机上运行mongodump
和mongorestore
。 这些程序会占用 CPU 和内存等系统资源,可能会影响主机的性能。
在非系统使用高峰期或计划维护窗口期间运行此程序。如果来源是副本集,则可以在从节点的主机上运行此过程。停止写入集群后,在启动此过程之前,让从节点集群赶上主节点集群。
管道行为
此过程使用 Linux 管道 将mongodump
mongorestore
的输出流式传输到 。如果mongorestore
进程跟不上mongodump
进程,您可能会看到管道中断错误。
有关解决持续性管道中断错误的指导,请联系 Atlas 支持部门:
在 Atlas 中,转到 Project Support(项目设置)页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在 Projects(项目)菜单旁边,展开 Options(选项)菜单,然后单击 Project Support(项目设置)。
显示项目支持页面。
步骤
以下教程使用mongodump
和mongorestore
将数据从现有MongoDB cluster上传到Atlas集群:
在源副本集中创建数据库用户。
重要
Optional
如果您的源集群不强制执行身份验证,则跳过此步骤。
如果源部署强制执行身份验证,则必须为此过程的一部分向数据库用户提供读取任何数据库的特权。 要了解有关数据库用户权限的更多信息,请参阅MongoDB 基于角色的访问控制。
如果不存在这样的用户,请在源 MongoDB 副本集中创建一个具有admin
数据库备份角色的用户。
汇编 mongodump
命令。
根据您使用的连接字符串类型,将以下模板之一复制到您的首选文本编辑器中:
注意
要连接 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上使用mongodump
或mongorestore
,则在使用带有--uri
选项的SRV 连接字符串(采用mongodb+srv://
形式)时,您可能会遇到cannot unmarshal DNS
错误消息。 如果是这样,请改用以下选项之一:
带有非 SRV 连接string的
--uri
选项(采用mongodb://
形式)--host
选项指定直接连接的主机
注意
如果密码包含特殊字符,则必须使用百分号编码。
先不要运行此命令。修改模板后请继续下一步操作。
在目标 Atlas 集群中设置数据库用户。
要针对 Atlas 集群运行mongorestore
,您必须在 Atlas 集群中指定具有Atlas admin
角色的数据库用户。
如果不存在该用户,则创建该用户:
在 Atlas 中,前往 Organization Access Manager 页面。
如果尚未显示,组织从导航栏中的Organizations菜单。
执行以下步骤之一:
从导航栏的Access Manager菜单中选择Organization Access 。
单击侧边栏中的 Access Manager(支持)。
显示“组织访问经理”页面。
单击 Add New Database User(添加新的数据库用户)。
添加 Atlas admin 用户。
要了解有关用户管理的更多信息,请参阅配置数据库用户。
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未出现,请单击侧边栏中的 Clusters(集群)。
会显示集群页面。
检索并修改 mongorestore
连接模板。
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.*"
mongorestore --uri "mongodb+srv://username:password@cluster1.example.mongodb.net" \ --archive \ --nsExclude "admin.system.*"
运行 mongodump
和 mongorestore
。
重要
确保运行 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.*"
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,请参阅通过驱动程序连接。