播种 mongorestore
您可以使用 mongodump
和mongorestore
使用现有 MongoDB 独立运行版或副本集的数据为 MongoDB Atlas 集群播种。有关从现有 MongoDB 分片集群配置种子数据的指导,请通过单击 Atlas UI 左侧导航栏中的 Support联系 Atlas 支持部门。
虽然您可以使用 Atlas 用户界面将M0
免费层级集群扩展到M10+
付费集群,但您也可以使用本节中的mongodump
和mongorestore
过程将数据从M0
免费层级集群复制到M10+
集群。
考虑因素
建议使用 mongodump
和 mongorestore
版本
对于此过程,请使用最新稳定版本的mongodump
和mongorestore
。
所需停机时间
为确保最新的迁移,请安排一个维护窗口,您可以在其中停止对源集群的所有写入。在此过程的mongodump
部分完成后,向源集群发出的任何写操作都不会迁移到目标集群。
mongorestore
完成数据恢复后,您必须将应用程序切换到目标 Atlas 集群,然后才能恢复写入操作。要连接到 Atlas 集群,请参阅连接到集群。
所需的总停机时间取决于多种因素,例如要迁移数据的大小以及源集群与 Atlas 之间的网络连接。如果您对延长的停机时间有任何疑问或顾虑,请点击 Atlas 用户界面左侧导航栏中的 Support(支持)联系 Atlas 支持部门。
集群安全性
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 UI 左侧导航栏中的 Support(支持)联系 Atlas 支持部门。
步骤
以下教程使用mongodump
和mongorestore
将数据从现有 MongoDB 集群上传到 Atlas 集群:
可选:在源副本集中创建数据库用户。
重要
Optional
如果您的源集群不强制执行身份验证,则跳过此步骤。
如果源部署强制执行身份验证,则必须为此过程的一部分向数据库用户提供读取任何数据库的特权。要了解有关数据库用户权限的更多信息,请参阅MongoDB 基于角色的访问控制。
如果不存在这样的用户,请在源 MongoDB 副本集中创建一个具有admin
数据库备份角色的用户。
在目标 Atlas 集群中设置数据库用户。
要针对 Atlas 集群运行mongorestore
,您必须在 Atlas 集群中指定具有Atlas admin
角色的数据库用户。
如果不存在该用户,则创建该用户:
如果尚未显示,请从导航栏的 Organizations(组织)菜单中选择所需的组织。
点击侧边栏中的 Access Manager,或点击导航栏中的 Access Manager,然后点击您的组织。
单击 Add New Database User(添加新的数据库用户)。
添加 Atlas admin 用户。
要了解有关用户管理的更多信息,请参阅配置数据库用户。
检索并修改 mongorestore
连接模板。
Command Line Tools标签页的Binary Import and Export Tools部分显示一个可复制的模板,其中包含将mongorestore
连接到 Atlas 集群所需的最低选项。
此模板包含某些选项的占位符值。 将模板复制粘贴到您的首选文本编辑器中, 然后进行以下修改:
password
:将其替换为username
中指定的用户的密码。该模板包括一个项目数据库用户,作为username
的值。如果要以其他用户身份进行身份验证,请替换username
的值,并在password
中指定该用户的密码。添加
--nsExclude
并将其值设置为"admin.system.*"
。
根据使用的连接字符串类型,您的模板应类似于以下命令之一:
运行mongodump
和mongorestore
。
重要
确保运行mongodump
和mongorestore
的主机位于项目IP 访问列表中。
要查看项目 IP 访问列表,请单击侧边栏 Security 部分中的 Network Access。随后会显示 IP Access List 标签页。
提示
另请参阅:
在您的首选文本编辑器中,使用竖线|
操作符分隔mongodump
和mongorestore
命令。根据您使用的连接字符串类型,最终命令应类似于以下命令之一:
从连接到源群集主机的终端 或 Shell 运行已完成的命令。
成功完成该过程后,使用mongosh
连接到您的 Atlas 集群并验证该过程的结果。要了解如何操作,请参阅通过mongosh
连接。
您必须更新应用程序,指向 Atlas 集群,然后才能恢复写操作。如需了解如何将应用程序连接到 Atlas,请参阅通过驱动程序连接。