Docs 菜单

Docs 主页开发应用程序MongoDB Manual

checkMetadataConsistency

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 输出
  • 行为
  • 批处理结果
  • 检查索引
  • 例子
checkMetadataConsistency

对集群、数据库或collection的分片元数据执行一系列一致性检查。该命令返回一个游标,其中包含找到的全部或批处理的不一致结果。

提示

mongosh中,该命令也可以通过db.checkMetadataConsistency()db.collection.checkMetadataConsistency()sh.checkMetadataConsistency()辅助方法运行。

助手方法对于mongosh用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

在主要维护操作(例如升级和降级)后运行此命令,以检查目录的状态。

默认情况下,该命令不会检查索引在分片之间的一致性。 要检查索引,请设置checkIndexes选项。

7.0 版本中的新增功能

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关所有命令的信息,请参阅不支持的命令。

  • 要检查整个集群的分片元数据不一致情况,请从admin数据库运行命令。

    db.getSiblingDB("admin").runCommand( {
    checkMetadataConsistency: 1
    } )
  • 要检查数据库是否存在分片元数据不一致的情况,请从数据库上下文中运行以下命令:

    use cars
    db.runCommand( {
    checkMetadataConsistency: 1
    } )
  • 要检查collection的分片元数据是否不一致,请使用coll选项运行以下命令:

    use library
    db.runCommand( {
    checkMetadataConsistency: 1,
    coll: "authors",
    } )
字段
类型
说明
checkIndexes
布尔

设置该命令是否还检查分片元数据中的索引。

有关更多信息,请参阅检查索引。

coll
字符串
设置集合以检查分片元数据是否不一致。
cursor
文档
配置返回游标。
cursor.batchSize
整型
每个批次中包含的不一致结果的最大数量。

对于在分片元数据中发现的每个不一致, checkMetadataConsistency命令会返回一个带有文档的游标。

返回文档包含以下字段:

字段
类型
说明
cursor
文档
带有不一致检查结果的游标。
cursor.id
整型

一个 64 位整数表示游标 ID。 使用cursor.id值和getMore命令来检索下一批不一致。

如果游标返回的 ID 为0 ,则表示不再有批处理信息。

cursor.ns
字符串
已检查数据库和collection是否存在不一致。
cursor.firstBatch
阵列
元数据一致性检查的结果。
ok
布尔
指示命令是否成功。

checkMetadataConsistency命令分批返回结果。 要自定义批处理大小, batchSize选项:

var cur = db.runCommand( {
checkMetadataConsistency: 1,
cursor: {
batchSize: 10
}
} )

如果cursor.id字段大于 0,则可以与getMore命令一起使用来检索下一批处理结果。

默认情况下, checkMetadataConsistency命令不检查索引。 要检查元数据一致性和索引,请使用checkIndexes选项:

db.runCommand( {
checkMetadataConsistency: 1,
checkIndexes: true
} )

使用runCommand()运行checkMetadataConsistency命令:

db.runCommand( { checkMetadataConsistency: 1 } )

示例输出:

{
cursor: {
id: Long("0"),
ns: "test.$cmd.aggregate",
firstBatch: [
{
type: "MisplacedCollection",
description: "Unsharded collection found on shard different from database primary shard",
details: {
namespace: "test.authors",
shard: "shard02",
localUUID: new UUID("1ad56770-61e2-48e9-83c6-8ecefe73cfc4")
}
}
],
},
ok: 1
}
← balancerStop