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
/ /
Balanceador

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 parte del supuesto de que el campo username es la clave de partición para una colección llamada users en la base de datos myapp, y que el valor smith existe dentro del rango a migrar. Migrar el rango utilizando 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 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.

  • 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 moveRange 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