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

sh.status()

在此页面上

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

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

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

参数
类型
说明
verbose
布尔

可选。确定详细级别。

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

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

  • 活动 mongos 实例的详情。

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

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

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

默认的详细值为 false

提示

另请参阅:

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

--- 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>, "partitioned" : <boolean>, "version": <document> }
{ "_id" : <dbname2>, "primary" : <string>, "partitioned" : <boolean>, "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是配置服务器的最低兼容版本。

sh.status.sharding-version.currentVersion

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

sh.status.sharding-version.clusterId

clusterId 是分片集群的标识。

版本 3.2 中的新增功能

sh.status.active-mongoses

如果verbosefalse ,则sh.status.active-mongoses列出活动mongos实例的版本和数量。 活动mongos实例是指在过去60秒内进行 ping 操作的mongos实例。

如果verbosetrue ,则为每个活动的mongos实例返回:

  • 它的主机名和端口。

  • 实例的完全限定域名 (FQDN) 的数组。

  • 它的 MongoDB 版本。

  • 最近的网络探测(ping)日期和时间。

  • 自上次网络探测(ping)以来的正常运行时间。

  • 其等待状态。

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

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

注意

从 MongoDB 4.2 开始:

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

版本 3.4 中的新增功能

state 会显示:

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

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

注意

从 MongoDB 4.2 开始:

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.partitioned

partitioned显示数据库是否启用了分片。 如果为true ,则数据库已启用分片。

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 是否强制分片键值具备唯一性(即底层分片键索引是否唯一)。

版本 3.2 中的新增功能

sh.status.databases.<collection>.balancing

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

版本 3.2 中的新增功能

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

来年

sh.stopBalancer