Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Migra rangos en un clúster particionado

En la mayoría de las circunstancias, deberías dejar que el automático balanceador migrate ranges between shards. Sin embargo, tal vez quieras migrar rangos manualmente en algunos casos:

  • Cuando predividas una colección vacía, migra los rangos manualmente para distribuirlos uniformemente entre las particiones. Utilizar una pre-división en situaciones limitadas para apoyar la ingesta masiva de datos.

  • Si el balanceador en un clúster activo no puede distribuir rangos dentro de la ventana de balanceo, entonces tendrás que migrar rangos manualmente.

Para migrar rangos manualmente, utilice el moveChunk o el comando moveRange.

Para obtener más información sobre cómo el equilibrador automático mueve los rangos entre particiones, consulta Internals del equilibrador y Migración de rangos.

Ejemplo

Migrar un solo rango

El siguiente ejemplo asume que el campo username es la clave de fragmento de una colección llamada users en la myapp base de datos y que el valor smith existe dentro del rango que se va a migrar. Migre el rango con el siguiente comando en mongosh.

db.adminCommand( { moveChunk : "myapp.users",
find : {username : "smith"},
to : "mongodb-shard3.example.net" } )

Este comando mueve el rango que incluye el valor de la clave de partición "smith" al shard llamado mongodb-shard3.example.net. El comando se bloqueará hasta que la migración esté completa.

Tip

Para devolver una lista de particiones, utiliza el comando listShards.

Ejemplo

Migrar rangos uniformemente

Para migrar equilibradamente los rangos de la colección myapp.users, coloca cada rango de prefijos en la siguiente partición respecto del otro y ejecuta los siguientes comandos en la mongo shell:

var shServer = [ "sh0.example.net", "sh1.example.net", "sh2.example.net", "sh3.example.net", "sh4.example.net" ];
for ( var x=97; x<97+26; x++ ){
for( var y=97; y<97+26; y+=6 ) {
var prefix = String.fromCharCode(x) + String.fromCharCode(y);
db.adminCommand({moveChunk : "myapp.users", find : {email : prefix}, to : shServer[(y-97)/6]})
}
}

Consulta Crear rangos en un clúster para una introducción a la pre-división.

  • Utilice el moveChunk comando con los campos _secondaryThrottle writeConcern y para determinar cuándo el balanceador procede con el siguiente documento en el rango de migración.

  • Utilice el moveRange comando con los campos secondaryThrottle writeConcern y para determinar cuándo el balanceador procede con el siguiente documento en el rango de migración.

Consulta moveChunk y moveRange para más detalles.

A partir de MongoDB 5.3, durante la migración de rango, los eventos de flujo de cambios no se generan para las actualizaciones de documentos huérfanos.

Volver

Gestionar

En esta página