Para remover a un nodo de un set de réplicas, utiliza uno de los siguientes procedimientos.
Remover a un nodo usando rs.remove()
Apaga la instancia
mongodpara el nodo que deseas remover. Para apagar la instancia, conectar usandomongoshy a usar el métododb.shutdownServer().Conéctese al primario actual del set de réplicas. Para determinar el primario actual, utiliza
db.hello()mientras estés conectado a cualquier nodo del set de réplicas.Usa
rs.remove()en cualquiera de los siguientes formularios para remover al miembro:rs.remove("mongod3.example.net:27017") rs.remove("mongod3.example.net") MongoDB puede desconectar el shell brevemente si el set de réplicas necesita elegir un nuevo primario. La shell se vuelve a conectar automáticamente en esos casos. El shell puede mostrar el error
DBClientCursor::init call() failedaunque el comando se ejecute correctamente.
Remover a un nodo usando rs.reconfig()
Puedes remover un nodo volviendo a configurar el set de réplicas utilizando un documento de configuración de réplicas donde ese nodo se remueva del arreglo members.
rs.reconfig() permite agregar o remover no más de 1 voting nodo a la vez. Para remover varios miembros con derecho a voto del set de réplicas, realizada una serie de operaciones de rs.reconfig() para remover un nodo a la vez. Consulta La reconfiguración puede agregar o remover a no más de un nodo votante a la vez para obtener más información.
Procedimiento
Apague la instancia de
mongodpara el nodo que desea remover. Para apagar la instancia, conéctate utilizandomongoshy utiliza el métododb.shutdownServer().Conéctese al primario actual del set de réplicas. Para determinar el primario actual, utiliza
db.hello()mientras estés conectado a cualquier nodo del set de réplicas.Emite el método
rs.conf()para ver el documento de configuración actual y determinar la posición en el arreglomembersdel nodo a remover:Ejemplo
mongod_C.example.netse encuentra en la posición2del siguiente archivo de configuración:{ "_id" : "rs", "version" : 7, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" }, { "_id" : 2, "host" : "mongod_C.example.net:27017" } ] } Asignar el documento de configuración actual a la variable
cfg:cfg = rs.conf() Modifica el objeto
cfgpara remover el nodo.Ejemplo
Para remover
mongod_C.example.net:27017, utiliza la siguiente operación JavaScript:cfg.members.splice(2,1) Sobrescribe el documento de configuración del set de réplicas con la nueva configuración emitiendo lo siguiente:
rs.reconfig(cfg) Para confirmar la nueva configuración, emite
rs.conf().Para el ejemplo anterior, la salida sería:
{ "_id" : "rs", "version" : 8, "members" : [ { "_id" : 0, "host" : "mongod_A.example.net:27017" }, { "_id" : 1, "host" : "mongod_B.example.net:27017" } ] }