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

sh.status()

在此页面上

  • 定义
  • 兼容性
  • 输出示例
  • 输出字段
sh.status()

mongos实例上运行时,打印分片配置的格式化报告以及有关分片分片集群中现有数据段的信息。 如果数据段总数大于或等于20 ,则默认行为会抑制详细的数据数据块信息。

sh.status() 方法具有以下参数:

Parameter
类型
说明
verbose
布尔

可选。确定详细级别。

如果 true,则该方法将显示:

  • 即使您有 20 个或更多数据段,也可以查看跨分片数据段分布的完整详情以及每个分片上的数据段个数。

  • 活动 mongos 实例的详情。

如果 false,则该方法将显示:

  • 仅当数据段少于 20 个时,才会显示跨分片数据段分布的完整详情。如果有 20 个或更多数据段,该方法会返回 too many chunks to print ... 消息,仅显示每个分片上的数据段个数。

  • 活跃的 mongos 实例的版本和数量。

默认的详细值为 false

提示

另请参阅:

此方法可用于以下环境中托管的部署:

重要

M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。

分片版本部分显示有关配置数据库的信息:

--- Sharding Status ---
sharding version: {
"_id" : <num>,
"minCompatibleVersion" : <num>,
"currentVersion" : <num>,
"clusterId" : <ObjectId>
}

分片部分列出了有关分片的信息。对于每个分片,该部分显示名称、主机和关联的标签(如果有)。

shards:
{ "_id" : <shard name1>, "host" : <string>, "tags" : [ <string> ... ], "state" : <num> }
{ "_id" : <shard name2>, "host" : <string>, "tags" : [ <string> ... ], "state" : <num> }
...

默认情况下,活动 mongos 实例部分显示在过去 60 秒内处于活动状态的 mongos 实例的版本和数量信息:

active mongoses:
<version> : <num>

如果在 verbose 参数设置为 true 的情况下运行该方法,活动 mongos 实例部分将显示其他信息:

active mongoses:
{ "_id" : "<hostname:port>", "advisoryHostFQDNs" : [ "<name>" ], "mongoVersion" : <string>, "ping" : <ISODate>, "up" : <long>, "waiting" : <boolean> }

自动分割显示有关是否启用自动分割的信息:

autosplit:
Currently enabled: <yes|no>

负载均衡器部分列出有关负载均衡器状态的信息。这可以深入了解当前负载均衡器的操作,在对不均衡的分片集群进行故障排除时非常有用。

balancer:
Currently enabled: yes
Currently running: yes
Collections with active migrations:
config.system.sessions started at Fri May 15 2020 17:38:12 GMT-0400 (EDT)
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
416 : Success
1 : Failed with error 'aborted', from shardA to shardB

数据库部分列出了有关数据库的信息。它显示了数据库名称和每个数据库的主分片

databases:
{ "_id" : <dbname1>, "primary" : <string>, "version": <document> }
{ "_id" : <dbname2>, "primary" : <string>, "version": <document> }
...

分片集合部分提供有关分片集合的分片详细信息。对于每个分片集合,该部分显示分片键、每个分片的数据块数量、数据块在分片上的分布 [1] 以及分片键范围的标签信息(如果有)。

<dbname>.<collection>
shard key: { <shard key> : <1 or hashed> }
unique: <boolean>
balancing: <boolean>
chunks:
<shard name1> <number of chunks>
<shard name2> <number of chunks>
...
{ <shard key>: <min range1> } -->> { <shard key> : <max range1> } on : <shard name> <last modified timestamp>
{ <shard key>: <min range2> } -->> { <shard key> : <max range2> } on : <shard name> <last modified timestamp>
...
tag: <tag1> { <shard key> : <min range1> } -->> { <shard key> : <max range1> }
...
sh.status.sharding-version._id

_id 是版本详情的标识符。

sh.status.sharding-version.minCompatibleVersion

minCompatibleVersion 是配置服务器的最低兼容版本。

在比 6.2 更早的 MongoDB 版本中,该字段包含在 config.version 集合中,但在 mongosh 2.0.0 及更高版本中,该字段不会在 sh.status() 输出中返回。从 MongoDB 6.2 开始,此字段已被删除,并且不会在任何 mongosh 版本或其他客户端应用程序中返回。如要获取版本信息,请参阅特征兼容性版本(fcv)

sh.status.sharding-version.currentVersion

currentVersion 是配置服务器的当前版本。

在比 6.2 更早的 MongoDB 版本中,该字段包含在 config.version 集合中,但在 mongosh 2.0.0 及更高版本中,该字段不会在 sh.status() 输出中返回。从 MongoDB 6.2 开始,此字段已被删除,并且不会在任何 mongosh 版本或其他客户端应用程序中返回。如要获取版本信息,请参阅特征兼容性版本(fcv)

sh.status.sharding-version.clusterId

clusterId 是分片集群的标识。

sh.status.active-mongoses

如果 verbosefalsesh.status.active-mongoses 会列出活动 mongos 实例的版本和数量。活动的 mongos 实例是在过去 60 秒内网络探测到的 mongos 实例。

