MongoDB 3.0.1 Configuration De Réplication
J'utilise MongoDB version 3.0.1. je suis d'essayer d'installation de mongodb replicaiton dans
notre machine. j'ai utiliser trois mongodb dans cloisonnées machine pour la réplication.
machine1 - master
machine2 - slave
machine3 - slave
Je me réfère à cette url http://docs.mongodb.org/manual/tutorial/deploy-replica-set/
J'ai configurer pour chaque machine dans mongodb.fichier conf
replSet = rs1
fork = true
et j'ai ajouté deux membres au maître de la machine à l'aide de cette commande
rs.add(192.168.1.2)
rs.add(192.168.1.3)
mais je insérer un document dans le maître de la machine mais ne pas reproduire deux autres esclaves de la machine. je n'ai vérifier esclave de la machine jeter l'erreur suivante
> 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
>
Merci de m'aider à résoudre le problème. merci & Avance.
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
}
"run rs.initiate(...) if not yet done for the set"
. Avez-vous le faire?Oui j'ai mis la commande rs.lancer() en maître de la machine.
J'ai un doute sur le "rs.ouvrir()" la commande est exécutée sur la machine maitre ou deux autres esclaves de la machine
Oui, vous devez vous démarrer avec
rs.initiate()
, puis d'appeler rs.add()
. Assurez-vous de mettre les adresses ip entre guillemets, c'est à dire rs.add("192.168.1.2")
Oui, j'ai ajouté deux membres, qui est ajouté à la réussite. et je vois la rs.d'état (de) de jeter le maître de l'état de la machine est "primaire" et deux autres esclaves de la machine est à l'état "Démarrage". et j'insère les données dans la machine maitre mais pas reproduire l'esclave de la machine.
OriginalL'auteur Elango | 2015-05-18
Vous devez vous connecter pour publier un commentaire.
Laissez-nous aller étape par étape.
MongoDB config est ok, le reste du travail peut être fait dans le shell. Je vais utiliser les noms de machine à la place de l'IPs.
D'abord vous connecter à
machine1
, et exécutez la commande suivante:Alors il suffit d'exécuter
rs.slaveOk()
sur les secondaires. Lesecondaries
va commencer la réplication, et vous serez en mesure de les interroger et de voir vos données, inséré à partir de laprimary
.avez-vous d'exécuter
rs.add(...)
après en cours d'exécutionrs.initiate()
?Oui je l'ai exécuté en premier "rs.ouvrir()" puis "rs.add("machine2:27017")"
J'ai mis à jour ma réponse, veuillez suivre les étapes et laissez-moi savoir ce que vous obtenez.
rs1:PRIMAIRE> rs.initié(conf) { "info" : "essayez d'interrogation locale.système.replset pour voir la configuration actuelle", "ok" : 0, "errmsg" : "déjà initialisé", "code" : 23 }
OriginalL'auteur bagrat