what replicated replica example create allow mongodb

replicated - Cómo convertir un conjunto de réplicas de MongoDB en un servidor independiente



replicated to allow failover in mongodb (5)

1) Ir a mongo shell en servidores secundarios

2) Detenga los servidores secundarios utilizando el siguiente comando:

use admin db.shutdownServer()

Su principal se convertirá automáticamente en un servidor independiente.

Para obtener más información, consulte el siguiente enlace: http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html

Considere, tengo 4 conjuntos replicados y la configuración es la siguiente:

{ "_id": "rs_0", "version": 5, "members" : [ {"_id": 1, "host": "127.0.0.1:27001"}, {"_id": 2, "host": "127.0.0.1:27002"}, {"_id": 3, "host": "127.0.0.1:27003"}, {"_id": 4, "host": "127.0.0.1:27004"} ] }

Puedo conectarme a todos los conjuntos usando mongo --port <port>

Hay documentos para obtener información sobre Convertir un independiente a un conjunto de réplicas , pero ¿alguien puede decirme cómo volver a convertir en independiente del conjunto de réplicas?


Elimine todos los hosts secundarios del conjunto de réplicas (rs.remove (''host: port'')), reinicie el Mongo Deamon sin el parámetro replSet (editando /etc/mongo.conf) y los hosts secundarios volverán a comenzar en modo independiente.

El host principal es complicado, porque no puede eliminarlo del conjunto de réplicas con rs.remove. Una vez que tenga solo el nodo primario en el conjunto de réplicas, debe salir de mongo shell y detener mongo. Luego edita /etc/mongo.conf, elimina el parámetro replSet y comienza de nuevo mongo. Una vez que inicie mongo, ya estará en modo independiente, pero el shell mongo mostrará un mensaje como:

2015-07-31T12: 02: 51.112 + 0100 [initandlisten] ** ADVERTENCIA: mongod comenzó sin --replSet, sin embargo, hay 1 documentos en local.system.replset

para eliminar la advertencia, puede hacer 2 procedimientos: 1) Eliminar la base de datos local y reiniciar mongo:

use local db.dropDatabase(); /etc/init.d/mongod restart

2) O si no quieres ser tan radical, puedes hacer:

use local db.system.replset.find()

y aparecerá un mensaje como:

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }

entonces lo borraras usando:

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })

y probablemente le pedirá:

WriteResult({ "nRemoved" : 1 })

Ahora, puede reiniciar el mongo y la advertencia debería haber desaparecido, y tendrá su mongo en modo independiente sin avisos.


En una máquina de Ubuntu

  1. Detén tu servidor mongo
  2. abrir /etc/mongod.conf
  3. Comenta la replicación y la línea replSetName

#replication: #replSetName: rs0

  1. Inicia tu servidor mongo y ve a mongo shell
  2. eliminar la base de datos local

use local db.dropDatabase()

  1. Reiniciar mongo

La documentación de MongoDB sugiere lo siguiente para realizar el mantenimiento en un miembro del conjunto de réplicas, que pone al miembro del conjunto de réplicas en modo independiente para futuras operaciones. Con poca modificación se puede hacer autónomo:

  1. Si el nodo en cuestión es el único nodo en un fragmento, drene los fragmentos a otros fragmentos según la documentación de MongoDB aquí , o la base de datos fragmentada se romperá, es decir
    • Asegúrese de que el equilibrador esté habilitado conectándose a mongos y ejecute sh.startBalancer(timeout, interval)
    • Para el fragmento en cuestión, vaya a la base de datos de administración y db.adminCommand( { removeShard: "mongodb0" } )
    • Verifique el estado de drenaje repitiendo el comando removeShard anterior, espere a que se complete el drenaje
  2. Si el nodo en cuestión es primario, haga rs.stepDown(300)
  3. Detenga el nodo ejecutando db.shutdownServer()
  4. Cambie la configuración de yaml por:
    • comentando replication.replSetName (--replSetName en la línea de comandos)
    • comentando sharding.clusterRole para el servidor de fragmentos o configuración (--shardsvc y --configsvr en la línea de comandos)
    • comentando net.port , luego cámbielo a un puerto diferente (--port en la línea de comandos)
  5. Inicia la instancia mongod.
  6. Si el cambio es permanente, vaya a otra instancia de mongod y ejecute rs.remove("host:port")

Después de esto, el nodo en cuestión debe estar activo y en ejecución en modo independiente.


Simplemente elimine un host del conjunto de réplicas ( rs.remove(''host:port'') ), replSet iniciarlo sin el parámetro replSet y replSet de nuevo en modo independiente.