Docs 菜单
Docs 主页
/
MongoDB 阿特拉斯
/ / /

将分片集群实时迁移(拉取)到 Atlas(MongoDB 6.0.13 之前的版本)

在此页面上

  • 限制
  • 必需的访问权限
  • 先决条件
  • 注意事项
  • 迁移分片集群
  • 迁移支持

Atlas 可以使用实时迁移过程 将源分片集群提取到 Atlas 集群。Atlas 会从源集群同步到目标集群, 直到您将应用程序转换到目标 Atlas 集群。

到达以下过程中的转换步骤后,请停止向源集群写入数据, 具体方法为停止应用程序实例, 将其指向 Atlas 集群,然后重新启动。

  • 请勿使用此页面上的程序将分片集群实时迁移到 MongoDB 6 。 0 。 13或更高版本。要了解更多信息,请参阅实时迁移(拉取)MongoDB 6 。 0 。 13 + 或7 。 0 。 8 + 集群到 Atlas。

  • 如果源集群和目标集群运行的是 MongoDB 6 . 0 。 13或更高版本,您可以使用此过程实时迁移到 Atlas。

  • 要实时迁移副本集,请参阅将副本集实时迁移(拉取)到 Atlas。

  • 您不能将全球集群用作实时迁移的目标。

  • 实时迁移不支持源集群或目标集群的VPC 对等互连私有端点

  • 在实时迁移期间,Atlas 会禁用主机警报。

要实时迁移数据,您必须拥有对 Atlas 的 Project Owner访问权限。

拥有 Organization Owner 访问权限的用户必须将自己作为 Project Owner 添加到项目中。

  • 从 MongoDB 4.4 或更早版本迁移到运行 MongoDB 5.0 或更高版本的 Atlas 集群时,请从您的集合中删除所有 geoHaystack 索引

  • 如果源集群使用身份验证运行,请为 Atlas 指定每个分片配置服务器副本集上都存在的用户。 用户必须具有以下权限:

    • 停止或启动分片集群负载均衡器。

    • 读取主机上的所有数据库和集合。

    • 读取主机上的 oplog。

要了解更多信息,请参阅源集群安全性。

重要

源集群就绪情况

为帮助确保数据迁移顺利进行,源集群应符合所有生产集群建议。在开始实时迁移过程之前,请检查操作清单生产说明

Atlas 实时迁移(提取)支持以下迁移路径:

Source Sharded Cluster
MongoDB Version
Destination Atlas Sharded Cluster
MongoDB Version
5.0
5.0

注意

如果源集群和目标集群运行的是 MongoDB 6 . 0 。 13或更高版本,您可以使用此过程实时迁移到 Atlas。

对于分片集群,源集群和目标集群上的主要 MongoDB 版本必须完全相同。 完整版5.0.x中的主要 MongoDB 版本 版本为5.0

为以下组件配置网络权限:

源集群的防火墙都必须授予 MongoDB 实时迁移服务器对源集群的访问权限。

Atlas 实时迁移过程 通过 MongoDB 控制的实时迁移服务器传输数据流。Atlas 会在实时迁移过程中 提供 MongoDB 实时迁移服务器的 IP 范围。 授予这些 IP 范围访问源集群的权限。这样, MongoDB 实时迁移服务器就可以连接到源集群。

注意

如果贵组织有严格的网络要求,且您无法启用 MongoDB 实时迁移服务器所需的网络访问权限,请参阅将社区部署实时迁移到 Atlas

Atlas 允许从添加到项目 IP 访问列表的主机连接到集群。将应用程序主机的 IP 地址或 CIDR 区块添加到项目 IP 访问列表中。在开始迁移过程之前执行此操作。

Atlas 会将 MongoDB 迁移服务器的 IP 地址 临时添加到项目 IP 访问列表中。迁移过程中, 无法编辑或删除此条目。过程完成后, Atlas 会删除此条目。

要了解如何向 Atlas IP 访问列表添加条目,请参阅配置 IP 访问列表条目

