定义
replSetGetStatusreplSetGetStatus命令会从处理该命令的服务器的角度返回副本集的状态。replSetGetStatus必须在 管理员数据库上运行。mongod实例必须为副本集节点才能使replSetGetStatus成功返回。此命令提供的数据源自副本集其他成员发送到服务器的心跳中包含的数据。由于心跳的频率,这些数据可能会过时几秒钟。
提示
在
mongosh中,该命令也可通过rs.status()辅助方法运行。辅助方法对
mongosh用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M0 和 Flex 集群不支持此命令。有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { replSetGetStatus: 1 } )
如果在成员初始同步期间对成员运行 replSetGetStatus 或 mongosh 帮助程序 rs.status()(即STARTUP2状态),则命令返回 replSetGetStatus.initialSyncStatus 指标。
成员完成初始同步并过渡到另一种状态后,replSetGetStatus.initialSyncStatus 指标将不再可用。
注意
如果尚未initialized副本集, replSetGetStatus命令将返回以下错误:
MongoServerError: no replset config has been received
运行replSetInitiate命令并重试。
例子
如下示例将在副本集主节点的管理员数据库上运行 replSetGetStatus 命令:
db.adminCommand( { replSetGetStatus: 1 } )
此命令将返回一个示例副本集主节点的如下输出:
{ "set" : "replset", "date" : ISODate("2024-08-15T23:06:13.978Z"), "myState" : 1, "term" : Long(3), "syncSourceHost" : "", "syncSourceId" : -1, "heartbeatIntervalMillis" : Long(2000), "majorityVoteCount" : 2, "writeMajorityCount" : 2, "votingMembersCount" : 3, "writableVotingMembersCount" : 3, "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "lastCommittedWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "readConcernMajorityOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "readConcernMajorityWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "appliedOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "writtenOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "durableOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "lastAppliedWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime" : ISODate("2024-08-15T23:06:13.978Z") }, "lastStableRecoveryTimestamp" : Timestamp(1723763173, 1), "electionCandidateMetrics" : { "lastElectionReason" : "stepUpRequestSkipDryRun", "lastElectionDate" : ISODate("2024-08-15T23:06:13.978Z"), "electionTerm" : Long(3), "lastCommittedOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(2) }, "lastSeenOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(2) }, "lastSeenWrittenOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "numVotesNeeded" : 2, "priorityAtElection" : 1, "electionTimeoutMillis" : Long(10000), "priorPrimaryMemberId" : 1, "numCatchUpOps" : Long(0), "newTermStartDate" : ISODate("2024-08-15T23:06:13.978Z"), "wMajorityWriteAvailabilityDate" : ISODate("2024-08-15T23:06:13.978Z") }, "electionParticipantMetrics" : { "votedForCandidate" : true, "electionTerm" : Long(2), "lastVoteDate" : ISODate("2024-08-15T23:06:13.978Z"), "electionCandidateMemberId" : 1, "voteReason" : "", "lastAppliedOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "lastWrittenOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "maxAppliedOpTimeInSet" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "priorityAtElection" : 1 }, "members" : [ { "_id" : 0, "name" : "m1.example.net:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 269, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1723763173, 1), "electionDate" : ISODate("2024-08-15T23:06:13.978Z"), "configVersion" : 1, "configTerm" : 0, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 1, "name" : "m2.example.net:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 266, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeDurableDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeat" : ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeatRecv" : ISODate("2024-08-15T23:06:13.978Z"), "pingMs" : Long(0), "lastHeartbeatMessage" : "", "syncSourceHost" : "m3.example.net:27017", "syncSourceId" : 2, "infoMessage" : "", "configVersion" : 1 }, { "_id" : 2, "name" : "m3.example.net:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 266, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeDurableDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeat" : ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeatRecv" : ISODate("2024-08-15T23:06:13.978Z"), "pingMs" : Long(0), "lastHeartbeatMessage" : "", "syncSourceHost" : "m1.example.net:27017", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 1 } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1723763173, 1), "signature" : { "hash" : BinData(0,"9C2qcGVkipEGJW3iF90qxb/gIwc="), "keyId" : Long("6800589497806356482") } }, "operationTime" : Timestamp(1723763173, 1) }
以下示例在副本集从节点的管理数据库上运行 replSetGetStatus 命令:
db.adminCommand( { replSetGetStatus: 1 } )
该命令将返回一个示例副本集从节点的如下输出:
{ "set" : "replset", "date" : ISODate("2024-08-15T23:06:13.978Z"), "myState" : 2, "term" : Long(3), "syncSourceHost" : "m3.example.net:27017", "syncSourceId" : 2, "heartbeatIntervalMillis" : Long(2000), "majorityVoteCount" : 2, "writeMajorityCount" : 2, "votingMembersCount" : 3, "writableVotingMembersCount" : 3, "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "lastCommittedWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "readConcernMajorityOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "readConcernMajorityWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "appliedOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "writtenOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "durableOpTime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "lastAppliedWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime" : ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime" : ISODate("2024-08-15T23:06:13.978Z") }, "lastStableRecoveryTimestamp" : Timestamp(1723763173, 1), "electionParticipantMetrics" : { "votedForCandidate" : true, "electionTerm" : Long(3), "lastVoteDate" : ISODate("2024-08-15T23:06:13.978Z"), "electionCandidateMemberId" : 0, "voteReason" : "", "lastAppliedOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(2) }, "lastWrittenOpTimeAtElection" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "maxAppliedOpTimeInSet" : { "ts" : Timestamp(1723763173, 1), "t" : Long(2) }, "maxWrittenOpTimeInSet" : { "ts" : Timestamp(1723763173, 1), "t" : Long(1) }, "priorityAtElection" : 1, "newTermStartDate" : ISODate("2024-08-15T23:06:13.978Z"), "newTermAppliedDate" : ISODate("2024-08-15T23:06:13.978Z") }, "members" : [ { "_id" : 0, "name" : "m1.example.net:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 407, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeDurableDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeat" : ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeatRecv" : ISODate("2024-08-15T23:06:13.978Z"), "pingMs" : Long(0), "lastHeartbeatMessage" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "electionTime" : Timestamp(1723763173, 1), "electionDate" : ISODate("2024-08-15T23:06:13.978Z"), "configVersion" : 1 }, { "_id" : 1, "name" : "m2.example.net:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 409, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "syncSourceHost" : "m3.example.net:27017", "syncSourceId" : 2, "infoMessage" : "", "configVersion" : 1, "configTerm" : 0, "self" : true, "lastHeartbeatMessage" : "" }, { "_id" : 2, "name" : "m3.example.net:27017", "health" : 1, "state" : 2, "stateStr" : "SECONDARY", "uptime" : 407, "optime" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeWritten" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDurable" : { "ts" : Timestamp(1723763173, 1), "t" : Long(3) }, "optimeDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeWrittenDate" : ISODate("2024-08-15T23:06:13.978Z"), "optimeDurableDate" : ISODate("2024-08-15T23:06:13.978Z"), "lastAppliedWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastWrittenWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastDurableWallTime": ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeat" : ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeatRecv" : ISODate("2024-08-15T23:06:13.978Z"), "pingMs" : Long(0), "lastHeartbeatMessage" : "", "syncSourceHost" : "m1.example.net:27017", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 1 } ], "ok" : 1, "$clusterTime" : { "clusterTime" : Timestamp(1723763173, 1), "signature" : { "hash" : BinData(0,"kmhE5YARZlzn/DX4B/D0E5P6okY="), "keyId" : Long("6800589497806356482") } }, "operationTime" : Timestamp(1723763173, 1), }
- 在早期版本(3.4.x-4.2.0)中
您可以包括可选的
initialSync: 1以在输出中包含replSetGetStatus.initialSyncStatus(如果您不想返回初始同步状态,则可以省略):db.adminCommand( { replSetGetStatus: 1, initialSync: 1 } )
- 从 MongoDB 5.2 开始,
- 在使用基于文件副本的初始同步 时,
replSetGetStatus.initialSyncStatus文档包含 附加字段。
如果您在初始同步期间对成员运行 replSetGetStatus,命令将返回 replSetGetStatus.initialSyncStatus 个指标。
db.adminCommand( { replSetGetStatus: 1 } )
成员完成初始同步并过渡到另一种状态后,replSetGetStatus.initialSyncStatus 指标将不再可用。
如下示例将在 4.4 副本集主节点的初始同步期间,在其管理员数据库上运行 replSetGetStatus 命令:
{ "set" : "replset", "date" : ISODate("2024-08-15T23:06:13.978Z") "myState" : 5, "term" : Long(1), "syncSourceHost" : "m1.example.net:27017", "syncSourceId" : 0, "heartbeatIntervalMillis" : Long(2000), "majorityVoteCount" : 2, "writeMajorityCount" : 2, "votingMembersCount" : 2, "writableVotingMembersCount" : 2, "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "lastCommittedWallTime" : ISODate("1970-01-01T00:00:00Z"), "appliedOpTime" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "writtenOpTime": { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "durableOpTime" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "lastAppliedWallTime" : ISODate("1970-01-01T00:00:00Z"), "lastWrittenWallTime": ISODate("1970-01-01T00:00:00Z"), "lastDurableWallTime" : ISODate("1970-01-01T00:00:00Z") }, "lastStableRecoveryTimestamp" : Timestamp(0, 0), "initialSyncStatus" : { "failedInitialSyncAttempts" : 0, "maxFailedInitialSyncAttempts" : 10, "initialSyncStart" : ISODate("2024-08-15T23:06:13.978Z"), "initialSyncAttempts" : [ ], "appliedOps" : 0, "initialSyncOplogStart" : Timestamp(1723763173, 1), "syncSourceUnreachableSince" : ISODate("2024-08-15T23:06:13.978Z"), "currentOutageDurationMillis" : Long(8687), "totalTimeUnreachableMillis" : Long(8687), "databases" : { "databasesCloned" : 3, "admin" : { "collections" : 4, "clonedCollections" : 4, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 429, "admin.system.roles" : { "documentsToCopy" : 22, "documentsCopied" : 22, "indexes" : 2, "fetchedBatches" : 1, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 138, "receivedBatches" : 1 }, "admin.system.users" : { "documentsToCopy" : 32, "documentsCopied" : 32, "indexes" : 2, "fetchedBatches" : 1, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 149, "receivedBatches" : 1 }, "admin.system.keys" : { "documentsToCopy" : 2, "documentsCopied" : 2, "indexes" : 1, "fetchedBatches" : 1, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 76, "receivedBatches" : 1 }, "admin.system.version" : { "documentsToCopy" : 2, "documentsCopied" : 2, "indexes" : 1, "fetchedBatches" : 1, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 66, "receivedBatches" : 1 } }, "config" : { "collections" : 2, "clonedCollections" : 2, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 198, "config.transactions" : { "documentsToCopy" : 0, "documentsCopied" : 0, "indexes" : 1, "fetchedBatches" : 0, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 74, "receivedBatches" : 0 }, "config.system.sessions" : { "documentsToCopy" : 0, "documentsCopied" : 0, "indexes" : 2, "fetchedBatches" : 0, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 124, "receivedBatches" : 0 } }, "test" : { "collections" : 1, "clonedCollections" : 1, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 47967, "test.hugeindex" : { "documentsToCopy" : 25000, "documentsCopied" : 25000, "indexes" : 2, "fetchedBatches" : 21, "start" : ISODate("2024-08-15T23:06:13.978Z"), "end" : ISODate("2024-08-15T23:06:13.978Z"), "elapsedMillis" : 47967, "receivedBatches" : 21 } } } }, "members" : [ { "_id" : 0, "name" : "m1.example.net:27017", "health" : 0, "state" : 8, "stateStr" : "(not reachable/healthy)", "uptime" : 0, "optime" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeWritten" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeDurable" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "optimeWrittenDate" : ISODate("1970-01-01T00:00:00Z"), "optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"), "lastAppliedWallTime": ISODate("1970-01-01T00:00:00Z"), "lastWrittenWallTime": ISODate("1970-01-01T00:00:00Z"), "lastDurableWallTime": ISODate("1970-01-01T00:00:00Z""), "lastHeartbeat" : ISODate("2024-08-15T23:06:13.978Z"), "lastHeartbeatRecv" : ISODate("2024-08-15T23:06:13.978Z"), "pingMs" : Long(0), "lastHeartbeatMessage" : "Error connecting to m1.example.net:27017 (127.0.0.1:27018) :: caused by :: Connection refused", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "", "configVersion" : 2 }, { "_id" : 1, "name" : "m2.example.net:27017", "health" : 1, "state" : 5, "stateStr" : "STARTUP2", "uptime" : 5297, "optime" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeWritten" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeDurable" : { "ts" : Timestamp(0, 0), "t" : Long(-1) }, "optimeDate" : ISODate("1970-01-01T00:00:00Z"), "optimeWrittenDate" : ISODate("1970-01-01T00:00:00Z"), "lastAppliedWallTime": ISODate("1970-01-01T00:00:00Z"), "lastWrittenWallTime": ISODate("2020-03-05T05:24:38Z"), "lastDurableWallTime": ISODate("1970-01-01T00:00:00Z"), "syncSourceHost" : "m1.example.net:27017", "syncSourceId" : 0, "infoMessage" : "", "configVersion" : 2, "configTerm" : 1, "self" : true, "lastHeartbeatMessage" : "" } ], "ok" : 1 }
输出
replSetGetStatus 命令会返回一个包含以下字段的文件:
replSetGetStatus.setset值是副本集的名称,在replSetName设置中配置。这与rs.conf()中的_id值相同。
replSetGetStatus.dateISODate 格式的日期和时间,其中包含基于处理 replSetGetStatus 命令的服务器的当前时间。将此值与
replSetGetStatus.members[n].lastHeartbeat的值进行比较,以确定此服务器与副本集其他节点之间的运行延迟。
replSetGetStatus.myState介于
0和10之间的整数,表示当前成员的副本状态。
replSetGetStatus.term副本集的选举次数,这是该副本集成员所知道的。分布式共识算法使用
term来确保正确性。
replSetGetStatus.syncSourceHostsyncSourceHost字段保存此实例同步的节点的主机名。如果此实例为主节点,则
syncSourceHost为空字符串,且syncSourceId会-1。
replSetGetStatus.syncSourceIdsyncSourceId字段保存此实例与之同步的节点的replSetGetStatus.members[n]._id。如果此实例为主节点,则
syncSourceHost为空字符串,且syncSourceId会-1。
replSetGetStatus.writeMajorityCount需要满足写关注
"majority"的数据承载投票成员(即非仲裁节点)的数量。写操作只能应用于数据承载成员。有关
replSetGetStatus.writeMajorityCount的计算,请参阅计算写关注 Majority。
replSetGetStatus.votingMembersCount使用
votes: 1配置的成员数,包括仲裁节点。
replSetGetStatus.writableVotingMembersCount使用
votes: 1配置的数据承载成员的数量(不包括仲裁节点)。
replSetGetStatus.optimesoptimes字段包含一个文档,其中包含用于检查复制进度的 optime。optimes字段包括各种操作时间的相应 ISODate 格式的日期字符串。每个 ops/sec 值均为一个包含以下内容的文档:
replSetGetStatus.optimes.lastCommittedWallTime与
lastCommittedOpTime相对应的 ISODate 格式日期字符串。
replSetGetStatus.optimes.readConcernMajorityOpTime从该节点的角度来看,有关可以完成读关注
"majority"查询的最新操作的信息;即可以满足"majority"查询的最新lastCommittedOpTime。readConcernMajorityOpTime小于或等于lastCommittedOpTime。
replSetGetStatus.optimes.readConcernMajorityWallTime与
readConcernMajorityOpTime相对应的 ISODate 格式日期字符串。
replSetGetStatus.optimes.lastAppliedWallTime与
appliedOpTime相对应的 ISODate 格式日期字符串。
replSetGetStatus.optimes.lastDurableWallTime与
durableOpTime相对应的 ISODate 格式日期字符串。
replSetGetStatus.optimes.lastWrittenWallTime写入该成员 oplog 的最新条目的 ISODate 格式日期字符串。
8.0版本新增。
replSetGetStatus.optimes.writtenOpTime写入该成员 oplog 的最新条目的 optime。
8.0版本新增。
replSetGetStatus.electionCandidateMetrics与当前主节点选举相关的指标。
electionCandidateMetrics仅适用于主节点或候选节点。对于候选节点来说,在候选节点未被选为主节点后,这些指标将不可用。replSetGetStatus.electionCandidateMetrics.electionTerm节点的选举次数(即
term),当时它宣布了新的选举。
replSetGetStatus.electionCandidateMetrics.lastCommittedOpTimeAtElection该成员在发起新选举时看到的最近一次
majority-committed optime。
replSetGetStatus.electionCandidateMetrics.lastSeenOpTimeAtElection该成员在发起新选举时的最近一次
applied optime。
replSetGetStatus.electionCandidateMetrics.lastSeenWrittenOpTimeAtElection在调用新选举时,写入该节点的 oplog 的最新条目的 optime 。
8.0版本新增。
replSetGetStatus.electionCandidateMetrics.priorityAtElection宣布选举时该成员的
priority。
replSetGetStatus.electionCandidateMetrics.electionTimeoutMillis选举时副本集已配置的
electionTimeoutMillis设置。
replSetGetStatus.electionCandidateMetrics.priorPrimaryMemberId上一个主节点的
members[n]._id。如果没有以前的主节点,则该字段不存在。
replSetGetStatus.electionCandidateMetrics.targetCatchupOpTime新当选的主节点的目标 ops/sec 用于其追赶过程。只有当新当选的主节点达到目标追赶 ops/sec 时,它才能开始接受写入。
replSetGetStatus.electionCandidateMetrics.newTermStartDate成员作为主节点的时段开始的日期和时间(即
new term条目写入 oplog 的日期和时间)。
replSetGetStatus.electionCandidateMetrics.wMajorityWriteAvailabilityDate在副本集选举后,写关注
"majority"可用的日期和时间(new termoplog 条目被多数提交的日期和时间)。
replSetGetStatus.electionParticipantMetrics与节点参与的最近一次选举相关的指标。
replSetGetStatus.electionParticipantMetrics.lastVoteDate记录参与者投票时间的 ISODate 格式的日期字符串。
replSetGetStatus.electionParticipantMetrics.electionCandidateMemberId召集选举的候选节点的
members[n]._id。
replSetGetStatus.electionParticipantMetrics.voteReason如果该成员未投票给候选节点,那么投票的原因是什么。如果该成员投票给候选节点,则该值为空字符串。
replSetGetStatus.electionParticipantMetrics.lastAppliedOpTimeAtElection该成员在上次选举时最近一次应用的 optime。
ops/sec 值是一个包含时间戳 (
ts) 和任期 (t) 的文档。
replSetGetStatus.electionParticipantMetrics.lastWrittenOpTimeAtElection在上次选举时写入此节点的 oplog 的最新条目的 optime。
8.0版本新增。
replSetGetStatus.electionParticipantMetrics.maxWrittenOpTimeInSet写入任何副本集节点的 oplog 的最新条目的 optime ,如该节点已知。
8.0版本新增。
replSetGetStatus.electionParticipantMetrics.priorityAtElection选举时该成员的
priority。
replSetGetStatus.electionParticipantMetrics.newTermStartDate当选的主节点任期的开始日期和时间;这对应于主节点将
new term条目写入其 oplog 的时间,而不是该条目被添加(即复制)到从节点的 oplog 的时间。该字段仅适用于从节点。对于主节点,请参阅
replSetGetStatus.electionCandidateMetrics.newTermStartDate。
replSetGetStatus.initialSyncStatus提供有关该成员初始同步进度和状态信息的文档。
replSetGetStatus.initialSyncStatus.failedInitialSyncAttempts初始同步失败的次数,在此失败次数后成员必须重新启动。
replSetGetStatus.initialSyncStatus.maxFailedInitialSyncAttempts在该成员关闭之前,可以在该成员上重新启动初始同步的最大次数。
replSetGetStatus.initialSyncStatus.initialSyncStart该成员的初始同步的起始时间戳。
replSetGetStatus.initialSyncStatus.initialSyncEnd此成员的 initial sync 的结束时间戳。
replSetGetStatus.initialSyncStatus.initialSyncElapsedMillisinitialSyncStart和initialSyncEnd之间的毫秒数。
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
重试操作尝试所花费的总时间。
replSetGetStatus.initialSyncStatus.appliedOps初始同步开始后发生并在复制数据库后应用的操作数。
作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.initialSyncOplogStart初始同步的 oplog 应用程序阶段的开始时间戳,成员在此阶段会应用初始同步开始后发生的更改。
作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.initialSyncOplogEnd初始同步的 oplog 应用程序阶段的结束时间戳,成员在此阶段会应用初始同步开始后发生的更改。
作为初始同步过程的一部分,该成员会使用 oplog 更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.syncSourceUnreachableSince同步源变得无法访问的日期和时间。
只有在当前初始同步期间同步源不可用时才会出现。
replSetGetStatus.initialSyncStatus.currentOutageDurationMillis同步源不可用的时长(以毫秒为单位)。
只有在当前初始同步期间同步源不可用时才会出现。
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> } }
replSetGetStatus.initialSyncStatus.method5.2 版本中的新增功能。
用于初始同步的方法。
如果设立为
logical,则同步是逻辑初始同步。如果设立为fileCopyBased,则同步是基于文件副本的初始同步。
replSetGetStatus.initialSyncStatus.approxTotalDataSize待同步的所有文件的大致大小(以字节为单位)。
此字段会在使用基于逻辑或文件副本的初始同步时出现。
replSetGetStatus.initialSyncStatus.totalInitialSyncElapsedMillis正在进行的同步尝试所耗费的总时间。
此字段会在使用基于逻辑或文件副本的初始同步时出现。
replSetGetStatus.initialSyncStatus.remainingInitialSyncEstimatedMillis正在进行的同步尝试的预期剩余时间。
此字段会在使用基于逻辑或文件副本的初始同步时出现。
replSetGetStatus.initialSyncStatus.initialBackupDataSize要同步的初始文件集的总大小(以字节为单位)。
此字段仅在使用基于文件拷贝的初始同步时出现。
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].extensionNumber如果此文件是某个扩展的一部分,则该文件所属扩展的名称。
此字段仅在使用基于文件拷贝的初始同步时出现。
replSetGetStatus.membersmembers字段保存一个数组,其中包含副本集中每个成员的文档。replSetGetStatus.members[n].ip节点的已解析 IP 地址。如果
mongod无法将replSetGetStatus.members[n].name解析为 IP 地址,则返回值为 BSON 空值。否则,返回的值是解析的 IP 地址的字符串表示形式。
replSetGetStatus.members[n].self布尔值,表示该成员是否为当前
mongod实例。self字段仅包含在当前mongod实例的文档中,因此其值始终为true。
replSetGetStatus.members[n].state介于
0和10之间的整数,表示成员的副本状态。
replSetGetStatus.members[n].stateStr一个描述
state的字符串。
replSetGetStatus.members[n].uptime对于运行
replSetGetStatus命令的节点,uptime是该节点在线的秒数。对于其他节点,
uptime是该节点与运行replSetGetStatus命令的节点持续通信的秒数。
replSetGetStatus.members[n].optimeDurable关于该成员已应用到其日志的来自 oplog 的最后一次操作的信息。
optimeDurable返回一个包含以下内容的文档:
replSetGetStatus.members[n].optimeDateISODate 格式的日期字符串,其中包含该节点已应用的 oplog 中的最后一个条目。如果该字符串与
lastHeartbeat有很大出入,则表示该节点出现“复制延迟”或自上次更新后便无任何新操作。比较该集合中所有成员之间的members.optimeDate。
replSetGetStatus.members[n].lastAppliedWallTimeISODate 格式的日期字符串,反映副本集的此成员在主节点上执行最后一次操作的挂钟时间。
replSetGetStatus.members[n].lastDurableWallTimeISODate 格式的日期字符串,反映最后一次写入该成员日志的操作首次应用于主节点的挂钟时间。
replSetGetStatus.members[n].lastHeartbeatISODate 格式的日期和时间,其中包含处理 replSetGetStatus 命令的服务器上次收到发送到此成员 (
members[n]) 的心跳响应时间。将此值与date和lastHeartbeatRecv字段的值进行比较,即可跟踪这些副本集节点之间的延迟。此值仅适用于
replSetGetStatus.members[n].self指定的服务器以外的副本集成员。
replSetGetStatus.members[n].lastHeartbeatRecvISODate 格式的日期和时间,其中包含处理 replSetGetStatus 命令的服务器上次收到来自该成员 (
members[n]) 的心跳请求的时间。将此值与date和lastHeartbeat字段的值进行比较,即可跟踪这些副本集节点之间的延迟。此值仅适用于
replSetGetStatus.members[n].self指定的服务器以外的副本集成员。
replSetGetStatus.members[n].lastHeartbeatMessage当最后一次心跳包含一条额外消息时,
lastHeartbeatMessage将包含该消息的字符串表示形式。
replSetGetStatus.members[n].pingMspingMs表示往返数据包在远程成员和本地实例之间传输所需的毫秒 (ms) 数。该值不会出现在返回
rs.status()数据的节点中。
replSetGetStatus.members[n].syncSourceHostsyncSourceHost字段保存此实例同步的节点的主机名。如果
replSetGetStatus.members[n]是主节点,则syncSourceHost是一个空字符串,且syncSourceId为-1。
replSetGetStatus.members[n].syncSourceIdsyncSourceId字段存储syncSourceHost的replSetGetStatus.members[n]._id值。如果
replSetGetStatus.members[n]是主节点,则syncSourceHost是一个空字符串,且syncSourceId为-1。
replSetGetStatus.members[n].configVersionconfigVersion值是replica set configuration version。
replSetGetStatus.members[n].optimeWritten写入节点的 oplog 的最新条目的 optime。
8.0版本新增。
replSetGetStatus.members[n].optimeWrittenDate写入节点 oplog 的最新条目的 ISODate 格式日期字符串。
8.0版本新增。
replSetGetStatus.members[n].lastWrittenWallTime该节点的最新 oplog 条目在主节点写入时间的 ISODate 格式的日期字符串。
8.0版本新增。
replSetGetStatus.tooStale一个布尔值,它表示某一副本集节点已严重落后于主节点的 oplog,并陷入
RECOVERING状态。仅当其值为true时,该字段才会包含在replSetGetStatus输出中。
有关 ok 状态字段、operationTime 字段和 $clusterTime 字段的详情,另请参阅响应。
replSetGetStatus.optime从副本集删除节点后出现。提供已删除节点应用的最后一个 oplog 条目的 optime。
replSetGetStatus.optimeDate从副本集删除节点后出现。提供已删除节点应用的最后一个 oplog 条目的 optime 的 ISODate 格式字符串。
replSetGetStatus.optimeWritten从副本集删除成员后出现。提供写入被删除成员的 oplog 的最后一项的 optime。
8.0版本新增。
replSetGetStatus.optimeWrittenDate从副本集删除节点后出现。提供写入已删除节点的 oplog 中的最后一个条目的 optime 的 ISODate 格式的字符串。
8.0版本新增。