Docs 菜单

Docs 主页开发应用程序MongoDB Manual

replSetGetStatus

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 例子
  • 输出
replSetGetStatus

replSetGetStatus 命令会从处理该命令的服务器的角度返回副本集的状态。replSetGetStatus 必须在管理员数据库上运行。

mongod实例必须是副本集成员, replSetGetStatus才能成功返回。

此命令提供的数据源自副本集其他成员发送到服务器的心跳中包含的数据。由于心跳的频率,这些数据可能会过时几秒钟。

提示

mongosh中,该命令也可以通过rs.status()辅助方法运行。

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

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

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

注意

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

该命令具有以下语法:

db.adminCommand(
{
replSetGetStatus: 1
}
)
  • 从 MongoDB 4.2.1 开始

    如果您在 初始同步replSetGetStatus (即rs.status()STARTUP2 状态)期间对成员运行 或mongoshreplSetGetStatus.initialSyncStatus 辅助程序 ,该命令将返回 指标。

    成员完成初始同步并转换到另一种状态后, replSetGetStatus.initialSyncStatus指标将不再可用。

  • 在早期版本(3.4.x-4.2.0)中

    要返回初始同步状态信息,请在针对从节点成员或处于 STARTUP2 状态的成员的命令中加入 initialSync: 1

    db.adminCommand( { replSetGetStatus: 1, initialSync: 1 } )

    在成员完成初始同步后, replSetGetStatus.initialSyncStatus指标仍然可用。也就是说,您可以在从节点成员上运行带有initialSync: 1replSetGetStatus命令,以返回其初始同步信息。

    您不能在initialSync: 1 mongosh助手rs.status() 中指定 。

注意

如果尚未initialized副本集, replSetGetStatus命令将返回以下错误:

MongoServerError: no replset config has been received

运行replSetInitiate命令并重试。

replSetGetStatus 命令会返回一个包含以下字段的文件:

replSetGetStatus.set

set 值是副本集的名称,在replSetName 设置中配置。这与 rs.conf() 中的 _id 值相同。

replSetGetStatus.date

ISODate格式的日期和时间,其中包含基于处理replSetGetStatus命令的服务器的当前时间。将其与replSetGetStatus.members[n].lastHeartbeat的值进行比较,以确定该服务器与副本集其他成员之间的操作延迟。

replSetGetStatus.myState

介于 010 之间的整数,表示当前成员的副本状态

replSetGetStatus.term

副本集的选举计数,这是该副本集节点所知道的。分布式共识算法使用term来确保正确性。

replSetGetStatus.syncSourceHost

syncSourceHost字段保存此实例同步的成员的主机名。

如果此实例为主节点,则syncSourceHost为空字符串,而syncSourceId -1为空字符串。

replSetGetStatus.syncSourceId

syncSourceId字段会保存此实例与之同步的节点的replSetGetStatus.members[n]._id

如果此实例为主节点,则syncSourceHost为空字符串,而syncSourceId -1为空字符串。

replSetGetStatus.heartbeatIntervalMillis

心跳频率(以毫秒为单位)。

replSetGetStatus.majorityVoteCount

4.2.1 版本中的新增内容

在选举中选出新的主节点所需的多数票数。

replSetGetStatus.writeMajorityCount

4.2.1 版本中的新增内容

需要满足写关注 "majority" 的数据承载投票成员(即非仲裁节点)的数量。写操作只能应用于数据承载成员。

有关replSetGetStatus.writeMajorityCount的计算,请参阅计算写关注的 Majority。

replSetGetStatus.votingMembersCount

使用 votes: 1 配置的成员数,包括仲裁节点。

replSetGetStatus.writableVotingMembersCount

使用 votes: 1 配置的数据承载成员的数量(不包括仲裁节点)。

replSetGetStatus.optimes

optimes 字段包含一个文档,其中包含用于检查复制进度的 ops/sec。从 MongoDB 4.2 开始,optimes 包含各种 ops/sec 对应的 ISODate 格式的日期字符串。

每个 ops/sec 值均为一个包含以下内容的文档:

  • ts,操作的时间戳

  • t,最初在主节点上生成操作的term

replSetGetStatus.optimes.lastCommittedOpTime

从该成员的角度来看,有关最近一次写入大多数副本集成员的操作的信息。

replSetGetStatus.optimes.lastCommittedWallTime

lastCommittedOpTime对应的 ISODate 格式的日期字符串。

如果并非所有成员都位于 MongoDB 4上,则lastCommittedWallTime可能无法准确表示lastCommittedOpTime }。 2或更高版本,因为lastCommittedWallTime需要与部署的其他成员通信。