启动实时迁移过程之前, Atlas 会对源集群和目标集群执行一系列验证检查。

  • 源集群必须是分片集群。

    如果源是副本集集群,请先使用拉取式实时迁移将集群迁移到 Atlas 副本集,然后将集群扩展到分片集群。

    如果源是单节点,请先将单节点转换为副本集,然后再使用拉取式实时迁移。然后将集群扩展到分片集群。

  • 源集群必须使用 CSRS(配置MongoDB Server副本集)。 请参阅副本集配置服务器。

  • Atlas 必须连接到源集群中每个节点的主机名和端口。

  • Atlas 必须能够停止和启动源集群上的“分片集群负载均衡器”。

  • 源集群具有与目标集群相同的特征兼容性版本主要 MongoDB 版本。完整版5.0.x中的主要 MongoDB 版本 版本为5.0

    要检查源集群中主机的功能兼容性版本,请从mongosh运行以下命令:

    db.runCommand( { getParameter : 1, "featureCompatibilityVersion" : 1 } )

    使用setFeatureCompatibilityVersion数据库命令根据需要设置featureCompatibilityVersion标志。

  • 目标 Atlas 分片集群的分片数量必须与源分片集群相同。

各种内置角色提供了足够的权限。例如:

  • 对于源集群,用户必须拥有 readAnyDatabaseclusterMonitorbackup 角色。

    要验证将运行实时迁移过程的数据库用户是否具有这些角色,请在 admin 数据库上运行 db.getUser() 命令。

    use admin
    db.getUser("admin")
    {
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "roles" : [
    {
    "role" : "backup",
    "db" : "admin"
    },
    {
    "role" : "clusterMonitor",
    "db" : "admin"
    }
    {
    "role" : "readAnyDatabase",
    "db" : "admin"
    }
    ]
    } ...

    此外,源集群的数据库用户必须具有读取 admin 数据库的 oplog 的角色。如需了解更多信息,请参阅 Oplog 访问权限

  • 对于运行 MongoDB 3.4 的源集群,用户至少必须拥有 clusterMonitorreadAnyDatabase 角色。例如:

    use admin
    db.createUser(
    {
    user: "mySourceUser",
    pwd: "mySourceP@$$word",
    roles: [ "clusterMonitor", "readAnyDatabase" ]
    }
    )
  • 对于运行 MongoDB 3.2 的源集群,用户必须至少拥有 clusterManagerreadAnyDatabase 角色,以及对 local 数据库的读取权限。为此,需要一个自定义角色,而您可使用以下命令创建该角色:

    use admin
    db.createRole(
    {
    role: "migrate",
    privileges: [
    { resource: { db: "local", collection: "" }, actions: [ "find" ] }
    ],
    roles: ["readAnyDatabase", "clusterManager"]
    }
    )
    db.createUser(
    {
    user: "mySourceUser",
    pwd: "mySourceP@$$word",
    roles: [ "migrate" ]
    }
    )
  • 对于运行 MongoDB 2.6 或 3.0 的源集群,用户必须至少拥有 readAnyDatabase 角色。例如:

    use admin
    db.createUser(
    {
    user: "mySourceUser",
    pwd: "mySourceP@$$word",
    roles: [ "readAnyDatabase" ]
    }
    )

根据实时迁移过程提示指定 Atlas 用户名和密码。

Atlas 仅支持使用 SCRAM 连接到强制执行身份验证的源集群。

MongoDB 3.0 开始支持 SCRAM 身份验证。如果源集群 运行的是 MongoDB 2.6,则可以使用拉动式实时迁移进行迁移, 而无需启用 SCRAM 身份验证。

提示

要在迁移时隐藏凭据,可考虑在源群集上添加一个临时用户,并赋予其迁移所需的最低权限,然后在完成迁移过程后删除该用户。

向 Atlas 进行任何提取式实时迁移时, Atlas 会管理运行实时迁移的服务器,并将数据从源集群发送到目标集群。

MongoDB 采取以下措施来保护您的数据在传输到 Atlas 过程中的 完整性和保密性:

  • MongoDB 会对 Atlas 托管的实时迁移服务器和目标集群之间的传输数据进行加密。如果需要对源集群和 Atlas 托管的迁移服务器之间传输的数据进行加密,请在源集群上配置 TLS

  • MongoDB 保护对 Atlas 托管的迁移服务器实例的访问, 就像保护对 Atlas 其他部分的访问一样。

  • 在需要干预以调查和恢复关键服务的极少数情况下,MongoDB 遵循最低权限原则,仅授权一小部分有权限的用户在修复关键问题所需的最短时间内访问 Atlas 集群。MongoDB 要求这些用户使用 MFA 登录 Atlas 集群,并通过堡垒主机建立 SSH 连接。授予此类特权用户访问权限需要获得 MongoDB 高级管理层的批准。MongoDB 不允许任何其他 MongoDB 人员访问您的 MongoDB Atlas 集群。

  • MongoDB 仅允许将特权用户帐户用于特权活动。要执行非特权活动,特权用户必须使用单独的帐户。特权用户帐户不能使用共享凭据。特权用户帐户必须遵守 Atlas 安全白皮书第 4.3.3 节所述的密码要求。

  • 您可以在 Atlas 中限制包括特权用户在内的所有 MongoDB 人员访问集群。如果您选择限制此类访问,而 MongoDB 认为该访问对于解决支持问题是必要的,则 MongoDB 必须首先请求您的许可,然后您可以决定是否临时恢复特权用户的访问权限,恢复时间最长不超过 24 小时。您可以随时撤销授予 24 小时临时访问权限。启用此限制可能会导致响应和解决支持问题的时间增加,从而对 Atlas 集群的可用性产生负面影响。

  • MongoDB 每季度审查一次特权用户访问授权。 此外,MongoDB 还会在不再需要特权用户访问权限时取消其访问权限, 包括在该特权用户更换角色或离开公司后 24 小时内 取消其访问权限。我们还会记录 MongoDB 人员对 Atlas 集群的 任何访问权限,并将审核日志保留至少六年, 其中包括时间戳、行为者、操作和输出。MongoDB采用 自动和手动审查相结合的方式来扫描这些审核日志。

