MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como converter um conjunto de réplicas do MongoDB em um servidor autônomo


Remova todos os hosts secundários do conjunto de réplicas (rs.remove('host:port')), reinicie o mongo deamon sem o parâmetro replSet (editando /etc/mongo.conf) e os hosts secundários iniciam no modo autônomo novamente.

O host primário é complicado, porque você não pode removê-lo do conjunto de réplicas com rs.remove. Uma vez que você tenha apenas o nó primário no conjunto de réplicas, você deve sair do shell do mongo e parar o mongo. Em seguida, você edita o /etc/mongo.conf e remove o parâmetro replSet e inicia o mongo novamente. Assim que iniciar o mongo, você já estará no modo autônomo, mas o shell do mongo exibirá uma mensagem como:

2015-07-31T12:02:51.112+0100 [initandlisten] ** AVISO:mongod foi iniciado sem --replSet ainda 1 documentos estão presentes em local.system.replset

para remover o aviso, você pode fazer 2 procedimentos:1) Soltando o db local e reiniciando o mongo:
use local
db.dropDatabase();

/etc/init.d/mongod restart

2) Ou se você não quiser ser tão radical, você pode fazer:
use local
db.system.replset.find()

e ele irá solicitar uma mensagem como:
{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }

então você irá apagá-lo usando:
db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })

e provavelmente irá solicitar:
WriteResult({ "nRemoved" : 1 })

Agora, você pode reiniciar o mongo e o aviso deve desaparecer, e você terá seu mongo no modo autônomo sem avisos