Remarque :Assurez-vous de vérifier la réponse fourni par arcseldon pour un équivalent convivial.
Vous pouvez utiliser la sortie de rs.status()
. Si secondaire est synchronisé et n'a pas été créé avec slaveDelay
option puis optime
et optimeDate
du secondaire doivent être égaux ou proches (s'il y a des opérations en cours) à ceux du primaire. Dans ce cas stateStr
doit être égal à SECONDARY
. Donc, si le secondaire est synchronisé, vous devriez voir une sortie similaire à celle-ci (un membre a été supprimé de la sortie pour plus de clarté) :
{
"set" : "rs0",
"date" : ISODate("2013-11-08T14:58:49Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "hostname:27001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 155,
"optime" : Timestamp(1383915748, 1),
"optimeDate" : ISODate("2013-11-08T13:02:28Z"),
"self" : true
},
{
"_id" : 2,
"name" : "hostname:27003",
"health" : 0,
"state" : 8,
"stateStr" : "SECONDARY",
"uptime" : 0,
"optime" : Timestamp(1383915748, 1),
"optimeDate" : ISODate("2013-11-08T13:02:28Z"),
"lastHeartbeat" : ISODate("2013-11-08T14:58:48Z"),
"lastHeartbeatRecv" : ISODate("2013-11-08T14:58:42Z"),
"pingMs" : 0,
"syncingTo" : "hostname:27001"
}
],
"ok" : 1
}
Ici, vous avez la sortie de rs.status()
pour le même jeu de réplicas si l'un des secondaires n'est pas synchronisé. Tout d'abord vous verrez que optime
et optimeDate
pour hostname:27003
diffère du primaire, stateStr est défini sur RECOVERING
et il y a un lastHeartbeatMessage
approprié .
{
"set" : "rs0",
"date" : ISODate("2013-11-08T15:01:34Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "hostname:27001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 320,
"optime" : Timestamp(1383922858, 767),
"optimeDate" : ISODate("2013-11-08T15:00:58Z"),
"self" : true
},
{
"_id" : 2,
"name" : "hostname:27003",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 14,
"optime" : Timestamp(1383915748, 1),
"optimeDate" : ISODate("2013-11-08T13:02:28Z"),
"lastHeartbeat" : ISODate("2013-11-08T15:01:34Z"),
"lastHeartbeatRecv" : ISODate("2013-11-08T15:01:34Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "still syncing, not yet to minValid optime 527cfc90:19c4",
"syncingTo" : "hostname:27001"
}
],
"ok" : 1
}
Si secondaire a été créé avec slaveDelay
puis optime
et optimeDate
peut être différent mais stateStr
et lastHeartbeatMessage
indiquera s'il y a un décalage.