要了解有关 Atlas 安全的更多信息,请参阅Atlas 安全白皮书。请特别查看“MongoDB 人员访问 MongoDB Atlas 集群”部分。

如果您的 MongoDB 部署包含的索引的键超过索引键限制,则在开始实时迁移过程之前,请修改索引,使其不包含过大的键。

提取实时迁移期间,如果源集群不对数据使用 TLS 加密, 则从源集群到 Atlas 的流量不会加密。 开始提取实时迁移过程之前, 确定是否可以接受这种情况。

Atlas 不会将任何用户或角色数据迁移到目标集群。

如果源集群不使用身份验证,则必须在 Atlas 中创建用户, 因为 Atlas 不支持在没有身份验证的情况下运行。

如果源集群强制执行身份验证,则必须重新创建应用程序在目标 Atlas 集群上使用的凭证。Atlas 使用 SCRAM 进行用户身份验证。如需了解如何在 Atlas 中创建数据库用户,请参阅“配置数据库用户”。

MongoDB 3.0 开始支持 SCRAM 身份验证。如果源集群 运行的是 MongoDB 2.6,则可以使用拉动式实时迁移进行迁移, 而无需启用 SCRAM 身份验证。

Atlas 实时迁移在过程开始时停止源集群上的分片集群负载均衡器,并在过程结束时启动负载均衡器。

如果取消实时迁移, Atlas 会重新启动在源集群上的负载均衡器。

注意

在某些情况下,Atlas 无法在实时迁移进程结束时重新启动源集群上的负载均衡器。如果负载均衡器无法重启,实时迁移仍会成功,但警告横幅会提示您必须手动重启源集群负载均衡器。

配置目标 Atlas 集群时,请考虑以下几点:

  • 实时迁移进程通过 MongoDB 托管的实时迁移服务器流式传输数据。 每台服务器都运行在距离源集群最近的地区 所托管的基础架构上。以下地区可用:

    欧洲
    • 法兰克福

    • 爱尔兰

    • 伦敦的

    美洲
    • 美国东部

    • 美国西部

    亚太地区
    • 孟买

    • 新加坡

    • 悉尼

    • 东京

  • 使用 Atlas 中与源集群上托管的应用程序服务器或部署相比,网络延迟最小的目标集群云区域。理想情况下,您的应用程序服务器应在云中运行,与目标 Atlas 集群的主区域位于同一区域。要了解更多信息,请参阅云提供商

  • 为防止 oplog 集合无限制地增长,请在实时迁移进程中设置固定的 oplog 大小。如需了解更多信息,请参阅所需访问权限Atlas 配置选项

  • 您不能将全球集群作为实时迁移的目标。

    重要

    开始实时迁移过程后,就无法修改目标 Atlas 集群。如需扩展目标集群,请取消实时迁移过程,扩展集群,然后重新启动实时迁移过程。

实时迁移期间,目标集群上的mongos进程将关闭,并且通过mongos服务器的集群连接将暂停。 迁移完成后, mongos进程会自动重新启动。

避免在目标集群上运行任何工作负载, 包括可能在与实时迁移进程不重叠的命名空间上运行的工作负载。 此操作可避免 实时迁移进程中潜在的锁定冲突和性能下降。

请勿对同一目标集群同时执行多个迁移。

在实时迁移进程同步时,请勿启动应用程序到目标集群的切换进程。

在实时迁移期间,Atlas 停止拍摄目标集群的按需云备份快照。一旦您完成本页面实时迁移过程中的切换步骤,Atlas 将根据备份策略,恢复拍摄云备份快照。