4.2 版本中的新增功能

replSetGetStatus.optimes.readConcernMajorityOpTime

从该成员的角度来看,有关可以完成读关注"majority" 查询的最新操作的信息;即可以满足lastCommittedOpTime "majority"查询的最新readConcernMajorityOpTimelastCommittedOpTime 小于或等于 。

replSetGetStatus.optimes.readConcernMajorityWallTime

readConcernMajorityOpTime对应的 ISODate 格式的日期字符串。

如果并非所有成员都位于 MongoDB 4上,则readConcernMajorityWallTime可能无法准确表示readConcernMajorityOpTime }。 2或更高版本,因为readConcernMajorityWallTime需要与部署的其他成员通信。

4.2 版本中的新增功能

replSetGetStatus.optimes.appliedOpTime

从该成员的角度来看,有关最近一次应用于该副本集成员的操作的信息。

replSetGetStatus.optimes.lastAppliedWallTime

appliedOpTime对应的 ISODate 格式的日期字符串。

4.2 版本中的新增功能

replSetGetStatus.optimes.durableOpTime

从该成员的角度来看,有关最近一次写入该副本集成员日志的操作的信息。

replSetGetStatus.optimes.lastDurableWallTime

durableOpTime对应的 ISODate 格式的日期字符串。

4.2 版本中的新增功能

replSetGetStatus.lastStableCheckpointTimestamp

自版本 4.2 起已弃用

适用于 WiredTiger 存储引擎

当前或上一个持久化检查点的时间戳。尽管lastStableCheckpointTimestamp可能滞后于最新的持久化检查点,但返回的时间戳保证以稳定的检查点持久化到磁盘。

null 值表示不存在稳定的检查点。

replSetGetStatus.lastStableRecoveryTimestamp

4.2 版本中的新增功能

仅供内部使用

replSetGetStatus.electionCandidateMetrics

4.2.1 版本中的新增内容

与当前主节点选举相关的指标。 electionCandidateMetrics仅适用于主节点或候选节点。对于候选节点,在候选节点落选后,这些指标将不可用。

replSetGetStatus.electionCandidateMetrics.lastElectionReason

4.2.1 版本中的新增内容

成员宣布选举的原因。

replSetGetStatus.electionCandidateMetrics.lastElectionDate

4.2.1 版本中的新增内容

该成员发起选举的日期和时间。

replSetGetStatus.electionCandidateMetrics.electionTerm

在版本 4.2.2 中更改:在 v4.2.1 中,electionTerm 被命名为 electionTerm

该成员在发起新选举时的选举计数(即term )。

replSetGetStatus.electionCandidateMetrics.lastCommittedOpTimeAtElection

4.2.1 版本中的新增内容

该成员在称为新选举时看到的最近的majority-committed optime

replSetGetStatus.electionCandidateMetrics.lastSeenOpTimeAtElection

4.2.1 版本中的新增内容

该成员在召集新选举时的最近一次applied optime

replSetGetStatus.electionCandidateMetrics.numVotesNeeded

4.2.1 版本中的新增内容

赢得选举所需的票数。

replSetGetStatus.electionCandidateMetrics.priorityAtElection

4.2.1 版本中的新增内容

宣布选举时该成员的priority

replSetGetStatus.electionCandidateMetrics.electionTimeoutMillis

4.2.1 版本中的新增内容

选举时副本集已配置的 electionTimeoutMillis 设置。

replSetGetStatus.electionCandidateMetrics.priorPrimaryMemberId

4.2.1 版本中的新增内容

上一个主节点的 members[n]._id。如果没有以前的主节点,则该字段不存在。

replSetGetStatus.electionCandidateMetrics.targetCatchupOpTime

4.2.1 版本中的新增内容

新当选的主节点的目标 ops/sec 用于其追赶过程。只有当新当选的主节点达到目标追赶 ops/sec 时,它才能开始接受写入。

replSetGetStatus.electionCandidateMetrics.numCatchUpOps

4.2.1 版本中的新增内容

新当选的主节点在成功结束追赶过程时所应用的操作数量。

replSetGetStatus.electionCandidateMetrics.newTermStartDate

4.2.1 版本中的新增内容

成员作为主节点的时段开始的日期和时间(即 new term 条目写入 oplog 的日期和时间)。

replSetGetStatus.electionCandidateMetrics.wMajorityWriteAvailabilityDate

4.2.1 版本中的新增内容

在副本集选举后,写关注 "majority" 可用的日期和时间(new term oplog 条目被多数提交的日期和时间)。

