Para remover a un nodo de un conjunto de réplicas utilice cualquiera de los siguientes procedimientos.
Eliminar un miembro usando rs.remove()
Cierre la instancia del miembro que desea
mongodeliminar. Para cerrar la instancia, conéctese mediante ymongoshdb.shutdownServer()use el método.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 conjunto de réplicas necesita elegir una nueva réplica principal. En tales casos, el shell se reconecta automáticamente. El shell puede mostrar un error
DBClientCursor::init call() failedincluso si el comando se ejecuta correctamente.
Eliminar un miembro 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
Cierre la instancia del miembro que desea
mongodeliminar. Para cerrar la instancia, conéctese mediante ymongoshdb.shutdownServer()use el método.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" } ] }