O MongoDB não está sendo replicado corretamente

1

Estou usando o mongoDB para meu aplicativo hospedado em 3 instâncias do amazon. Eu tenho um nó primário com maior prioridade (100) e 2 secundários com prioridade 99 e 98. Alguns dias atrás eu comecei a obter MongoCursorExceptions ao acessar o nó primário. Eu pensei que tinha algo a ver com o meu servidor primário ficando sem recursos e lento para responder, então eu decidi mudar um dos nós secundários para primário.

Alterei as prioridades de 100, 99 e 98 para 1, 100, 98, mas isso não mudou meu servidor secundário para primário. Ao verificar o status do meu conjunto de réplicas, descobri que os três nós não estavam sincronizando corretamente, pois o horário de funcionamento estava mais de 17 horas atrasado. A preocupação real é que o optime de ambos os nós secundários é constante enquanto continua aumentando para o nó primário. Também verifiquei que meus nós secundários não tinham dados atualizados usando a consulta slaveOk. A seguir está o status que recebi no meu nó principal:

PRIMARY> rs.status()
{
    "set" : "rs_a",
    "date" : ISODate("2012-02-28T09:34:50Z"),
    "myState" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "name" : "server1.com:27018",
                    "health" : 1,
                    "state" : 1,
                    "stateStr" : "PRIMARY",
                    "optime" : {
                            "t" : 1330421648000,
                            "i" : 2
                    },
                    "optimeDate" : ISODate("2012-02-28T09:34:08Z"),
                    "self" : true
            },
            {
                    "_id" : 1,
                    "name" : "server2.com:27018",
                    "health" : 1,
                    "state" : 2,
                    "stateStr" : "SECONDARY",
                    "uptime" : 3510,
                    "optime" : {
                            "t" : 1330358351000,
                            "i" : 1
                    },
                    "optimeDate" : ISODate("2012-02-27T15:59:11Z"),
                    "lastHeartbeat" : ISODate("2012-02-28T09:34:50Z"),
                    "pingMs" : 0
            },
            {
                    "_id" : 2,
                    "name" : "server3.com:27018",
                    "health" : 1,
                    "state" : 2,
                    "stateStr" : "SECONDARY",
                    "uptime" : 3510,
                    "optime" : {
                            "t" : 1330358351000,
                            "i" : 1
                    },
                    "optimeDate" : ISODate("2012-02-27T15:59:11Z"),
                    "lastHeartbeat" : ISODate("2012-02-28T09:34:50Z"),
                    "pingMs" : 0
            }
    ],
    "ok" : 1
}

Não consegui encontrar muito em registros. Em algumas ocasiões, os logs no servidor secundário informaram que houve um problema na conexão com o servidor principal. Mas o interessante é que todos os write-backs são feitos corretamente nos nós secundários. Eu gostaria que todos os servidores estivessem atualizados em todos os momentos para que eu pudesse ler de qualquer nó, pois é por isso que estou usando o mongoDB em primeiro lugar.

    
por umair 28.02.2012 / 11:53

1 resposta

1

Consegui resolver esse problema reiniciando o mongod nos nós secundários. Eu acho que os nós entraram em um estado obsoleto.

    
por 28.02.2012 / 14:45