Docs 菜单
Docs 主页
/
MongoDB Cluster-to-Cluster Sync
/

连接两个自托管集群

在此页面上

  • 连接字符串(Connection Strings)
  • 身份验证
  • 角色
  • 行为
  • 例子

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

  • 自管理集群

  • MongoDB Atlas托管集群

  • 自管理集群和Atlas托管集群

本页提供使用 MongoDB Cluster-to-Cluster Sync 连接自管理集群的说明。

注意

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

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

  • SRV 连接方案的形式为:

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

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

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

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

注意

mongosync 不需要replicaSet选项。

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

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

mongosync连接字符串中指定的用户必须对源集群和目标集群具有所需的权限。 这些权限会有所不同,具体取决于您的环境以及您要运行写入阻塞还是反向同步。

自我托管权限包括:

同步类型
所需的源权限
所需的目标权限
默认
写入阻塞
反转

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

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

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

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

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

  • clusterOne01.fancyCorp.com:20020

  • clusterOne02.fancyCorp.com:20020

  • clusterOne03.fancyCorp.com:20020

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

  • clusterTwo01.fancyCorp.com:20020

  • clusterTwo02.fancyCorp.com:20020

  • clusterTwo03.fancyCorp.com:20020

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

通用连接字符串格式为:

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

使用收集的连接信息为cluster0cluster1创建连接字符串:

cluster0:
mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020
cluster1:
mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020

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

mongosync \
--cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \
--cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"

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

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

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

后退

Atlas 集群