sh.status()
定义
sh.status()
在
mongos
实例上运行时,打印分片配置的格式化报告以及有关分片集群中现有数据段的信息。如果数据段总数大于或等于20 ,则默认行为会抑制详细的数据段信息。sh.status()
方法具有以下参数:参数类型说明verbose
布尔可选。确定详细级别。
如果
true
,则该方法将显示:即使您有 20 个或更多数据段,也可以查看跨分片数据段分布的完整详情以及每个分片上的数据段个数。
活动 mongos 实例的详情。
如果
false
,则该方法将显示:仅当数据段少于 20 个时,才会显示跨分片数据段分布的完整详情。如果有 20 个或更多数据段,该方法会返回
too many chunks to print ...
消息,仅显示每个分片上的数据段个数。
默认的详细值为
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
是分片集群的标识。
活动mongos
实例
版本 3.2 中的新增功能。
sh.status.active-mongoses
如果
verbose
为false
,则sh.status.active-mongoses
列出活动mongos
实例的版本和数量。 活动mongos
实例是指在过去60秒内进行 ping 操作的mongos
实例。如果
verbose
为true
,则为每个活动的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 开始:
balancerStart
命令和mongo
Shell 助手方法sh.startBalancer()
和sh.setBalancerState(true)
还会启用分片集群的自动分割。To disable auto-splitting when the balancer is enabled, you can usesh.disableAutoSplit()
.balancerStop
命令和mongo
Shell 助手方法sh.stopBalancer()
和sh.setBalancerState(false)
也会禁用分片集群的自动分割。To enable auto-splitting when the balancer is disabled, you can usesh.enableAutoSplit()
.
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 开始:
balancerStart
命令和mongo
Shell 助手方法sh.startBalancer()
和sh.setBalancerState(true)
还会启用分片集群的自动分割。To disable auto-splitting when the balancer is enabled, you can usesh.disableAutoSplit()
.balancerStop
命令和mongo
Shell 助手方法sh.stopBalancer()
和sh.setBalancerState(false)
也会禁用分片集群的自动分割。To enable auto-splitting when the balancer is disabled, you can usesh.enableAutoSplit()
.
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.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] | (1,2) 在默认情况下,如果数据块总数小于 20,那么分片集合部分会显示数据块信息。要在有 20 个或更多数据块时显示信息,请调用 sh.status() 方法,将 verbose 参数设置为 true ,即 sh.status(true) 。 |