replSetGetStatus.electionParticipantMetrics

与节点参与的最近一次选举相关的指标。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.votedForCandidate

布尔值,表示该节点是否投票支持召集选举的候选节点。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.electionTerm

成员所参与选举的任期。该任期可标识与参与者指标关联的选举。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.lastVoteDate

记录参与者投票时间的 ISODate 格式的日期字符串。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.electionCandidateMemberId

召集选举的候选节点的 members[n]._id

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.voteReason

如果该成员未投票给候选节点,那么投票的原因是什么。如果该成员投票给候选节点,则该值为空字符串。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.lastAppliedOpTimeAtElection

该成员在选举时最近一次应用的 ops/sec。

ops/sec 值是一个包含时间戳 (ts) 和任期 (t) 的文档。

replSetGetStatus.electionParticipantMetrics.maxAppliedOpTimeInSet

如该成员所知,为此副本集的任何成员最近一次应用的 ops/sec。

ops/sec 值是一个包含时间戳 (ts) 和任期 (t) 的文档。

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.priorityAtElection

选举时该成员的 priority

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.newTermStartDate

当选的主节点任期的开始日期和时间;这对应于主节点将 new term 条目写入其 oplog 的时间,而不是该条目被添加(即复制)到从节点的 oplog 的时间。

该字段仅适用于从节点。对于主节点,请参阅replSetGetStatus.electionCandidateMetrics.newTermStartDate

版本 4.2.2 中的新增功能

replSetGetStatus.electionParticipantMetrics.newTermAppliedDate

此从节点应用 new term 条目的日期和时间。

该字段仅适用于从节点。

版本 4.2.2 中的新增功能

replSetGetStatus.initialSyncStatus

提供有关该成员初始同步进度和状态信息的文档。

重要

可用性

从 MongoDB 4开始。 2 。 1 、 replSetGetStatus.initialSyncStatus指标仅在初始同步(即STARTUP2状态)期间在成员上运行时可用。

在早期版本 ( 3 . 6 .x- 4 . 2 . 0 ) 中,当命令在从节点或成员上使用initialSync: 1选项运行时, replSetGetStatus.initialSyncStatus指标可用其STARTUP2状态,即使在该成员完成初始同步后。但是,某些与正在进行的初始同步进度相关的字段仅在初始同步进行时显示,在初始同步完成后立即消失。

replSetGetStatus.initialSyncStatus.failedInitialSyncAttempts

初始同步失败的次数,在此失败次数后成员必须重新启动。

replSetGetStatus.initialSyncStatus.maxFailedInitialSyncAttempts

在该成员关闭之前,可以在该成员上重新启动初始同步的最大次数。

replSetGetStatus.initialSyncStatus.initialSyncStart

该成员的初始同步的起始时间戳。

replSetGetStatus.initialSyncStatus.initialSyncEnd

此成员的 initial sync 的结束时间戳。

replSetGetStatus.initialSyncStatus.initialSyncElapsedMillis

initialSyncStartinitialSyncEnd之间的毫秒数。

replSetGetStatus.initialSyncStatus.initialSyncAttempts

文档数组,其中每个文档均对应一次初始同步尝试。例如:

"initialSyncAttempts" : [
{
"durationMillis" : 59539,
"status" : "InvalidOptions: error fetching oplog during initial sync :: caused by :: Error while getting the next batch in the oplog fetcher :: caused by :: readConcern afterClusterTime value must not be greater than the current clusterTime. Requested clusterTime: { ts: Timestamp(0, 1) }; current clusterTime: { ts: Timestamp(0, 0) }",
"syncSource" : "m1.example.net:27017",
"rollBackId" : 1,
"operationsRetried" : 120,
"totalTimeUnreachableMillis" : 52601
}
],

每份文档都包含以下用于初始同步尝试的信息:

字段
说明
durationMillis
初始同步尝试的持续时间(以毫秒为单位)。
状态
初始同步尝试的退出状态。
syncSource
初始同步尝试的同步源。
rollBackId

初始同步尝试开始时同步源的回滚标识符。

rollBackId 在使用基于文件复制的初始同步时不会出现。

operationsRetried
所有操作重试的总次数。
totalTimeUnreachableMillis
重试操作尝试所花费的总时间。

另请参阅failedInitialSyncAttempts

replSetGetStatus.initialSyncStatus.appliedOps

初始同步开始后发生并在复制数据库后应用的操作数。

作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。

replSetGetStatus.initialSyncStatus.initialSyncOplogStart

