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

使用嵌入式验证器进行验证

在此页面上

  • 关于此任务
  • 步骤
  • 行为
  • 了解详情

mongosync 包括一个嵌入式验证器,用于对目标集群执行一系列检查,以验证支持的集合的同步。

重要

验证程序不会检查以下命名空间:

  • 固定大小集合

  • 带有TTL索引的集合

  • 不使用默认排序规则的集合

  • 视图

验证程序不会检查以下集合功能:

  • 集合元数据

  • 索引

要验证上述数据和元数据,请为这些集合和集合功能编写额外检查的脚本。有关更多信息,请参阅 验证数据传输。

1.9 版本中的新功能

嵌入式验证程序在 mongosync 1.8 及更早版本中不可用。

有关其他验证方法,请参阅验证数据传输。

嵌入式验证程序具有以下限制:

  • 验证程序不支持分片的集群。如果迁移包括分分片集群,则 mongosync 会禁用验证程序。

  • mongosync 将验证者状态存储在内存中,这可能会导致大量内存开销。要运行验证程序,mongosync 大约需要 10 GB内存,此外,每 1 万份文档需要额外 500 MB 内存。

  • 验证程序无法恢复。如果用户停止或暂停同步,然后因任何原因再次启动 mongosync,验证进程将从头开始。这可能会导致验证大大落后于迁移。

  • /reverse 端点禁用验证程序。在额外调用/reverse 端点后,它会保持禁用状态。

  • 如果在启用验证并将 buildIndexes设立为 never 的情况下开始同步,则当 mongosync 在源集群上找到TTL集合时,迁移将失败。这种情况可能发生在您调用 /start 端点之后或更晚的时间,例如,用户在迁移过程中在源集群上创建了TTL索引。

    要同步TTL集合而不在目标集群上构建索引,您必须在禁用验证器的情况下开始同步。

验证程序不会检查以下命名空间:

  • 固定大小集合

  • 带有TTL索引的集合

  • 不使用默认排序规则的集合

  • 视图

验证程序不会检查以下集合功能:

  • 集合元数据

  • 索引

要验证上述数据和元数据,请为这些集合和集合功能编写额外检查的脚本。有关详细信息,请参阅验证数据传输。

验证器与这些beta功能不兼容:

1

初始化 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"
2

要开始将数据从源集群同步到目标,请使用 /start 端点。

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

示例输出:

{"success":true}

请注意,默认会为副本集迁移启用验证程序。

3

要检查同步的状态,请使用 /progress 端点:

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

示例输出:

{
"progress":
{
"state":"RUNNING",
"canCommit":true,
"canWrite":false,
"info":"change event application",
"lagTimeSeconds":0,
"collectionCopy":
{
"estimatedTotalBytes":694,
"estimatedCopiedBytes":694
},
"directionMapping":
{
"Source":"cluster0: localhost:27017",
"Destination":"cluster1: localhost:27018"
},
"verification":
{
"source":
{
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
},
"destination": {
"estimatedDocumentCount": 42,
"hashedDocumentCount": 42,
"lagTimeSeconds": 2,
"totalCollectionCount": 42,
"scannedCollectionCount": 10,
"phase": "stream hashing"
}
}
},
"success": true
}

检查 verification 响应字段,获取有关嵌入式验证程序状态的信息。

嵌入式验证程序对目标集群执行一系列检查。它会检查所有支持的集合,以确认 mongosync 已成功将文档从源集群传输到目标。

如果验证程序遇到错误,则会导致迁移失败并显示错误。如果验证者没有发现错误,mongosync 将转换到 COMMITTED 状态。

联系支持以调查验证问题。

验证需要 10 GB的内存,此外,迁移中每 1 百万个文档还需要 500 MB 的内存。

如果可用内存不足,/start 端点将返回错误。如果发生这种情况,要将 mongosync 与验证程序一起使用,必须首先增加服务器的内存并恢复迁移。

如果增加服务器内存不可行,请在禁用验证器的情况下重新启动mongosync

后退

数据传输验证