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

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

Para migrar de un servidor de configuración integrado a un servidor de configuración dedicado, debe asegurarse de que los datos del fragmento de configuración se migren a los fragmentos restantes del clúster. Este procedimiento describe cómo migrar los datos de forma segura y completar la transición.

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

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

1

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

sh.getBalancerState()

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

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

2

Ejecute para confirmar que el fragmento de configuración aparece en la lista de listShards fragmentos:

db.adminCommand( { listShards: 1 } )

En la salida, el campo shards._id contiene los nombres de los fragmentos. El fragmento de configuración normalmente tiene un _id de "config":

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

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

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

El fragmento de configuración entra en estado de vaciado y el balanceador comienza a migrar fragmentos desde el fragmento de configuración a los fragmentos restantes del clúster. Dependiendo de la capacidad de la red y la cantidad de datos, esta operación puede tardar desde minutos hasta días en completarse.

4

Utilice la $listClusterCatalog etapa de agregación para identificar las colecciones no fragmentadas que aún residen en el fragmento 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 espacio de nombres en la salida, use sh.moveCollection() para mover la colección no fragmentada del fragmento de configuración a un fragmento receptor:

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

Repita este paso hasta que no queden colecciones sin fragmentar en el fragmento de configuración.

5

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

use admin
db.printShardingStatus()

En la sección databases de la salida, compruebe el campo primary de cada base de datos. Para cualquier base de datos de aplicación (bases de datos distintas de config y admin) cuyo fragmento principal sea el fragmento de configuración, cambie el fragmento principal a otro fragmento.

Para cambiar el fragmento principal de una base de datos,movePrimary ejecute:

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

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

6

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

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

Continúe comprobando el estado hasta que la transición se complete correctamente y el resultado se parezca al siguiente ejemplo:

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

Después de que el fragmento de configuración informe un state de 'completed', confirme la transición de un servidor de configuración integrado 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: ...
}

Si la operación se realiza correctamente, MongoDB elimina el fragmento config de los metadatos del clúster y finaliza la transición a un servidor de configuración dedicado. Si el fragmento de configuración no se ha vaciado por completo, el comando falla y debe seguir comprobando el estado de la transición para { state: 'completed' } antes de volver a intentarlo.

Una vez confirmada la transición, ya no incluye el fragmento de configuración en la lista de fragmentos. El clúster ahora utiliza un servidor de configuración dedicado y este servidor ya no almacena los datos de la aplicación como unlistShards fragmento.

Volver

Remover particiones

En esta página