初始同步的 oplog 应用程序阶段的开始时间戳,成员在此阶段会应用初始同步开始后发生的更改。

作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。

replSetGetStatus.initialSyncStatus.initialSyncOplogEnd

初始同步的 oplog 应用程序阶段的结束时间戳,成员在此阶段会应用初始同步开始后发生的更改。

作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。

replSetGetStatus.initialSyncStatus.syncSourceUnreachableSince

同步源变得无法访问的日期和时间。

只有在当前初始同步期间同步源不可用时才会出现。

replSetGetStatus.initialSyncStatus.currentOutageDurationMillis

同步源不可用的时长(以毫秒为单位)。

只有在当前初始同步期间同步源不可用时才会出现。

replSetGetStatus.initialSyncStatus.totalTimeUnreachableMillis

当前初始同步期间该成员不可用的总时长(以毫秒为单位)。

replSetGetStatus.initialSyncStatus.databases

初始同步期间所克隆数据库的相关详细信息。

replSetGetStatus.initialSyncStatus.databases.databasesCloned

初始同步时克隆的数据库数量。

replSetGetStatus.initialSyncStatus.databases.<dbname>

对于每个数据库,这是一份返回该数据库克隆进度信息的文档。

{
"collections" : <number of collections to clone in the database>,
"clonedCollections" : <number of collections cloned to date>,
"start" : <start date and time for the database clone>,
"end" : <end date and time for the database clone>,
"elapsedMillis" : <duration of the database clone>,
"<db>.<collection>" : {
"documentsToCopy" : <number of documents to copy>,
"documentsCopied" : <number of documents copied to date>,
"indexes" : <number of indexes>,
"fetchedBatches" : <number of batches of documents fetched to date>,
"start" : <start date and time for the collection clone>,
"end" : <end date and time for the collection clone>,
"elapsedMillis" : <duration of the collection clone>,
"receivedBatches" : <number of batches of documents received to date> // Added in 4.2
}
}
replSetGetStatus.initialSyncStatus.method

5.2 版本中的新增功能

用于初始同步的方法。

如果设立为 logical,则同步是逻辑初始同步。如果设立为 fileCopyBased,则同步是基于文件副本的初始同步。

replSetGetStatus.initialSyncStatus.approxTotalDataSize

待同步的所有文件的大致大小(以字节为单位)。

此字段会在使用基于逻辑或文件副本的初始同步时出现。

replSetGetStatus.initialSyncStatus.approxTotalBytesCopied

已复制的总字节数。

此字段会在使用基于逻辑或文件副本的初始同步时出现。

replSetGetStatus.initialSyncStatus.totalInitialSyncElapsedMillis

正在进行的同步尝试所耗费的总时间。

此字段会在使用基于逻辑或文件副本的初始同步时出现。

replSetGetStatus.initialSyncStatus.remainingInitialSyncEstimatedMillis

正在进行的同步尝试的预期剩余时间。

此字段会在使用基于逻辑或文件副本的初始同步时出现。

replSetGetStatus.initialSyncStatus.initialBackupDataSize

要同步的初始文件集的总大小(以字节为单位)。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.previousOplogEnd

前一备份游标中可用的 ops/sec

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.currentOplogEnd

保证在当前备份游标中可用的最后一个 ops/sec

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.syncSourceLastApplied

在此备份游标开始之前,在同步源上应用的最后一次更新的 ops/sec

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.numExtensions

同步已启动新备份游标的次数。

如果备份游标尚未启动,则不会显示此字段。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.extensionDataSize

当前扩展中的总字节数。

如果没有正在进行的扩展,则不会显示此字段。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.files

基于文件拷贝的初始同步过程中要同步的文件数组。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.files[n].filePath

此文件相对于备份游标根目录的路径。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.files[n].fileSize

备份游标所报告的文件大小。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.files[n].bytesCopied

目前已复制的字节数。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.initialSyncStatus.files[n].extensionNumber

如果此文件是扩展名的一部分,则为该文件所属的扩展名的编号。

此字段仅在使用基于文件拷贝的初始同步时出现。

replSetGetStatus.members

members 字段保存一个数组,其中包含副本集中每个成员的文档。

replSetGetStatus.members[n]._id

成员的标识符。

replSetGetStatus.members[n].name

该成员的名称。

replSetGetStatus.members[n].ip

成员的已解析 IP 地址。如果mongod无法将replSetGetStatus.members[n].name解析为 IP 地址,则返回值为 BSON null。否则,返回的值是解析的 IP 地址的字符串表示形式。

4.2 版本中的新增功能

replSetGetStatus.members[n].self

