Definición
moveChunkInternal administrative command. Moves chunks between shards. Issue the
moveChunkcommand via amongosinstance while using the admin database. Use the following forms:Tip
In
mongosh, this command can also be run through thesh.moveChunk()helper method.Helper methods are convenient for
mongoshusers, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.db.adminCommand( { moveChunk : <namespace> , find : <query> , to : <string>, forceJumbo: <boolean>, _secondaryThrottle : <boolean>, writeConcern: <document>, _waitForDelete : <boolean> } ) Alternativamente:
db.adminCommand( { moveChunk : <namespace> , bounds : <array> , to : <string>, forceJumbo: <boolean>, _secondaryThrottle : <boolean>, writeConcern: <document>, _waitForDelete : <boolean> } ) The
moveChunkcommand has the following fields:CampoTipoDescripciónmoveChunkstring
findDocumento
Una coincidencia exacta en la clave de partición que especifica el valor de la clave de partición del fragmento a mover. Especifique el campo
boundso el campofind, pero no ambos. No utilice elfindcampo para seleccionar fragmentos en colecciones que utilicen una clave de partición con hash.boundsarreglo
Los límites de un determinado fragmento para mover. El arreglo debe consistir en dos documentos que especifiquen los valores inferior y superior del valor de la clave de partición de un fragmento a mover. Especifica el campo
boundso el campofind, pero no ambos. Utiliceboundspara seleccionar fragments en colecciones que utilizan una clave de partición con hash.tostring
El nombre de la partición de destino para el fragmento.
booleano
opcional. Una bandera que determina si el comando puede mover un fragmento que es demasiado grande para migrar. La fragmento puede estar marcada o no como jumbo.
Si
true, el comando puede mover el fragmento.Si
false, el comando no puede mover el fragmento.
El valor es por defecto
false.ADVERTENCIA:
El comando
moveChunkconforceJumbo=truebloquea las operaciones de guardado en la colección.Esta opción provoca que la partición migre fragmentos, incluso cuando son más grandes que el tamaño de fragmento configurado. La colección permanece no disponible para guardados durante la migración.
Para migrar estos grandes fragmentos sin este largo período de bloqueo, consulta Balancear rangos que exceden el límite de tamaño en su lugar.
_secondaryThrottlebooleano
opcional. Para WiredTiger, por defecto es
false.Si
true, por defecto, cada movimiento de documento durante la migración de fragmentos se propaga al menos a un secundario antes de que el balanceador continúe con el siguiente documento. Esto es equivalente a un nivel de confirmación de escritura (write concern) de{ w: 2 }.Utiliza la opción
writeConcernpara especificar un nivel de confirmación de escritura (write concern) diferente.Si
false, el balanceador no espera la replicación en un secundario y continúa con el siguiente documento.
Para obtener más información, consulte Acelerador secundario.
writeConcernDocumento
opcional. Un documento que expresa el nivel de confirmación de escritura (write concern) que el
_secondaryThrottleutilizará para esperar a los secundarios durante la migración de fragmentos.writeConcernrequiere_secondaryThrottle: true._waitForDeletebooleano
Optional. If set to
true, the delete phase of amoveChunkoperation is blocking._waitForDeletedefaults tofalse.Cuando el campo
_waitForDeleteestá configurado, MongoDB no espera el retrasoorphanCleanupDelaySecsantes de realizar el borrado de rango. Si utiliza el parámetro_waitForDeletey hay operaciones de lectura en réplicas secundarias, es posible que la lectura omita documentos debido a la fase de borrado de la migración.El valor de
boundstoma la forma:[ { hashedField : <minValue> } , { hashedField : <maxValue> } ] La sección Migración de fragmentos describe cómo se mueven los fragmentos entre las particiones de MongoDB.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
- MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
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.
Considerations
Only use the moveChunk in special circumstances such as preparing your sharded cluster for an initial ingestion of data, or a large bulk import operation. In most cases allow the balancer to create and balance chunks in sharded clusters. See Create Ranges in a Sharded Cluster for more information.
Comportamiento
Indexes
moveChunk requires that all indexes exist on the target (i.e. to ) shard before migration and returns an error if a required index does not exist.
Meta Data Error
moveChunk returns the following error message if another metadata operation is in progress on the chunks collection:
errmsg: "The collection's metadata lock is already taken."
If another process, such as a balancer process, changes meta data while moveChunk is running, you may see this error. You may retry the moveChunk operation without side effects.
maxCatchUpPercentageBeforeBlockingWrites Server Parameter
A partir de MongoDB,5.0 puede maxCatchUpPercentageBeforeBlockingWrites configurar el para especificar el porcentaje máximo permitido de datos que aún no se han migrado durante una moveChunk operación en comparación con el tamaño total (en MB) del fragmento que se está transfiriendo.