使用嵌入式验证器进行验证
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索引的集合
不使用默认排序规则的集合
视图
验证程序不会检查以下集合功能:
集合元数据
索引
不支持的 Beta 功能
验证器与这些beta功能不兼容:
运行
mongosync
不支持的MongoDB发布的集群。
步骤
初始化 mongosync
初始化 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"
启动同步
要开始将数据从源集群同步到目标,请使用 /start 端点。
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", } '
示例输出:
{"success":true}
请注意,默认会为副本集迁移启用验证程序。
检查进度
要检查同步的状态,请使用 /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
。