布尔值,表示该成员是否为当前 mongod 实例。

self字段仅包含在当前mongod实例的文档中,因此其值始终为 true

replSetGetStatus.members[n].health

一个表示该成员是处于活动状态 (1) 还是非活动状态 (0) 的数字。

replSetGetStatus.members[n].state

介于 010 之间的整数,表示成员的副本状态

replSetGetStatus.members[n].stateStr

描述state的字符串。

replSetGetStatus.members[n].uptime

对于运行replSetGetStatus命令的成员, uptime是该成员在线的秒数。

对于其他节点, uptime是该节点与运行replSetGetStatus命令的节点持续通信的秒数。

replSetGetStatus.members[n].optime

关于该成员应用的来自操作日志的最后一次操作的信息。

optime 返回一个包含以下内容的文档:

  • ts,对 oplog 副本集的该节点应用最后一次操作的 时间戳

  • t,最后应用的操作最初是在主节点上生成的term

replSetGetStatus.members[n].optimeDurable

关于该成员已应用到其日志的来自 oplog 的最后一次操作的信息。

optimeDurable 返回一个包含以下内容的文档:

  • ts,操作的时间戳

  • t,最初在主节点上生成此操作的term

replSetGetStatus.members[n].optimeDate

ISODate格式的日期字符串,包含该成员应用的oplog中的最后一个条目。如果这与lastHeartbeat有很大出入,则该成员要么遇到“复制延迟” ,要么在上次更新后没有任何新操作。比较该集合的所有成员之间的members.optimeDate

replSetGetStatus.members[n].optimeDurableDate

一个 ISODate 格式的日期字符串,其中包含 oplog 中该成员应用于其日记中的最后一个条目。

replSetGetStatus.members[n].lastAppliedWallTime

ISODate 格式的日期字符串,反映副本集的此成员在主节点上执行最后一次操作的挂钟时间。

replSetGetStatus.members[n].lastDurableWallTime

ISODate 格式的日期字符串,反映最后一次写入该成员日志的操作首次应用于主节点的挂钟时间。

replSetGetStatus.members[n].electionTime

操作日志中有关选举时间戳的信息(适用于当前主节点)。有关选举的更多信息,请参阅副本集高可用性

replSetGetStatus.members[n].electionDate

包含选举日期的 ISODate 格式的日期字符串(适用于当前主节点)。有关选举的更多信息,请参阅副本集高可用性

replSetGetStatus.members[n].lastHeartbeat

ISODate格式的日期和时间,其中包含处理replSetGetStatus命令的服务器上次收到发送到此成员 ( members[n] ) 的心跳响应的时间。将此值与datelastHeartbeatRecv字段的值进行比较,以跟踪这些副本集节点之间的延迟。

此值仅适用于replSetGetStatus.members[n].self指定的服务器以外的副本集节点。

replSetGetStatus.members[n].lastHeartbeatRecv

ISODate格式的日期和时间,其中包含处理replSetGetStatus命令的服务器上次收到来自该成员的心跳请求的时间 ( members[n] )。将此值与datelastHeartbeat字段的值进行比较,以跟踪这些副本集节点之间的延迟。

此值仅适用于replSetGetStatus.members[n].self指定的服务器以外的副本集节点。

replSetGetStatus.members[n].lastHeartbeatMessage

当最后一个心跳包含额外消息时, lastHeartbeatMessage包含该消息的字符串表示形式。

replSetGetStatus.members[n].pingMs

pingMs 表示往返数据包在远程成员和本地实例之间传输所需的毫秒 (ms) 数。

该值不会出现在返回 rs.status() 数据的节点中。

replSetGetStatus.members[n].syncSourceHost

syncSourceHost字段保存此实例同步的成员的主机名。

如果replSetGetStatus.members[n]是主节点,则syncSourceHost为空字符串,而syncSourceId -1为空字符串。

replSetGetStatus.members[n].syncSourceId

syncSourceId字段保存 syncSourceHostreplSetGetStatus.members[n]._id

如果replSetGetStatus.members[n]是主节点,则syncSourceHost为空字符串,而syncSourceId -1为空字符串。

replSetGetStatus.members[n].configVersion

configVersion 值是 replica set configuration version

replSetGetStatus.tooStale

一个布尔值,表示副本集节点已远远落后于主节点的oplog,并停留在RECOVERING状态。仅当其值为true时,此字段才会包含在replSetGetStatus输出中。

有关 ok 状态字段、operationTime 字段和 $clusterTime 字段的详情,另请参阅响应

← replSetGetConfig