Docs Menu
Docs Home
/ /

removeShard (comando de base de datos)

removeShard

Elimina un fragmento de un clúster fragmentado. Cuando se ejecuta removeShardMongoDB drena el fragmento mediante el balanceador para mover sus fragmentos a otros fragmentos del clúster. Una vez drenado, MongoDB lo elimina del clúster.

Nota

Si desea volver a agregar un fragmento eliminado a su clúster fragmentado, debe borrar storage.dbPath de todos los nodos del fragmento para eliminar los archivos del fragmento antes de poder volver a agregarlo.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

Nota

Este comando no es compatible con MongoDB Atlas. Consulte "Modificar su clúster fragmentado de Atlas" para agregar o eliminar fragmentos de su clúster de Atlas.

El comando tiene la siguiente sintaxis:

db.adminCommand(
{
removeShard : <shardToRemove>
}
)

No es posible realizar una copia de seguridad de los datos del clúster durante la eliminación de fragmentos.

Puede tener más de una operación en removeShard curso.

Si tiene habilitado,authorization debe tener el rol o cualquier clusterManager removeShard rol que incluya la acción.

Cada base de datos de un clúster fragmentado tiene un fragmento principal. Si el fragmento que desea eliminar también es el principal de una de las bases de datos del clúster, deberá mover manualmente las bases de datos a un nuevo fragmento después de migrar todos los datos desde este.movePrimary Consulte el comando y la sección "Eliminar fragmentos de un clúster fragmentado existente" para obtener más información.

Cuando se elimina un fragmento en un clúster con una distribución de fragmentos desigual, el equilibrador primero elimina los fragmentos del fragmento de drenaje y luego equilibra la distribución de fragmentos desigual restante.

Tip

mongos convierte la preocupación removeShard de escritura del "majority" comando a.

La eliminación de un fragmento puede provocar que un cursor de flujo de cambio abierto se cierre y que el cursor de flujo de cambio cerrado no pueda reanudarse por completo.

A partir mongosh de, la operación se asemeja a la removeShard siguiente:

db.adminCommand( { removeShard : "bristol01" } )

Reemplace bristol01 con el nombre del fragmento que desea eliminar. Al ejecutar, el comando muestra un mensaje similar al removeShard siguiente:

{
"msg" : "draining started successfully",
"state" : "started",
"shard" : "bristol01",
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575398919, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1575398919, 2),
"signature" : {
"hash" : BinData(0,"Oi68poWCFCA7b9kyhIcg+TzaGiA="),
"keyId" : Long("6766255701040824328")
}
}
}

El balanceador comienza a migrar ("drenar") fragmentos del fragmento bristol01 a otros fragmentos del clúster. Estas migraciones se realizan lentamente para evitar una carga excesiva en el clúster.

La salida incluye el campo dbsToMove indicando las bases de datos para las cuales bristol01 es la partición primaria. Después de que se hayan drenado todos los fragmentos de la partición, debe movePrimary para las bases de datos o, alternativamente, descartar estas bases de datos.

Nota

Si el fragmento que está eliminando no es el fragmento principal de ninguna base de datos, la dbsToMove matriz estará vacía y podrá completar la migración sin removeShard intervención.

Si ejecuta el comando nuevamente, removeShard dará el estado actual del proceso. Por ejemplo, si la operación está en un estado ongoing, el comando devuelve un resultado similar a lo siguiente:

{
"msg" : "draining ongoing",
"state" : "ongoing",
"remaining" : {
"chunks" : Long(2),
"dbs" : Long(2),
"jumboChunks" : Long(0)
},
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575399086, 1655),
"$clusterTime" : {
"clusterTime" : Timestamp(1575399086, 1655),
"signature" : {
"hash" : BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="),
"keyId" : Long("6766255701040824328")
}
}
}

En la salida, el campo remaining incluye los siguientes campos:

Campo
Descripción

chunks

Número total de fragmentos que quedan actualmente en el fragmento.

dbs

Número total de bases de datos cuyo fragmento principal es el fragmento. Estas bases de datos se especifican en el dbsToMove campo de salida.

jumboChunks

Del número total chunks de, el número que son gigantes.

Si jumboChunks es mayor 0 que, espere hasta que solo jumboChunks queden en el fragmento. Una vez que solo queden los fragmentos jumbo, debe borrar manualmente la marca jumbo antes de que se complete el vaciado. Consulte Borrar la marca.jumbo

Una vez que se jumbo borra el indicador, el balanceador puede migrar estos fragmentos. Para obtener más información sobre el procedimiento de migración, consulte Procedimiento de migración de rangos.

Continúe verificando el estado del removeShard comando (es decir, vuelva a ejecutar el comando) hasta que el número de fragmentos restantes 0 sea.

{
"msg" : "draining ongoing",
"state" : "ongoing",
"remaining" : {
"chunks" : Long(0), // All chunks have moved
"dbs" : Long(2),
"jumboChunks" : Long(0)
},
"note" : "you need to drop or movePrimary these databases",
"dbsToMove" : [
"fizz",
"buzz"
],
"ok" : 1,
"operationTime" : Timestamp(1575400343, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1575400343, 1),
"signature" : {
"hash" : BinData(0,"9plu5B/hw4uWAgEmjjBP3syw1Zk="),
"keyId" : Long("6766255701040824328")
}
}
}

Una vez que se hayan drenado todos los fragmentos del fragmento, si dbsToMove tiene, puede movePrimary usar para esas bases de datos o, alternativamente, eliminar las bases de datos (lo que elimina los archivos de datos asociados).

Una vez que el balanceador haya terminado de mover todos los fragmentos del fragmento y usted haya gestionado el,dbsToMove removeShard podrá finalizar. Al ejecutar de nuevo, se obtendrá un resultado similar al removeShard siguiente:

{
"msg" : "removeshard completed successfully",
"state" : "completed",
"shard" : "bristol01",
"ok" : 1,
"operationTime" : Timestamp(1575400370, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1575400370, 2),
"signature" : {
"hash" : BinData(0,"JjSRciHECXDBXo0e5nJv9mdRG8M="),
"keyId" : Long("6766255701040824328")
}
}
}

Volver

refinar clave de fragmento de colección

En esta página