将托管集群连接到 Atlas
mongosync实用程序在MongoDB集群之间创建连接。 mongosync
可以连接到以下任何集群:
MongoDB Atlas托管集群
自管理集群和Atlas托管集群
本页提供使用 MongoDB Cluster-to-Cluster Sync 将自托管集群连接到 Atlas 集群的说明。
有关连接 Atlas 集群的更多详细信息,请参阅连接数据库部署
注意
为获得最佳性能,请在迁移之前将自我管理集群升级到最新的MongoDB Server补丁发布。 有关更多信息,请参阅升级到MongoDB的最新自我管理补丁版本。
连接字符串(Connection Strings)
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
需要primary
读取偏好才能连接到源集群和目标集群。 有关详细信息,请参阅读取偏好选项。
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/
身份验证
提供有效的身份验证以连接到MongoDB Atlas集群。 如果您还没有Atlas数据库用户,则必须创建一个用户。
如果源集群或目标集群需要身份验证,则必须在调用mongosync
时提供正确的档案。
角色
mongosync
连接字符串中指定的用户必须对源集群和目标集群具有所需的权限。 这些权限会有所不同,具体取决于您的环境以及您要运行写入阻塞还是反向同步。
自我托管权限包括:
同步类型 | 所需的源权限 | 所需的目标权限 |
---|---|---|
默认 | ||
写入阻塞 | ||
反转 |
有关服务器角色的详细信息,请参阅:自托管部署中基于角色的访问控制。
要更新用户权限,请参阅: grantRolesToUser
。
Atlas 权限包括:
同步类型 | 目标 | 所需权限 |
---|---|---|
访问 | 源集群 |
|
访问 | 目标集群 |
|
写入阻塞或反转 | 源集群 |
|
写入阻塞或反转 | 目标集群 |
|
有关Atlas角色的详细信息,请参阅: Atlas user角色。
要更新Atlas user权限,请参阅:管理对项目的访问权限。
行为
托管
mongosync
实用程序可以托管在靠近源集群或目标集群的自己的硬件上。 它不必与集群中的mongod
或mongos
实例之一托管在同一服务器上。 这种灵活性允许您将数据推送或拉取到目标集群,同时对在那里运行的mongod
或mongos
实例的影响最小。
初始状态(Initial State)
当mongosync
连接时,它处于IDLE
状态。 您必须发出启动命令才能开始同步。
限制
在尝试使用 M10+
Atlas 集群运行 mongosync
之前,请禁用 Require Indexes for All Queries(需要所有查询的索引)选项。
例子
收集连接信息
源集群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
。
连接源集群和目标集群 mongosync
自管理集群的通用连接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 连接格式。