On this page
replSetGetStatus
在本页面
Definition
replSetGetStatus
replSetGetStatus
命令从处理该命令的服务器的角度返回副本集的状态。replSetGetStatus
必须针对admin database运行。该命令具有以下原型形式:
db.adminCommand( { replSetGetStatus: 1 } )
从 MongoDB 3.4 开始,在secondary成员上运行时,可以选择包含initialSync: 1
以返回initial sync状态信息:
db.adminCommand( { replSetGetStatus: 1, initialSync: 1 } )
此命令提供的数据来自副本集的其他成员发送到服务器的心跳中包含的数据。由于心跳的频率,这些数据可能会过时几秒钟。
mongo shell 提供rs.status()帮助器;但是,您不能使用帮助程序指定initialSync: 1
选项。
mongod实例必须启用复制,并且必须是副本集的成员,才能使replSetGetStatus成功返回。
Example
The following example runs the replSetGetStatus command on the admin database of the replica set primary:
db.adminCommand( { replSetGetStatus : 1 } )
The command returns the following output for an example replica set primary:
{
"set" : "replset",
"date" : ISODate("2018-12-06T16:57:52.480Z"),
"myState" : 1,
"term" : NumberLong(1),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "m1.example.net:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 123,
"optime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T16:57:51Z"),
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1544115363, 1),
"electionDate" : ISODate("2018-12-06T16:56:03Z"),
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
},
{
"_id" : 1,
"name" : "m2.example.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 120,
"optime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T16:57:51Z"),
"optimeDurableDate" : ISODate("2018-12-06T16:57:51Z"),
"lastHeartbeat" : ISODate("2018-12-06T16:57:51.963Z"),
"lastHeartbeatRecv" : ISODate("2018-12-06T16:57:52.082Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "m1.example.net:27017",
"syncSourceHost" : "m1.example.net:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "m3.example.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 120,
"optime" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1544115471, 2),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T16:57:51Z"),
"optimeDurableDate" : ISODate("2018-12-06T16:57:51Z"),
"lastHeartbeat" : ISODate("2018-12-06T16:57:51.963Z"),
"lastHeartbeatRecv" : ISODate("2018-12-06T16:57:52.082Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "m1.example.net:27017",
"syncSourceHost" : "m1.example.net:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
}
],
"ok" : 1,
"operationTime" : Timestamp(1544115471, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1544115471, 2),
"signature" : {
"hash" : BinData(0,"aE8X8Wcbyp0Begv7aPnhlkDa1/0="),
"keyId" : NumberLong("6631924993926103041")
}
}
}
The following example runs the replSetGetStatus command on the admin database of the replica set primary. In this example, the optional initialSync: 1
is included in the command (you can omit if you do not want to return the initial sync status):
db.adminCommand( { replSetGetStatus : 1, initialSync: 1 } )
The command returns the following output for an example replica set secondary:
{
"set" : "replset",
"date" : ISODate("2018-12-06T17:16:20.037Z"),
"myState" : 2,
"term" : NumberLong(1),
"syncingTo" : "m2.example.net:27017",
"syncSourceHost" : "m2.example.net:27017",
"syncSourceId" : 1,
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"readConcernMajorityOpTime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
}
},
"initialSyncStatus" : {
"failedInitialSyncAttempts" : 0,
"maxFailedInitialSyncAttempts" : 10,
"initialSyncStart" : ISODate("2018-12-06T17:15:57.546Z"),
"initialSyncEnd" : ISODate("2018-12-06T17:15:58.221Z"),
"initialSyncElapsedMillis" : 675,
"initialSyncAttempts" : [
{
"durationMillis" : 439,
"status" : "OK",
"syncSource" : "m2.example.net:27017"
}
],
"fetchedMissingDocs" : 0,
"appliedOps" : 0,
"initialSyncOplogStart" : Timestamp(1544116550, 2),
"initialSyncOplogEnd" : Timestamp(1544116550, 2),
"databases" : {
"databasesCloned" : 3,
"admin" : {
"collections" : 4,
"clonedCollections" : 4,
"start" : ISODate("2018-12-06T17:15:57.783Z"),
"end" : ISODate("2018-12-06T17:15:58.031Z"),
"elapsedMillis" : 248,
"admin.system.roles" : {
"documentsToCopy" : 1,
"documentsCopied" : 1,
"indexes" : 2,
"fetchedBatches" : 1,
"start" : ISODate("2018-12-06T17:15:57.784Z"),
"end" : ISODate("2018-12-06T17:15:57.862Z"),
"elapsedMillis" : 78
},
...
},
...
"test" : {
"collections" : 1,
"clonedCollections" : 1,
"start" : ISODate("2018-12-06T17:15:58.155Z"),
"end" : ISODate("2018-12-06T17:15:58.208Z"),
"elapsedMillis" : 53,
"test.foo" : {
"documentsToCopy" : 3,
"documentsCopied" : 3,
"indexes" : 1,
"fetchedBatches" : 1,
"start" : ISODate("2018-12-06T17:15:58.157Z"),
"end" : ISODate("2018-12-06T17:15:58.208Z"),
"elapsedMillis" : 51
}
}
}
},
"members" : [
{
"_id" : 0,
"name" : "m1.example.net:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 22,
"optime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T17:16:15Z"),
"optimeDurableDate" : ISODate("2018-12-06T17:16:15Z"),
"lastHeartbeat" : ISODate("2018-12-06T17:16:18.307Z"),
"lastHeartbeatRecv" : ISODate("2018-12-06T17:16:19.420Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "",
"syncSourceHost" : "",
"syncSourceId" : -1,
"infoMessage" : "",
"electionTime" : Timestamp(1544115363, 1),
"electionDate" : ISODate("2018-12-06T16:56:03Z"),
"configVersion" : 1
},
{
"_id" : 1,
"name" : "m2.example.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 22,
"optime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T17:16:15Z"),
"optimeDurableDate" : ISODate("2018-12-06T17:16:15Z"),
"lastHeartbeat" : ISODate("2018-12-06T17:16:18.307Z"),
"lastHeartbeatRecv" : ISODate("2018-12-06T17:16:19.421Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "",
"syncingTo" : "m1.example.net:27017",
"syncSourceHost" : "m1.example.net:27017",
"syncSourceId" : 0,
"infoMessage" : "",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "m3.example.net:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 24,
"optime" : {
"ts" : Timestamp(1544116575, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-12-06T17:16:15Z"),
"syncingTo" : "m2.example.net:27017",
"syncSourceHost" : "m2.example.net:27017",
"syncSourceId" : 1,
"infoMessage" : "",
"configVersion" : 1,
"self" : true,
"lastHeartbeatMessage" : ""
}
],
"ok" : 1
}
Output
replSetGetStatus 命令返回包含以下字段的文档:
replSetGetStatus.
set
set
值是在replSetName设置中配置的副本集的名称。该值与rs.conf()中的_id相同。
replSetGetStatus.
date
- 根据处理 replSetGetStatus 命令的服务器,以ISODate格式格式化的日期和时间反映当前时间。将此值与replSetGetStatus.members[n].lastHeartbeat的值进行比较,以查找此服务器与副本集的其他成员之间的操作延迟。
replSetGetStatus.
myState
0
和10
之间的整数,表示当前成员的replica state。
replSetGetStatus.
term
- 3.2 版中的新功能。
副本集成员的选举计数。分布式共识算法使用term来确保正确性。
如果使用protocolVersion: 0而不是protocolVersion: 1,则返回-1
。
replSetGetStatus.
syncingTo
- 自版本 3.6.6 起已弃用:3.4.16
从 MongoDB 3.6.6(和 3.4.16)开始,MongoDB 弃用syncingTo。请参见replSetGetStatus.syncSourceHost。
syncingTo
字段保存此实例从其同步的成员的主机名。如果此实例是主实例,则返回一个空字符串""
。
replSetGetStatus.
syncSourceHost
- 版本 3.6.6 中的新功能:3.4.16
syncSourceHost字段保存此实例从其同步的成员的主机名。
如果此实例是主实例,则syncSourceHost是空字符串,而syncSourceId -1
。
replSetGetStatus.
syncSourceId
- 版本 3.6.6 中的新功能:3.4.16
syncSourceId字段保存此实例从其同步的成员的replSetGetStatus.members[n]._id。
如果此实例是主实例,则syncSourceHost是空字符串,而syncSourceId -1
。
replSetGetStatus.
heartbeatIntervalMillis
- 3.2 版中的新功能。
心跳的频率(以毫秒为单位)。
replSetGetStatus.
optimes
- 3.4 版的新功能。
optimes
字段包含一个包含optimes的文档,该文档用于检查复制进度。
replSetGetStatus.optimes.
lastCommittedOpTime
- 从该成员的角度出发,有关已写入大多数副本集成员的最新操作的信息。
该值是包含以下内容的文档:
如果使用protocolVersion: 0,则t
等于-1
。
replSetGetStatus.optimes.
readConcernMajorityOpTime
- 从该成员的角度来看,有关可以满足读取关注"majority"查询的最新操作的信息;即可以满足"majority"个查询的最新lastCommittedOpTime。 readConcernMajorityOpTime小于或等于lastCommittedOpTime。
该值是包含以下内容的文档:
如果使用protocolVersion: 0,则t
等于-1
。
replSetGetStatus.optimes.
appliedOpTime
- 从该成员的角度来看,有关已应用于副本集的此成员的最新操作的信息。
对于protocolVersion: 1,该值是包含以下内容的文档:
对于protocolVersion: 0,该值为操作的Timestamp。
replSetGetStatus.optimes.
durableOpTime
- 从该成员的角度来看,有关已写入副本集该成员的日志的最新操作的信息。
对于protocolVersion: 1,该值是包含以下内容的文档:
对于protocolVersion: 0,该值为操作的Timestamp。
replSetGetStatus.
initialSyncStatus
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
文档提供有关此辅助节点initial sync的进度和状态的信息。
Note
与正在进行的初始同步的进度相关的某些字段仅在初始同步进行时显示,而在初始同步完成后不显示。
replSetGetStatus.initialSyncStatus.
failedInitialSyncAttempts
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initial sync失败并且必须在此辅助节点上重新启动的次数。
replSetGetStatus.initialSyncStatus.
maxFailedInitialSyncAttempts
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
成员关闭之前,initial sync可以在此辅助服务器上重新启动的最大次数。
replSetGetStatus.initialSyncStatus.
initialSyncStart
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
辅助节点initial sync的开始时间戳。
replSetGetStatus.initialSyncStatus.
initialSyncEnd
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
辅助节点initial sync的结束时间戳记。
replSetGetStatus.initialSyncStatus.
initialSyncElapsedMillis
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initialSyncStart和initialSyncEnd之间的毫秒数。
replSetGetStatus.initialSyncStatus.
initialSyncAttempts
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
文档数组,其中每个文档对应一次initial sync次尝试。另请参见failedInitialSyncAttempts。
每个文档都包含以下有关初始同步尝试的信息:
{
"durationMillis" : <duration in milliseconds>,
"status" : <exit status>,
"syncSource" : <source node from which this secondary performs initial sync>
}
replSetGetStatus.initialSyncStatus.
fetchedMissingDocs
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
从同步源中提取的丢失(即未克隆)文档的数量,以便将initial sync启动后发生的更新应用于这些文档。
作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.
appliedOps
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initial sync启动后发生并在克隆数据库后应用的操作数。
作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.
initialSyncOplogStart
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initial sync的操作日志应用程序阶段的开始时间戳记,辅助节点将应用在初始同步开始后发生的更改。
作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.
initialSyncOplogEnd
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initial sync的操作日志应用程序阶段的结束时间戳记,辅助服务器将应用在初始同步开始后发生的更改。
作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。
replSetGetStatus.initialSyncStatus.
databases
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
有关在initial sync期间克隆的数据库的详细信息。
replSetGetStatus.initialSyncStatus.databases.
databasesCloned
- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
initial sync期间克隆的数据库数。
replSetGetStatus.initialSyncStatus.databases.
<dbname>
{#replSetGetStatus.initialSyncStatus.databases.<dbname>}- 3.4 版中的新功能:仅在辅助节点上使用 initialInitial:1 选项运行命令时可用
对于每个数据库,一个文档将返回有关该数据库克隆进度的信息。
{
"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>,
}
}
replSetGetStatus.
members
members
字段包含一个数组,其中包含副本集中每个成员的文档。
replSetGetStatus.members[n].
_id
_id
字段包含成员的标识符。
replSetGetStatus.members[n].
name
name
字段保存服务器的名称。
replSetGetStatus.members[n].
self
self
字段仅包含在成员数组中当前mongod
实例的文档中。其值为true
。
replSetGetStatus.members[n].
health
health
值仅对副本集的其他成员(即不返回rs.status的成员)存在。该字段表示成员是向上(即1
)还是向下(即0
)。
replSetGetStatus.members[n].
state
- state的值是
0
和10
之间的整数,表示成员的replica state。
- state的值是
replSetGetStatus.members[n].
stateStr
- 描述state的字符串。
replSetGetStatus.members[n].
uptime
- uptime字段包含一个值,该值反映此成员已联机的秒数。
对于返回rs.status()数据的成员,此值不出现。
replSetGetStatus.members[n].
optime
- 该成员已应用的操作日志中有关最后操作的信息。
在版本 3.2 中更改。
如果使用protocolVersion: 1,则optime
返回包含以下内容的文档:
如果使用protocolVersion: 0,则optime
返回oplog中应用于副本集的此成员的最后一个操作的Timestamp。
replSetGetStatus.members[n].
optimeDurable
- 3.4 版的新功能。
该成员已对其日记帐应用的操作日志中有关最后操作的信息。
如果使用protocolVersion: 1,则该值为包含以下内容的文档:
如果使用protocolVersion: 0,则值为操作的Timestamp。
replSetGetStatus.members[n].
optimeDate
- ISODate格式的日期字符串,反映此成员应用的oplog中的最后一个条目。如果这与lastHeartbeat明显不同,则该成员正在经历“复制滞后” ,或者自上次更新以来没有任何新操作。在集合的所有成员之间比较
members.optimeDate
。
- ISODate格式的日期字符串,反映此成员应用的oplog中的最后一个条目。如果这与lastHeartbeat明显不同,则该成员正在经历“复制滞后” ,或者自上次更新以来没有任何新操作。在集合的所有成员之间比较
replSetGetStatus.members[n].
optimeDurableDate
- 3.4 版的新功能。
ISODate格式的日期字符串,反映了该成员对其日记应用的oplog中的最后一个条目。
replSetGetStatus.members[n].
syncingTo
- 自版本 3.6.6 起已弃用:3.4.16
从 MongoDB 3.6.6(和 3.4.16)开始,MongoDB 弃用syncingTo。请参见replSetGetStatus.members[n].syncSourceHost。
syncingTo
字段保存此实例从其同步的成员的主机名。如果成员是主要成员,则返回空字符串""
。
replSetGetStatus.members[n].
syncSourceHost
- 版本 3.6.6 中的新功能:3.4.16
syncSourceHost字段保存此实例从其同步的成员的主机名。
如果replSetGetStatus.members[n]
是主字符串,则syncSourceHost是空字符串,而syncSourceId -1
是。
replSetGetStatus.members[n].
syncSourceId
- 版本 3.6.6 中的新功能:3.4.16
syncSourceId字段保存syncSourceHost的replSetGetStatus.members[n]._id值。
如果replSetGetStatus.members[n]
是主字符串,则syncSourceHost是空字符串,而syncSourceId -1
是。
replSetGetStatus.members[n].
electionTime
replSetGetStatus.members[n].
electionDate
replSetGetStatus.members[n].
self
- 指示哪个副本集成员处理了 replSetGetStatus 命令。
replSetGetStatus.members[n].
lastHeartbeat
该值仅对replSetGetStatus.members[n].self指定的服务器以外的副本集成员可用。
replSetGetStatus.members[n].
lastHeartbeatRecv
该值仅对replSetGetStatus.members[n].self指定的服务器以外的副本集成员可用。
replSetGetStatus.members[n].
lastHeartbeatMessage
- 当最后一个心跳包括额外的消息时,lastHeartbeatMessage包含该消息的字符串表示形式。
replSetGetStatus.members[n].
pingMs
pingMs
表示往返数据包在远程成员和本地实例之间传播所需的毫秒数。
对于返回rs.status()数据的成员,此值不出现。
replSetGetStatus.members[n].
syncingTo
syncingTo
字段仅出现在secondary和正在恢复的成员上的rs.status()的输出上,并保留与此实例进行同步的成员的主机名。
replSetGetStatus.members[n].
configVersion
- 3.0 版中的新功能。
configVersion
的值为副本集配置版本。
另请参见Response,以获取有关ok
状态字段,operationTime
字段和$clusterTime
字段的详细信息。