在迁移过程中,不要对命名空间进行任何更改,例如使用 renameCollection 命令或执行包含 $out 聚合阶段的聚合管道。

在源群集或目标群集出现临时网络中断和选举时, 实时迁移进程会尽最大努力继续迁移。 但是,这些事件可能会导致实时迁移进程失败。 如果实时迁移进程无法自动恢复,请重新启动。

迁移过程完成后,集群将一次重启一个节点。这称为滚动重启,因此,主节点上将发生故障转移。为确保平稳迁移,请考虑在将数据迁移到目标集群之前运行测试主节点故障转移过程。

您可以随时单击 Cancel取消进程。 Atlas 会显示目标集群的Sharded Cluster Live Import in Progress消息,直到集群准备好进行正常访问。

如果在实时迁移过程完成前取消过程, Atlas 不会删除在此之前迁移的任何数据。如果 使用与目标集群相同的 Atlas 集群重新启动实时迁移过程, Atlas 会清除集群中的所有数据。

考虑将数据迁移到目标集群, 然后停止迁移过程并测试目标集群, 同时让源集群继续运行并向应用程序提供数据。

要使用生产数据测试目标集群,请遵循迁移过程直到测试步骤。当您准备好执行完整的迁移过程时,请跳过测试步骤并继续执行切换步骤。

注意

暂存和生产迁移

考虑先运行部分实时迁移过程来创建过渡环境, 然后再重复该过程来创建生产环境。 下面的过程包括一个标注, 用于在适当时间取消过程,创建过渡环境。

使用过渡环境,用支持目标 Atlas 集群 MongoDB 版本的最新驱动程序版本测试应用程序行为和性能。然后重复完整的实时迁移过程,将应用程序从源集群过渡到 Atlas 目标集群。

重要

避免在实时迁移过程运行时更改源集群配置,如删除副本集成员,或修改 mongod 运行时设置,如 featureCompatibilityVersion

在开始实时迁移过程之前:

  • 如果您还没有目标集群,请创建新的 Atlas 部署并根据需要进行配置。有关创建 Atlas 集群的完整文档,请参阅创建集群

  • 部署 Atlas 集群后, 请确保您可以从运行应用程序的所有客户端硬件将连接到该集群。测试 您的连接字符串有助于确保您的数据迁移过程 可以在最短的停机时间内完成。

    1. 如果您尚未安装 mongosh,请下载并安装到代表性的客户端机器。

    2. 使用 Atlas UI 中的连接字符串连接到目标集群。更多信息,请参阅通过 mongosh 连接

    一旦您验证与目标集群的连接,请启动实时迁移过程。

1
  1. 选择目标 Atlas 集群。

    导航到目标 Atlas 集群,然后单击。在集群列表中,位于集群名称下方。查看集群详细信息时,位于屏幕右侧, ConnectConfiguration按钮旁边。

  2. 单击 Migrate Data to this Cluster(连接)。

  3. Atlas 会显示演示屏幕, 说明如何进行实时迁移。此进程将数据 从源集群同步到新的目标集群。完成 演示后,您可以将应用程序指向新集群。

    收集源集群的以下详细信息,以便于迁移:

    • Atlas 会在演示屏幕顶部 显示负责实时迁移的 MongoDB 实时迁移服务器的 IP 地址。 配置源集群防火墙, 允许访问显示的 IP 地址。

    • 在提供的文本框中输入源分片集群的任何mongos的主机名和端口。例如, mongos.example.net:27017

    • 如果源集群强制执行身份验证,请在提供的文本框中输入用户名和密码。

      有关 Atlas 实时迁移所需的用户权限的指导,请参阅源集群安全性

    • 如果源集群使用TLS/SSL ,且未使用公共证书颁发机构 (CA),请切换Is encryption in transit enabled?开关,然后将源集群 CA 文件的内容复制到规定的文本框中。

  4. 单击 Validate 以确认 Atlas 可以连接到源集群。

    如果验证失败,请检查:

    • 您已在源集群防火墙上授予实时迁移服务器网络访问权限

    • 所提供的用户凭证,已经存放在源集群上,并且拥具所需的权限。

    • 只有当源集群需要此功能时,才会启用 Is encryption in transit enabled?(是否启用了传输加密?)开关。

    • 提供的 CA 文件,若有的话,有效且正确。

    • 所提供的主机名有效,可以通过公共互联网访问。

  5. 单击 Start Migration(开始迁移),以开始迁移过程。

    Atlas 会在用户界面中显示实时迁移进度。 实时迁移过程中,无法查看目标集群的指标 或访问数据。

    在最后的 oplog 尾部阶段,会显示一个滞后时间值, 表示源集群当前与目标集群的滞后时间。 这个滞后时间可能会根据源集群上生成 oplog 的速度而波动, 但随着 oplog 条目被复制到目标集群,滞后时间应该会逐渐缩短。

    单击View Progress per Shard可查看同步进度和每个分片的剩余迁移时间。 如果给定分片的初始同步进程失败,您可以尝试通过单击Restart重新启动同步。

    当延迟计时器和 Prepare to Cutover(准备切换)按钮变成绿色时,继续下一步。

