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

Mongosync 快速入门

Mongosync 会将数据从一个集群复制并写入到另一个集群,直到同步完成。您可以使用此工具在MongoDB集群之间执行一次性数据迁移,同时最短停机时间。

有关执行期间的 mongosync 和目标集群行为的更多信息,请参阅中间同步注意事项。

mongosync 二进制文件是 Mongosync 中使用的主节点 (primary node in the replica set)进程。

  • 每个集群都可以是副本集或分片集群。 如果其中一个是分片集群,请参阅mongosync的分片集群限制

  • 分片集群不需要具有相同数量的分片。

  • 目标集群的版本必须与源集群的版本相同,或者最多比源集群早两个版本。 补丁版本并不重要,只要满足最低补丁版本要求即可。

  • 源集群在提交之前可以保持活动状态,因为 mongosync 会在迁移期间同步源集群上的写入,直到调用提交为止。

重要

在您对 commit 调用 mongosynccanWrite 成功返回 true 之前,目标集群上的已迁移集合不能用于接受应用程序读取或写入流量。请勿使用 mongosync 维护用于灾难恢复、分析或其他类似使用案例的从节点(secondary node from replica set)集群。

按照以下说明设立Mongosync、连接集群并同步数据。

1

如果您已经拥有一个 MongoDB 集群,无论是自管理的还是托管在 MongoDB Atlas 中,请将该集群用作源集群。如果您没有可用的集群,则需要创建一个。

当目标集群和源集群都是副本集时,此快速入门适用。

要从副本集同步到分片分片集群,请参阅将副本集同步到分片集群。 要在分分片的集群之间进行同步,请参阅同步分片集群。

您可以在相同或不同MongoDB版本上的集群之间进行迁移。 有关MongoDB 服务器版本兼容性或跨版本迁移的更多信息,请参阅MongoDB Server版本兼容性。

目标副本集中的节点数不必等于源副本集中的节点数。

重要提示:

目标集群必须有足够的磁盘存储,以容纳正在迁移的逻辑数据大小以及初始同步中的目标oplog条目。 示例,要迁移10 GB的数据,目标集群必须至少有 10 GB用于数据,另外 10 GB用于初始同步中的插入oplog条目。

要使用嵌入式验证,目标上必须有更大的oplog 。如果启用嵌入式验证程序并减小目标oplog的大小,则嵌入式验证程序可能无法跟上,从而导致 mongosync 出错。

如果需要减少目标oplog条目的开销并且嵌入式验证程序已禁用,则可以:

  • Use the oplogSizeMB setting to lower the destination cluster's oplog size.

  • Use to oplogMinRetentionHours setting to lower or remove the destination cluster's minimum oplog retention period.

如果您的集群是自我管理的,则它们必须是MongoDB Enterprise集群。MongoDB Community Edition仅在有限的情况下支持 Mongosync。有关将 Mongosync 与MongoDB Community Edition结合使用的更多信息,联系MongoDB销售代表。

创建集群超出了本指南的范围。如果需要帮助,请参阅创建Atlas 集群或创建自管理集群的文档。

重要

不要选择 Latest Version With Auto Upgrades。此选项会自动将集群升级到最新的次要发布。某些次要版本(例如MongoDB 8.2 版本)可能不支持实时迁移或 Mongosync。升级时,请选择主要版本以确保与实时迁移和 Mongosync 的兼容性。

2

如果其中一个集群托管在 Atlas 中,或者其中一个需要身份验证,则必须创建一个在这两个集群中都具有权限的数据库用户。

源用户必须具有以下角色:

此外,源用户必须能够:

如果源集群托管在 Atlas 中,则用户必须具有 Atlas 管理员角色。用户还必须能够读取集群的变更流

如果目标集群托管在 Atlas 中,则用户必须具有 Atlas 管理员角色。

3

mongosync 是连接源集群和目标集群的工具。 您可以在自己的硬件上托管mongosyncmongosync不必在托管 MongodDB 集群的硬件上运行。

要安装mongosync

  1. mongosync可执行文件找到与源集群和目标集群具有网络连接的主机服务器。

  2. 下载适用于您的主机系统的mongosync包。

  3. 解压mongosync包。 mongosync可执行文件位于bin目录中。

有关特定于操作系统的安装说明,请参阅安装。

1

连接字符串包含mongosync连接到源集群和目标集群所需的网络和身份验证详细信息。

确定源集群和目标集群的主机名或 IP 地址和端口。 您将使用此信息和用户身份验证详细信息来构造连接字符串。

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

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

您的连接字符串将类似于:

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

2

mongosync 必须先创建与源集群和目标集群的初始连接,然后才能开始同步数据。 要创建初始连接,请在一行中发出包含连接字符串的以下命令(为清楚起见,此处重新格式化了该命令):

./bin/mongosync \
--logPath /var/log/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"
  • mongosync首次连接到源集群和目标集群时,它处于IDLE状态。

  • mongosync 在收到启动命令之前不会同步数据。

  • 使用启动命令指定源集群和目标集群。 "cluster0" 和 "cluster1" 只是标签,任一集群都可以是cluster0cluster1

起始端点发起数据同步。 要开始同步,请使用curl或类似程序发出启动请求:

curl localhost:27182/api/v1/start -XPOST \
--data '
{
"source": "cluster0",
"destination": "cluster1"
} '

如果启动请求成功, mongosync将返回{ "success": true } ,并开始将源集群上的现有数据与目标集群上的现有数据同步。 在这个点, mongosync 进入 RUNNING 状态并将后续源集群写入应用于目标集群。

要检查同步状态,请调用进度端点:

curl localhost:27182/api/v1/progress -XGET

如果 progress 响应包含字段canCommit: true,则可以调用 /commit 端点。请参阅完成切换进程。

mongosync的命令接口是发布 HTTP API 的 HTTP 服务器。 要控制mongosync ,请使用 API 端点。 API 文档提供了有关使用以下端点的详细信息:

端点
说明

启动源集群和目标集群之间的同步。

返回同步进程的状态。

暂停当前同步操作。

根据目标集群上存储的数据恢复暂停的同步会话。

将同步操作提交到目标集群。

反转已提交同步操作的方向。

您可以使用mongosync切换进程最终完成迁移并将应用程序工作负载从源转移到目标集群。

有关更多信息,请参阅完成切换过程。

mongosync 在迁移期间将其元数据存储在一个或多个数据库中。元数据数据库可以命名为以下任何名称:

  • __mdb_internal_mongosync

  • 任何以 __mdb_internal_mongosync_verifier

成功迁移后,应删除所有元数据数据库。删除元数据后,无法反向迁移。

  • HTTP API的默认端口为27182 。 将--port选项与mongosync一起使用以配置另一个端口。

  • mongosync 可以交换源集群和目标集群以启用反向同步。

    有关更多信息,请参阅reverse端点。

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

    要确定适合您的使用案例的正确用户权限,请参阅用户权限。

  • 您可能需要在运行 mongosync 的主机上增加文件描述符 ulimits。这适用于任何类 UNIX 系统,尤其是 macOS,其默认值通常较低。请参阅 UNIX ulimit 设置

  • 要估计初始同步所需的oplog大小,请参阅oplog 大小调整。