Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Transición de un Embedded servidor de configuración a un Dedicated servidor de configuración

Para pasar de un servidor de configuración integrado a un servidor de configuración dedicado, debe asegurarse de que los datos de la partición de configuración se migren a las particiones restantes en el clúster. Este procedimiento describe cómo migrar datos de manera segura y completar la transición.

  • Crear, particionado o mover colecciones mientras se realiza este procedimiento puede provocar interrupciones y causar resultados inesperados.

  • No uses este procedimiento para migrar un clúster completo a un hardware nuevo. Para migrar, consulte Migrar un clúster fragmentado autogestionado a diferente hardware.

  • Cuando se elimina una partición en un clúster con una distribución desigual de fragmentos, el balanceador primero elimina los fragmentos de la partición en proceso de drenaje y luego equilibra la distribución desigual de fragmentos restante.

  • Eliminar una partición puede causar que se cierre un cursor de flujo de cambios abierto, y es posible que el cursor de flujo de cambios cerrado no pueda reanudarse por completo.

  • Se puede reiniciar un clúster de forma segura durante un proceso de transición. Si reinicias un clúster durante un proceso de drenaje en curso, el drenaje continuará automáticamente después de que los componentes del clúster sean reiniciados. MongoDB registra el estado de transición en la colección config.shards.

  1. Este procedimiento utiliza el método sh.moveCollection() para trasladar colecciones fuera de la partición de configuración. Antes de comenzar este procedimiento, revisa las moveCollection consideraciones y los requisitos para comprender el comportamiento del comando.

  2. Para pasar a un servidor de configuración dedicado, primero conecte a una de las mongos instancias del clúster usando mongosh.

1

Para migrar datos desde la partición de configuración, el proceso Balanceador debe estar habilitado. Para comprobar el estado del balanceador, utiliza el método sh.getBalancerState():

sh.getBalancerState()

Si la operación devuelve true, el balanceador está habilitado.

Si la operación devuelve false, consulta Activar el balanceador.

2

Ejecuta listShards para confirmar que la partición de configuración aparece en la lista de particiones:

db.adminCommand( { listShards: 1 } )

En la salida, el campo shards._id contiene los nombres de las particiones. La partición de configuración suele tener un _id de "config":

{
shards: [
{
_id: 'config',
...
},
...
],
ok: 1
...
}
3

Desde la base de datos admin, ejecute el comando transitionToDedicatedConfigServer:

use admin
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )

La partición de configuración entra en el estado drenar y el balanceador comienza a migrar fragmentos de la partición de configuración a las particiones restantes en el clúster. Dependiendo de la capacidad de tu red y la cantidad de datos, esta operación puede tardar desde minutos hasta días en completarse.

4

Utiliza la etapa de agregación $listClusterCatalog para identificar las colecciones que no están particionadas (sharded) y que aún residen en la partición de configuración:

use admin
db.aggregate([
{ $listClusterCatalog: { shards: true } },
{
$match: {
sharded: false,
shards: "config",
type: { $nin: ["timeseries", "view"] },
ns: { $not: { $regex: "^enxcol_\\..*(\\.esc|\\.ecc|\\.ecoc|\\.ecoc\\.compact)$" } },
$or: [
{ ns: { $not: { $regex: "\\.system\\." } } },
{ ns: { $regex: "\\.system\\.buckets\\." } }
],
db: { $nin: ["config", "admin"] }
}
},
{ $project: { _id: 0, ns: 1 } }
])

Para cada namespace en la salida, utiliza sh.moveCollection() para mover la colección no particionada de la partición de configuración a una partición receptora:

sh.moveCollection(
"<database>.<collection>",
"<ID of recipient shard>"
)

Repetí este paso hasta que no quede ninguna colección no particionada en la partición de configuración.

5

Desde la base de datos admin, ejecute db.printShardingStatus():

use admin
db.printShardingStatus()

En la sección databases de la salida, verifica el campo primary de cada base de datos. Para cualquier base de datos de aplicación (bases de datos distintas a config y admin) cuya primaria sea la partición de configuración, cambie la partición primaria a otra partición.

Para cambiar la partición primaria de una base de datos, ejecute movePrimary:

db.adminCommand({
movePrimary: "<dbName>",
to: "<recipientShard>"
})

Cualquier colección que no se haya movido en el paso anterior estará no disponible mientras movePrimary se esté ejecutando.

6

Para comprobar el progreso de la transición, vuelve a ejecutar transitionToDedicatedConfigServer desde la base de datos admin:

use admin
db.adminCommand( { transitionToDedicatedConfigServer: 1 } )

Continúe verificando el estado hasta que la transición se complete exitosamente y la salida se asemeje al siguiente ejemplo:

{
state: 'completed',
msg: 'removeshard completed successfully',
shard: 'config',
ok: 1
}
7

Después de que la partición de configuración informe un state de 'completed', confirme la transición de un servidor de configuración incrustado a un servidor de configuración dedicado:

use admin
db.adminCommand( { commitTransitionToDedicatedConfigServer: 1 } )

Una confirmación exitosa devuelve la siguiente salida:

{
ok: 1,
'$clusterTime': {
...
},
operationTime: ...
}

Cuando tiene éxito, MongoDB elimina la partición config de los metadatos del clúster y finaliza la transición a un servidor de configuración dedicado. Si la partición de configuración no se vacía por completo, el comando falla y debe continuar verificando el estado de transición de { state: 'completed' } antes de volver a intentarlo.

Después de que la transición se confirme, listShards ya no incluye la partición de configuración en la lista de particiones. El clúster ahora utiliza un servidor de configuración dedicado y el servidor de configuración ya no almacena los datos de la aplicación como una partición.