Docs Menu
Docs Home
/ /

Migra rangos en un clúster particionado

En la mayoría de las circunstancias, debe dejar que el sistema automático El balanceador migra rangos entre fragmentos. Sin embargo, es posible que desee migrar rangos manualmente en algunos casos:

  • Al predividir una colección vacía, migre los rangos manualmente para distribuirlos uniformemente entre los fragmentos. Use la predivisión en casos limitados para facilitar la ingesta masiva de datos.

  • Si el equilibrador de un clúster activo no puede distribuir rangos dentro de la ventana de equilibrio, tendrá que migrar los rangos manualmente.

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

Para obtener más información sobre cómo el balanceador automático mueve rangos entre fragmentos, consulte Aspectos internos del balanceador 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 clave de fragmento "smith" al mongodb-shard3.example.netfragmento. El comando se bloqueará hasta que se complete la migración.

Tip

Para devolver una lista de fragmentos, utilice el listShards comando.

Ejemplo

Migrar uniformemente los rangos

Para migrar uniformemente los rangos de la colección myapp.users, coloque cada rango de prefijo en el siguiente fragmento del otro y ejecute los siguientes comandos en el shell de mongo:

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]})
}
}

Consulte Crear rangos en un clúster fragmentado para obtener una introducción a la división previa.

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

moveChunk moveRange Consulte y para obtener 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