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

验证数据传输

在此页面上

  • 任务
  • 了解详情

在将应用程序负载从源集群切换到目标集群之前,应验证迁移是否成功。

从 1.9 开始, mongosync 提供了一个嵌入式验证器,可以对源集群和目标集群执行一系列验证检查,以确认同步成功。

您应该在每次同步后验证数据。 如果您计划将应用程序负载从源集群转移到目标集群,这一点非常重要。

验证方法
说明

嵌入式验证程序

从1.9 开始,mongosync 包含嵌入式验证程序,可对源集群和目标集群运行一系列验证检查,以确认迁移成功。这是满足要求的部署的首选验证方法。

mongosync 进程启动时,它会提示用户有关嵌入式验证程序的免责声明。您必须接受免责声明,或者如果您已经阅读并确认,请使用mongosync --acceptDisclaimer选项启动 以使用验证程序。

验证程序不会检查迁移的每个方面:

  • 要在不支持的命名空间上验证同步,请使用其他验证方法。

  • 要验证索引同步,请使用索引比较方法。

  • 要验证 元数据同步,请使用 元数据比较 方法。

最基本的验证方法是将源集群上每个同步collection中的文档数量与目标集群上的数量进行比较。

在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。

仅当针对具有仅插入工作负载的集群运行时,此方法才会验证同步是否成功。

您可以通过比较从源集群同步到目标集群的collection的 MD5 哈希值来验证同步。

在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。

虽然哈希比较可确保目标集群已收到来自源的所有更改,但dbHash 命令会锁定集群,在完成之前阻止其他写入。

无法对分片的集群进行哈希比较。它也不适用于使用MongoDB4.4 或更早版本的独立运行服务器和副本集,因为文档字段顺序可能会有所不同。

文档比较

您可以通过比较源集群和目标集群上的文档来验证同步。

编写一个脚本来查询源集群上的集合,然后检查目标集群上是否存在具有相同值的正确文档、索引、集合、元数据和视图。

在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。

索引比较

db.collection.getIndexes()要验证索引传输,请在源集群和目标集群上运行 方法并比较结果。

元数据比较

db.getCollectionInfos()要验证元数据的传输,请在源集群和目标集群上运行 方法并比较结果。

分片键比较

要验证分分片键是否传输到同步集合,请对 config.collections集合运行查询,以查找 _id 值为目标集合的命名空间的文档。比较此文档在源集群和目标集群中的 key 值。

示例,对于pets records数据库中名为 的集合,您可以在mongosh 中使用以下查询来验证分分片键:

db.getSiblingDB("config").collections.find({ _id : "records.pets" })
{
"_id" : "records.pets",
"lastmod" : ISODate("2021-07-21T15:48:15.193Z"),
"timestamp": Timestamp(1626882495, 1),
"key" : {
"_id" : 1
},
"unique" : false,
"lastmodEpoch" : ObjectId("5078407bd58b175c5c225fdc"),
"uuid" : UUID("f8669e52-5c1b-4ea2-bbdc-a00189b341da")
}

迁移验证程序连接到源集群和目标集群,并执行一系列验证检查,比较文档、视图和索引,以确认同步成功。

用于验证数据的具体方法取决于应用程序工作负载和数据的复杂性。

后退

遥测

在此页面上