db.checkMetadataConsistency()
定义
db.checkMetadataConsistency(options)
对集群或数据库的分片元数据执行一系列一致性检查。 此方法返回一个游标,其中包含找到的全部或批处理的不一致结果。
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。有关数据库命令,请参阅
checkMetadataConsistency
命令。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
在重大维护操作(例如升级和降级)后运行此方法,或检查集群元数据是否由于MongoDB版本中的错误而不一致或损坏。
默认情况下,该方法不会检查索引在分片之间的一致性。 如果索引检查与创建、删除或修改索引的操作同时运行,则可能会返回不一致的误报。 要使用此方法检查索引,请设置
checkIndexes
选项。默认,该方法检查给定数据库的分片元数据。 如果在
admin
数据库上运行,它会检查整个集群的分片元数据。有关此方法搜索不一致的更多信息,请参阅不一致类型。
返回: 此方法返回带有 documents
数组的游标,该数组包含分片元数据中发现的每个不一致的文档。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
db.checkMetadataConsistency()
方法使用的语法如下:
db.checkMetadataConsistency( { <options> } )
options
文档可以采用以下字段和值:
字段 | 类型 | 说明 |
---|---|---|
checkIndexes | 布尔 | 设置该命令是否还检查分片元数据中的索引。 默认情况下,此操作处于禁用状态,因为与创建、删除或修改索引的操作并发运行时,它可能会返回不一致的误报。 仅当您知道这些操作不太可能发生时才检查索引。 |
cursor | 文档 | 配置返回游标。 |
cursor.batchSize | 整型 | 每个批次中包含的分片元数据不一致文档的最大数量。 |
例子
对数据库执行一致性检查
要对数据库执行一致性检查,请调用db.checkMetadataConsistency()
方法:
use library db.checkMetadataConsistency()
{ cursorHasMore: false, documents: [ { type: "MisplacedCollection", description: "Unsharded collection found on shard different from database primary shard", details: { namespace: "library.authors", shard: "shard02", localUUID: new UUID("1ad56770-61e2-48e9-83c6-8ecefe73cfc4") } } ], }
对集群执行一致性检查
要对集群执行一致性检查,请从admin
数据库调用db.checkMetadataConsistency()
方法:
use admin db.checkMetadataConsistency()
{ cursorHasMore: false, documents: [ { type: "MisplacedCollection", description: "Unsharded collection found on shard different from database primary shard", details: { namespace: "library.authors", shard: "shard02", localUUID: new UUID("1ad56770-61e2-48e9-83c6-8ecefe73cfc4") } } ], }