MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sprawdzić, czy wtórny jest zsynchronizowany teraz, czy nie?

Uwaga :sprawdź odpowiedź dostarczone przez arcseldon dla przyjaznego dla użytkownika odpowiednika.

Możesz użyć wyjścia rs.status() . Jeśli serwer pomocniczy jest zsynchronizowany i nie został utworzony za pomocą slaveDelay następnie optime i optimeDate wtórne powinny być równe lub zbliżone (jeśli istnieją bieżące operacje) do podstawowych. W takim przypadku stateStr powinna być równa SECONDARY . Więc jeśli wtórne jest zsynchronizowane, powinieneś zobaczyć dane wyjściowe podobne do tego (jeden element został usunięty z danych wyjściowych dla jasności):

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

Tutaj masz wyjście rs.status() dla tego samego zestawu replik, jeśli jeden z elementów pomocniczych nie jest zsynchronizowany. Przede wszystkim zobaczysz, że optime i optimeDate dla hostname:27003 różni się od podstawowej, stateStr jest ustawione na RECOVERING i jest odpowiednia lastHeartbeatMessage .

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

Jeśli drugorzędny został utworzony za pomocą slaveDelay następnie optime i optimeDate może być inny, ale stateStr i lastHeartbeatMessage wskaże, czy jest jakieś opóźnienie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie Mongodb nie używa prefiksu w indeksie złożonym z polem tekstowym

  2. Używanie SqlBulkCopy z MongoDB

  3. InvalidDocument:Nie można zakodować obiektu:<Użytkownik:Obiekt użytkownika> ReferenceField z MongoEngine

  4. Mongo::OperationFailure - musisz się zalogować podczas korzystania z from_uri

  5. Jak rozwiązać to ograniczenie projektowe w mongo db w.r.t do wydajności?