如果 verbosetruesh.status.active-mongoses 会为每个活跃的 mongos 实例返回一个包含以下字段的文档:

字段
数据类型
说明
_id
字符串
运行 mongos 的主机名和端口。_id 的格式为 <hostname>:<port>
advisoryHostFQDNs
字符串数组
mongos 的完全限定域名(FQDN)的数组。
created
Date

mongos 启动时。

5.2 版本中的新增功能

mongoVersion
字符串
正在运行 mongos 的 MongoDB 版本。
ping
Date
mongos 实例每 30 秒向配置服务器发送 ping。该字段表示最后一次 ping 时间。
up
NumberLong
截至上次 ping 时 mongos 已启动的秒数。
waiting
布尔
此字段始终为 true,并且仅为向后兼容而包含。
active mongoses:
{
"_id" : "<hostname:port>",
"advisoryHostFQDNs" : [ "<name>" ],
"created" : <ISODate>,
"mongoVersion" : <string>,
"ping" : <ISODate>,
"up" : <long>,
"waiting" : <boolean>
}
...
sh.status.autosplit

sh.status.autosplit 指示当前是否启用自动分割。

注意

从 MongoDB 6.0.3 开始,不再执行自动数据块分割。这是因为均衡策略的改进。自动分割命令仍然存在,但不执行操作。

在 MongoDB 6.1 以前的版本中:

mongo 方法 sh.enableBalancing(namespace) sh.disableBalancing(namespace) 对自动分割没有影响。

sh.status.shards._id

_id 显示分片的名称。

sh.status.shards.host

host 会显示分片的托管位置。

sh.status.shards.tags

tags 会显示分片的所有标签。该字段仅在分片具有标签时显示。

sh.status.shards.state

state 会显示:

  • 0 如果该分片不具备分片感知性。

  • 1 如果该分片具备分片感知性。

注意

从 MongoDB 6.0.3 开始,不再执行自动数据块分割。这是因为均衡策略的改进。自动分割命令仍然存在,但不执行操作。

在 MongoDB 6.1 以前的版本中:

mongo 方法 sh.enableBalancing(namespace) sh.disableBalancing(namespace) 对自动分割没有影响。

sh.status.balancer.currently-enabled

currently-enabled 指示分片集群当前是否已启用负载均衡器

sh.status.balancer.currently-running

currently-running 指示负载均衡器当前是否正在运行,因此当前是否正在均衡集群。

sh.status.balancer.collections-with-active-migrations

collections-with-active-migrations 列出所有正在进行迁移的集合的名称,并指定迁移的开始时间。如果没有正在进行的迁移,则该字段不会出现在 sh.status() 输出中。

sh.status.balancer.failed-balancer-rounds-in-last-5-attempts

failed-balancer-rounds-in-last-5-attempts 显示最近五轮尝试中失败的负载均衡器轮数。当数据段迁移失败时,负载均衡器轮次将失败。

sh.status.balancer.last-reported-error

last-reported-error 列出最近的负载均衡器错误信息。如果没有错误,该字段不会出现在 sh.status() 输出中。

sh.status.balancer.time-of-reported-error

time-of-reported-error 提供最近所报告错误的日期和时间。

sh.status.balancer.migration-results-for-the-last-24-hours

migration-results-for-the-last-24-hours 显示最近 24 小时内迁移的次数以及来自失败迁移的错误消息。如果最近没有迁移,migration-results-for-the-last-24-hours 会显示 No recent migrations

migration-results-for-the-last-24-hours 包括所有迁移(含并非由负载均衡器启动的迁移)。

sh.status.databases._id

_id 将显示数据库名称。

sh.status.databases.primary

primary 显示了数据库的主分片

sh.status.databases.version

version 显示数据库版本信息:

{ "uuid" : UUID("cc250b66-8638-49f7-a2e8-c6f1220b9d7a"), "lastMod" : 1 }

其中:

  • uuid 是数据库标识符。

  • lastMod 是数据库版本。

sh.status.databases.<collection>.shard-key

shard-key 显示分片键规范文档。

sh.status.databases.<collection>.unique

unique 显示 MongoDB 是否强制分片键值具备唯一性(即底层分片键索引是否唯一)。

sh.status.databases.<collection>.balancing

显示负载均衡器是否可以对集合进行负载均衡。 如果负载均衡器已启用并且此状态返回true ,则负载均衡器会在负载均衡操作中包含此集合。 如果状态返回false ,则表示负载均衡器器平衡此集合中的数据。

sh.status.databases.<collection>.chunks

chunks 列出所有分片以及每个分片上的数据块数。

sh.status.databases.<collection>.chunk-details

chunk-details 列出数据块的详情 [1]

  • 定义该数据段的分片键值的范围,

  • 该数据段所在的分片,以及

  • 该数据段的最后修改时间戳。

sh.status.databases.<collection>.tag

tag 列出了与一系列分片键值关联的标签的详情。

提示

另请参阅:

[1](12) 在默认情况下,如果数据块总数小于 20,那么分片集合部分会显示数据块信息。要在有 20 个或更多数据块时显示信息,请调用 sh.status() 方法,将 verbose 参数设置为 true,即 sh.status(true)

后退

sh.startBalancer