replSetGetStatus

在本页面

Definition

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

Primary
Secondary

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 命令返回包含以下字段的文档:

副本集成员的选举计数。分布式共识算法使用term来确保正确性。

如果使用protocolVersion: 0而不是protocolVersion: 1,则返回-1

从 MongoDB 3.6.6(和 3.4.16)开始,MongoDB 弃用syncingTo。请参见replSetGetStatus.syncSourceHost

syncingTo字段保存此实例从其同步的成员的主机名。如果此实例是主实例,则返回一个空字符串""

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

如果此实例是主实例,则syncSourceHost是空字符串,而syncSourceId -1

syncSourceId字段保存此实例从其同步的成员的replSetGetStatus.members[n]._id

如果此实例是主实例,则syncSourceHost是空字符串,而syncSourceId -1

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

optimes字段包含一个包含optimes的文档,该文档用于检查复制进度。

该值是包含以下内容的文档:

如果使用protocolVersion: 0,则t等于-1

该值是包含以下内容的文档:

如果使用protocolVersion: 0,则t等于-1

对于protocolVersion: 1,该值是包含以下内容的文档:

对于protocolVersion: 0,该值为操作的Timestamp

对于protocolVersion: 1,该值是包含以下内容的文档:

对于protocolVersion: 0,该值为操作的Timestamp

文档提供有关此辅助节点initial sync的进度和状态的信息。

Note

与正在进行的初始同步的进度相关的某些字段仅在初始同步进行时显示,而在初始同步完成后不显示。

initial sync失败并且必须在此辅助节点上重新启动的次数。

成员关闭之前,initial sync可以在此辅助服务器上重新启动的最大次数。

辅助节点initial sync的开始时间戳。

辅助节点initial sync的结束时间戳记。

initialSyncStartinitialSyncEnd之间的毫秒数。

文档数组,其中每个文档对应一次initial sync次尝试。另请参见failedInitialSyncAttempts

每个文档都包含以下有关初始同步尝试的信息:

{
   "durationMillis" : <duration in milliseconds>,
   "status" : <exit status>,
   "syncSource" : <source node from which this secondary performs initial sync>
}

从同步源中提取的丢失(即未克隆)文档的数量,以便将initial sync启动后发生的更新应用于这些文档。

作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。

initial sync启动后发生并在克隆数据库后应用的操作数。

作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。

initial sync的操作日志应用程序阶段的开始时间戳记,辅助节点将应用在初始同步开始后发生的更改。

作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。

initial sync的操作日志应用程序阶段的结束时间戳记,辅助服务器将应用在初始同步开始后发生的更改。

作为初始同步过程的一部分,辅助数据库使用操作日志更新其数据集以反映副本集的当前状态。

有关在initial sync期间克隆的数据库的详细信息。

initial sync期间克隆的数据库数。

对于每个数据库,一个文档将返回有关该数据库克隆进度的信息。

{
   "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>,
   }
}

对于返回rs.status()数据的成员,此值不出现。

在版本 3.2 中更改。

如果使用protocolVersion: 1,则optime返回包含以下内容的文档:

如果使用protocolVersion: 0,则optime返回oplog中应用于副本集的此成员的最后一个操作的Timestamp

该成员已对其日记帐应用的操作日志中有关最后操作的信息。

如果使用protocolVersion: 1,则该值为包含以下内容的文档:

如果使用protocolVersion: 0,则值为操作的Timestamp

ISODate格式的日期字符串,反映了该成员对其日记应用的oplog中的最后一个条目。

从 MongoDB 3.6.6(和 3.4.16)开始,MongoDB 弃用syncingTo。请参见replSetGetStatus.members[n].syncSourceHost

syncingTo字段保存此实例从其同步的成员的主机名。如果成员是主要成员,则返回空字符串""

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

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

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

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

该值仅对replSetGetStatus.members[n].self指定的服务器以外的副本集成员可用。

该值仅对replSetGetStatus.members[n].self指定的服务器以外的副本集成员可用。

对于返回rs.status()数据的成员,此值不出现。

configVersion的值为副本集配置版本

另请参见Response,以获取有关ok状态字段,operationTime字段和$clusterTime字段的详细信息。

首页