sql >> Databáze >  >> NoSQL >> MongoDB

Jak zkontrolovat, zda je sekundární synchronizace nyní nebo ne

Poznámka :Nezapomeňte zkontrolovat odpověď poskytuje arcseldon za uživatelsky přívětivý ekvivalent.

Můžete použít výstup rs.status() . Pokud je sekundární synchronizace a nebyla vytvořena pomocí slaveDelay potom optime a optimeDate sekundární by měla být stejná nebo blízká (pokud existují aktuální operace) jako primární. V tom případě stateStr by se mělo rovnat SECONDARY . Pokud je tedy sekundární synchronizován, měli byste vidět výstup podobný tomuto (jeden člen byl z výstupu kvůli přehlednosti odstraněn):

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

Zde máte výstup rs.status() pro stejnou sadu replik, pokud jedna ze sekundárních položek není synchronizována. Nejprve uvidíte, že optime a optimeDate pro hostname:27003 se liší od primárního, stateStr je nastaven na RECOVERING a je tam odpovídající 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
}

Pokud byl sekundární soubor vytvořen pomocí slaveDelay pak optime a optimeDate může být různé, ale stateStr a lastHeartbeatMessage bude indikovat, zda došlo k nějakému zpoždění.



  1. Agregace Mongo vs Java pro smyčku a výkon

  2. MongoDB Spark Connector py4j.protocol.Py4JJavaError:Při volání o50.load došlo k chybě

  3. MongoDB dotaz na text se závorkami nerozlišuje malá a velká písmena

  4. Vynucení řízení přístupu na základě rolí pomocí ClusterControl