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

将托管集群连接到 Atlas

mongosync 实用程序在MongoDB集群之间创建连接。mongosync 可以连接到以下任何集群:

本页提供了使用MongoDB Mongosync 将自管理集群连接到Atlas 集群的说明。

有关连接 Atlas 集群的更多详细信息,请参阅连接数据库部署

注意

为获得最佳性能,请在迁移之前将自我管理集群升级到最新的MongoDB Server补丁发布。 有关更多信息,请参阅升级到MongoDB的最新自我管理补丁版本。

mongosync 使用MongoDB URI 连接string连接自管理集群:

  • SRV 连接方案的形式为:

    mongodb+srv://[username:password@][host.domain.TLD][/defaultauthdb][?options]
  • 标准 URI 连接方案的形式如下:

    mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

按照副本集配置中列出的方式指定mongod实例的主机名。

对于分片的集群,请指定mongos实例的主机名,而不是mongod实例的主机名。

注意

mongosync 不需要replicaSet选项。

mongosync 使用MongoDB URI 连接string连接Atlas集群:

  • SRV 连接方案的形式为:

    mongodb+srv://[username:password]@[clusterName].[host].mongodb.net/

    有关如何在 中查找 SRV 连接string Atlas的信息,请参阅 连接到集群。

  • 标准 URI 连接方案的形式如下:

    mongodb://[username:password]@[clusterName].[host].mongodb.net/

mongosync 需要primary读取偏好才能连接到源集群和目标集群。 有关详细信息,请参阅读取偏好选项。

提供有效的身份验证以连接到MongoDB Atlas集群。 如果您还没有Atlas数据库用户,则必须创建一个用户。

如果源集群或目标集群需要身份验证,则必须在调用mongosync时提供正确的档案。

mongosync连接字符串中指定的用户必须对源集群和目标集群具有所需的权限。权限因您的环境以及您是否要使用反向同步而异。

源集群的自我管理权限为:

有关服务器角色的详细信息,请参阅:自托管部署中基于角色的访问控制。

要更新用户权限,请参阅: grantRolesToUser 。

目标集群的Atlas权限为:

同步类型
所需的目标权限

默认

双重写入阻塞、反转或多重反转

有关Atlas角色的详细信息,请参阅Atlas用户角色。

要更新Atlas user权限,请参阅:管理对项目的访问权限。

在同步过程中,mongosync 使用 setUserWriteBlockMode 命令来阻止对目标集群的写入。mongosync 用于连接到目标集群的数据库用户必须同时具备以下两个操作:

如果缺少任何一个操作,mongosync 将停止并报告缺少的权限。

atlasAdmin 是内置角色,而这两个操作是权限操作,而不是角色。要授予这些权限,请创建一个包含这两种操作的自定义角色,并将该自定义角色分配给数据库用户。

要创建自定义角色并将其分配给数据库用户:

1
  1. 在 中,从导航栏的组织菜单中选择您的组织。

  2. 从导航栏的 Projects(项目)菜单中选择项目。

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

2
  1. 单击 Custom Roles 标签页。

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

  3. 对于 Custom Role Name,请输入一个名称,例如 mongosyncWriteBlocking。

  4. 在 Action or Role 下拉菜单中,选择 setUserWriteBlockMode 操作。点击 Add an action or role 并选择 bypassWriteBlockingMode 操作。

  5. 单击 Add Custom Role(连接)。

3
  1. 单击 Database Users 标签页。

  2. 点击 mongosync 使用的数据库用户的 Edit。

  3. 展开 Custom Roles 部分,然后从 Custom Roles 下拉菜单中选择 mongosyncWriteBlocking。

  4. 保存更改。

mongosync实用程序可以托管在靠近源集群或目标集群的自己的硬件上。 它不必与集群中的mongod或mongos实例之一托管在同一服务器上。 这种灵活性允许您将数据推送或拉取到目标集群,同时对在那里运行的mongod或mongos实例的影响最小。

当mongosync连接时,它处于IDLE状态。 您必须发出启动命令才能开始同步。

在尝试使用 M10+ Atlas 集群运行mongosync 之前,请禁用 Require Indexes for All Queries 选项以在源集群和目标集群上将 notablescan 设立为 false。

源集群cluster0托管在以下服务器和端口上:

  • clusterOne01.fancyCorp.com:20020

  • clusterOne02.fancyCorp.com:20020

  • clusterOne03.fancyCorp.com:20020

目标 Atlas 集群cluster1托管在以下服务器和端口上:

  • cluster2Name-01.abc123.com:27017

  • cluster2Name-02.abc123.com:27017

  • cluster2Name-03.abc123.com:27017

每个集群上都配置了一个管理用户clusterAdmin ,密码为superSecret 。

自管理集群的通用连接string格式为:

mongodb://<user>:<password>@<ip-address>:<port>,<ip-address>:<port>,<ip-address>:<port>

集群的通用连接string Atlas格式为:

mongodb://<user>:<password>@<clusterName>.<hostname>.mongodb.net/

使用您收集的自管理集群的连接信息为cluster0创建连接字符串:

cluster0:mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020

您可以从string 用户界面获取Atlas 集群的连接Atlas 。要学习;了解详情,请参阅连接到数据库部署。

下面的mongosync命令布局已修改以进行显示。 要使用mongosync将cluster0连接到cluster1 ,请在一行中输入以下命令:

mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net"

Atlas 集群需要 TLS 连接。如要将 Atlas 集群与 mongosync 搭配使用,需要添加 tls=true 选项。例如,要连接到 cluster0 和 cluster1 上的admin 数据库:

mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020/admin?tls=true" \ --cluster1 "mongodb://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net/admin?tls=true"

您还可以将mongodb+srv连接字符串与mongosync一起使用。 您无需将tls=true选项添加到 mongodb+srv 连接string中。 示例:

mongosync \ --cluster0 "mongodb+srv://clusterAdmin:superSecret@clusterOne01.fancyCorp.com/" \ --cluster1 "mongodb+srv://clusterAdmin:superSecret@cluster2Name.abc123.mongodb.net/"

有关mongodb+srv连接字符串的更多详细信息,请参阅SRV 连接格式。