2015-05-18 10 views
7

Sto usando la versione di MongoDB 3.0.1. sto provando a installare per replicaon di mongodb in la nostra macchina. Ho usato tre mongodb in macchina settata per la replica.MongoDB 3.0.1 Setup di replica

machine1 - master 
machine2 - slave 
machine3 - slave 

Mi riferisco questo URL http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

devo configurare per ogni macchina in file di mongodb.conf

replSet = rs1 
fork = true 

e ho aggiunto due membri in macchina master di utilizzare questo comando

rs.add(192.168.1.2) 
rs.add(192.168.1.3) 

ma inserisco un documento nella macchina master ma non replica altri due sla ve macchina. ho controllato che la macchina schiava lanciasse il seguente errore

> show dbs 
2015-05-18T12:43:22.020+0530 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" } 
    at Error (<anonymous>) 
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15) 
    at shellHelper.show (src/mongo/shell/utils.js:630:33) 
    at shellHelper (src/mongo/shell/utils.js:524:36) 
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47 
> 
> rs.conf() 
2015-05-18T12:43:38.692+0530 E QUERY Error: Could not retrieve replica set config: { 
    "info" : "run rs.initiate(...) if not yet done for the set", 
    "ok" : 0, 
    "errmsg" : "no replset config has been received", 
    "code" : 94 
} 
    at Function.rs.conf (src/mongo/shell/utils.js:1011:11) 
    at (shell):1:4 at src/mongo/shell/utils.js:1011 
> 

Per favore aiutami a risolvere il problema. grazie & Anticipo.

EDIT:

rs1:PRIMARY> rs.conf() 
{ 
    "_id" : "rs1", 
    "version" : 4, 
    "members" : [ 
     { 
      "_id" : 0, 
      "host" : "analyzer-xubuntu:27017", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 1, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     }, 
     { 
      "_id" : 1, 
      "host" : "192.168.1.31:27017", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 0.75, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     }, 
     { 
      "_id" : 2, 
      "host" : "192.168.1.33:27017", 
      "arbiterOnly" : false, 
      "buildIndexes" : true, 
      "hidden" : false, 
      "priority" : 0.5, 
      "tags" : { 

      }, 
      "slaveDelay" : 0, 
      "votes" : 1 
     } 
    ], 
    "settings" : { 
     "chainingAllowed" : true, 
     "heartbeatTimeoutSecs" : 10, 
     "getLastErrorModes" : { 

     }, 
     "getLastErrorDefaults" : { 
      "w" : 1, 
      "wtimeout" : 0 
     } 
    } 
} 

rs1:PRIMARY> rs.status() 
{ 
    "set" : "rs1", 
    "date" : ISODate("2015-05-18T09:07:31.767Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "analyzer-xubuntu:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 9236, 
      "optime" : Timestamp(1431939509, 2), 
      "optimeDate" : ISODate("2015-05-18T08:58:29Z"), 
      "electionTime" : Timestamp(1431931054, 2), 
      "electionDate" : ISODate("2015-05-18T06:37:34Z"), 
      "configVersion" : 4, 
      "self" : true 
     }, 
     { 
      "_id" : 1, 
      "name" : "192.168.1.31:27017", 
      "health" : 1, 
      "state" : 0, 
      "stateStr" : "STARTUP", 
      "uptime" : 8953, 
      "optime" : Timestamp(0, 0), 
      "optimeDate" : ISODate("1970-01-01T00:00:00Z"), 
      "lastHeartbeat" : ISODate("2015-05-18T09:07:29.831Z"), 
      "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), 
      "pingMs" : 1, 
      "configVersion" : -2 
     }, 
     { 
      "_id" : 2, 
      "name" : "192.168.1.33:27017", 
      "health" : 1, 
      "state" : 0, 
      "stateStr" : "STARTUP", 
      "uptime" : 8946, 
      "optime" : Timestamp(0, 0), 
      "optimeDate" : ISODate("1970-01-01T00:00:00Z"), 
      "lastHeartbeat" : ISODate("2015-05-18T09:07:30.533Z"), 
      "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"), 
      "pingMs" : 1, 
      "configVersion" : -2 
     } 
    ], 
    "ok" : 1 
} 
+0

'" run rs.initiate (...) se non è stato ancora fatto per il set "'. Sei stato tu? – mnemosyn

+0

Sì, ho messo il comando rs.initiate() nella macchina master. – Elango

+0

Ho un dubbio "rs.initiate()" il comando viene eseguito su macchina master o altre due macchine slave – Elango

risposta

12

andiamo passo dopo passo.

La tua configurazione di MongoDB è ok, il resto del lavoro può essere fatto nella shell. Userò nomi di macchine invece di IP.

innanzitutto connettersi alla machine1, ed eseguire i seguenti lì:

> conf = { 
      _id: "rs1", 
      members: 
         [ 
         {_id : 0, host : "machine1:27017"}, 
         {_id : 1, host : "machine2:27017"}, 
         {_id : 2, host : "machine3:27017"} 
         ] 
     } 
> rs.initiate(conf) 

Poi basta eseguire rs.slaveOk() sui secondari. secondaries inizierà la replica e sarà possibile interrogarli e visualizzare i dati inseriti da primary.

+0

Sto verificando il seguente errore> db.test.find() Errore: {"$ err": "non master e slaveOk = falso", "codice": 13435} > rs.slaveOk() > db.test.find() errore: Errore: { \t "$ err": "Non Master o secondario, non può attualmente leggere da questo utente replSet", \t "codice": 13436 } – Elango

+0

fatto che si esegue 'rs.add (. ..) '** dopo ** esegue' rs.initiate() '? – bagrat

+0

Sì, eseguo prima "rs.initiate()", quindi eseguo "rs.add (" machine2: 27017 ")" – Elango