Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

checkMetadataConsistency

在此页面上

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

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

提示

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

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

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

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

7.0 版本中的新增功能

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

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

注意

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

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

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

    use cars
    db.runCommand( {
    checkMetadataConsistency: 1
    } )
  • 要检查集合的分片元数据是否不一致,请使用集合名称运行命令:

    use library
    db.runCommand( {
    checkMetadataConsistency: "authors",
    } )
字段
类型
说明
checkMetadataConsistency
整数或字符串

指定要检查的集合。

1
将命令设置为检查数据库中的所有集合是否存在元数据不一致的情况。如果在 admin数据库上运行,则会检查所有数据库中的所有集合。
"<collection>"
将集合设置为检查元数据是否不一致。
checkIndexes
布尔

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

有关详细信息,请参阅检查索引。

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