此版本的文档已存档,不再维护。查看
最新文档,获取有关
mongosync 使用的最新指导以及有关如何升级
mongosync 版本的说明。
在将应用程序负载从源集群切换到目标集群之前,应验证迁移是否成功。
您应该在每次同步后验证数据。 如果您计划将应用程序负载从源集群转移到目标集群,这一点非常重要。
| |
|---|
| 最基本的验证方法是将源集群上每个同步collection中的文档数量与目标集群上的数量进行比较。 在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。 仅当针对具有仅插入工作负载的集群运行时,此方法才会验证同步是否成功。 |
| 您可以通过比较从源集群同步到目标集群的collection的 MD5 哈希值来验证同步。 在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。 虽然哈希比较可确保目标集群已收到来自源的所有更改,但dbHash命令会锁定集群,在完成之前阻止其他写入。 无法对分片的集群进行哈希比较。它也不适用于使用MongoDB 4.4 或更早版本的独立运行服务器和副本集,因为文档字段顺序可能会有所不同。 |
| 您可以通过比较源集群和目标集群上的文档来验证同步。 编写一个脚本来查询源集群上的集合,然后检查目标集群上是否存在具有相同值的正确文档、索引、集合、元数据和视图。 在使用此方法验证数据传输之前,mongosync 必须处于 COMMITTED 状态。 |
| |
| |
| 要验证分片键是否传输到同步集合,请对 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") | | } |
|
| 迁移验证程序连接到源集群和目标集群,并执行一系列验证检查,比较文档、视图和索引,以确认同步成功。 |
用于验证数据的具体方法取决于应用程序工作负载和数据的复杂性。