2

如果您希望跳过测试并完成迁移,请继续执行步骤3 。

如果您希望试运行迁移过程并测试目标集群的性能和数据完整性,此时可以单击Cancel按钮。源集群停止与目标集群同步数据,但所有传输的数据仍然存在,因此您可以使用新集群测试应用程序。

测试完成后,准备执行完整的迁移过程时,请从步骤 1 重新开始。 测试运行期间创建的 所有数据库和集合都将被删除,然后重建。

3

切换是一个将应用程序的读取和写入从源集群定向到目标集群的三步过程。

注意

暂存迁移

如果您要创建暂存环境来测试应用程序,请注意optime gap ,以确定暂存环境与源集群相比落后的程度。

Cancel取消实时迁移。 Atlas 会在此时终止迁移,保留迁移的数据。 Atlas 会显示目标集群的Sharded Cluster Live Import in Progress消息,直到集群准备好进行正常访问。要了解更多信息,请参阅取消实时迁移。取消完成后,您可以根据部分迁移的数据测试过渡应用程序。

  1. 当 Atlas 检测到源集群和目标集群几乎同步时,它会启动一个可延长的 120 小时(5 天)定时器,以开始实时迁移过程的切换阶段。120 小时后,Atlas 将停止与源集群同步。您可以通过点击 <time> left to cut over 计时器下方的 Extend time 将剩余时间延长 24 小时。

    重要

    转换过程要求停止应用程序以及 对源集群的所有写入。考虑 安排和宣布维护周期, 以尽量减少依赖应用程序的服务中断。

  2. 一旦您准备好将应用程序切换到目标 Atlas 集群,请单击Prepare to Cutover 。 Atlas 显示一个演练屏幕,其中包含有关如何进行切换的说明。 optime gap显示目标集群比源集群落后的程度。您必须停止应用程序和对源集群的所有写入,以允许目标集群关闭optime gap

    Atlas 显示一系列页面,指导您完成切换过程的每个阶段。以下列表中的一些项目描述了您应该执行的操作,其他项目描述了 Atlas 显示的信息性消息。

    1. 停止您的应用程序。此举可确保不对源集群执行其他写入操作。

    2. Atlas 显示包含以下消息的屏幕: Almost done! Waiting for Atlas to clean up ... 。 Atlas 完成迁移。这可能需要几个小时。在完成迁移时,Atlas 会完成元数据更改,从目标集群的 IP 访问列表中删除 MongoDB 应用程序服务器子网,并删除实时迁移用于将数据导入到目标集群的数据库用户。

      Atlas 仍在完成迁移,但目标集群已准备好接受写入。如果您想最大限度地减少停机时间,您现在可以重新启动应用程序并连接到新的 Atlas 目标集群。在迁移完全完成之前,请勿删除源集群。

      • 单击Connect to your new cluster 。 Atlas 会将您重定向到Connect to Atlas页面,您可以在其中选择连接方法。

      • 恢复写入目标集群。

      • 确认您的应用程序正在与目标 Atlas 集群一起工作,并验证目标集群上的数据。

    3. 如果迁移成功,则会显示You have successfully migrated to Atlas页面。

如果您对本文档未涵盖的迁移支持有任何疑问,或者在迁移进程中遇到错误,请通过 Atlas UI 寻求支持

要提交支持票证:

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

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

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

    显示“项目支持”页面。

2
  1. 单击 Request Support(连接)。

  2. 对于 Issue Category(Atlas 问题类别),选择 Help with live migration(其他)。

  3. 对于 Priority(优先级),选择适当的优先级。如有问题,请选择 Medium Priority(中等优先级)。如果迁移失败,请选择 High Priority(高优先级)。

  4. 对于 Request Summary(请求摘要),请在摘要中包含 Live Migration(实时迁移)。

  5. 对于 More details,请提供与问题或迁移错误相关的任何其他详细信息。

  6. 单击 Request Support 按钮提交表单。

后退

副本集(Replica Set)

来年

故障排除