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

Sincronizar clústeres compartimentados

There are two ways to synchronize sharded clusters. You can use either one mongosync or several mongosync instances. For best performance with large or heavily loaded clusters, use one mongosync instance for each shard on the source cluster.

Importante

You must always disable the balancer on a sharded destination cluster by using balancerStop. After stopping the balancer, wait fifteen minutes before starting mongosync. This gives the cluster time to finish any in-progress chunk migrations.

Si el clúster de origen o destino es un clúster fragmentado y no está ejecutando mongosync con filtrado de espacio de nombres, debe deshabilitar el balanceador del clúster de origen ejecutando el comando y balancerStop esperando 15 minutos para que el comando se complete.

Si el clúster de origen o destino es un clúster fragmentado y está ejecutando mongosync con filtrado de espacios de nombres, puede habilitar globalmente el equilibrador del clúster de origen, pero debe desactivarlo para todas las colecciones dentro del filtro de espacios de nombres. Consulta Cómo desactivar el balanceador para colecciones en sincronización filtrada. También se puede deshabilitar completamente el balanceador del clúster de origen.

During migration, do not run the moveChunk or moveRange commands. If you have enabled the source cluster's balancer, but disabled it for collections within the namespace filter, do not run shardCollection on collections within the namespace filter. If you run shardCollection on collections within the namespace filter during the migration, mongosync returns an error and stops, which requires you to start the migration from scratch.

To configure a single mongosync, follow the connection instructions for your cluster architecture to connect to the mongos instance in your cluster.

When you connect a single mongosync to a sharded cluster do not use the replicaSet option or the id option.

El resto de esta página aborda la sincronización clúster a clúster usando varias instancias de mongosync.

El número de instancias de mongosync debe coincidir con el número de particiones en el clúster de origen. Debe utilizar la misma versión de mongosync entre todas las instancias. Para un origen de set de réplicas, solo se puede usar una instancia de mongosync.

Cuando configures múltiples instancias de mongosync para sincronizarse entre clústeres fragmentados, debes enviar comandos idénticos de puntos finales API a cada instancia de mongosync.

Para configurar varias instancias de mongosync:

1

A partir de mongosync 1.1, puedes sincronizar entre clústeres con diferentes números de particiones. Sin embargo, si se desea revertir la sincronización, el clúster de origen y el clúster de destino deben tener el mismo número de particiones.

2

To get the shard IDs, connect to the source cluster mongos and run the listShards command.

db.adminCommand( { listShards: 1 } )

La información está en el arreglo shards.

shards: [
{
_id: 'shard01',
host: 'shard01/localhost:27501,localhost:27502,localhost:27503',
state: 1,
topologyTime: Timestamp({ t: 1656612236, i: 2 })
},
{
_id: 'shard02',
host: 'shard02/localhost:27504,localhost:27505,localhost:27506',
state: 1,
topologyTime: Timestamp({ t: 1656612240, i: 4 })
}
]
3

Estas instrucciones usan una cadena de conexión genérica. Para modificar la cadena de conexión de su arquitectura de clúster, consulte los detalles de conexiónespecíficos de la arquitectura.

Tip

Un único servidor host puede ejecutar múltiples instancias de mongosync. Para mejorar el rendimiento, ejecute mongosync en varios servidores host.

Ejecutar la primera instancia de mongosync:

mongosync \
--cluster0 "mongodb://user:password@cluster0host:27500" \
--cluster1 "mongodb://user:password@cluster1host:27500" \
--id shard01 --port 27601

Al ejecutar varias instancias de mongosync, el número de instancias debe ser igual al número de particiones. Cada instancia de mongosync debe iniciarse con la --id opción o id configuración para especificar la partición que replica.

Ejecute una nueva instancia de mongosync para cada partición en el clúster de origen. Edite los campos --id y --port para cada instancia adicional de mongosync.

mongosync \
--cluster0 "mongodb://user:password@cluster0host:27500" \
--cluster1 "mongodb://user:password@cluster1host:27500" \
--id shard02 --port 27602

Las cadenas de conexión para las opciones --cluster0 y --cluster1 deberían dirigir a las instancias de mongos. En el ejemplo, utilizan la misma instancia de mongos.

Cada instancia de mongosync:

  • Se conecta a mongos instancias en el clúster de origen.

  • Se conecta a mongos instancias en el clúster de destino.

  • Replica una única partición del clúster de origen, identificado por la opción --id.

  • Especifica un puerto único que se utilizará durante la sincronización. Considera designar un rango de puertos para simplificar el script de las operaciones de Mongosync.

Utilice curl u otro cliente HTTP para emitir el comando start a cada una de las instancias mongosync.

curl mongosync01Host:27601/api/v1/start -XPOST --data \
'{ "source": "cluster0", "destination": "cluster1", \
"reversible": false }'
curl mongosync02Host:27602/api/v1/start -XPOST --data \
'{ "source": "cluster0", "destination": "cluster1", \
"reversible": false }'

Las opciones de comando start deben ser las mismas para todas las instancias mongosync.

Para revisar el progreso de sincronización de una partición específica, utiliza curl u otro cliente HTTP para emitir el comando progreso a la instancia mongosync que sincroniza esa partición.

curl mongosync02Host:27602/api/v1/progress -XGET

Este comando verifica el progreso de la instancia mongosync que se está ejecutando en mongosync02Host y utilizando port 27602 para la sincronización. Para comprobar el progreso en otras particiones, actualiza el host y el número de puerto, y luego repite la llamada a la API en cada instancia de mongosync.

El comando pausa detendrá temporalmente el proceso de sincronización en una sola partición. No pausa ninguna otra instancia mongosync que pueda estar en ejecución. Usa curl o otro cliente HTTP para emitir el comando pause a una instancia de mongosync.

curl mongosync01Host:27601/api/v1/pause -XPOST --data '{}'

Este comando pausa la instancia mongosync que se ejecuta en mongosync01Host y utiliza port 27601 para la sincronización. Para pausar la sincronización en otras particiones, actualice el host y el número de puerto y repita la llamada a la API en cada instancia de mongosync.

Si una o más instancias de mongosync están en pausa, puede usar el comando reanudar para reanudar la sincronización. Ejecute un comando resume separado para cada instancia mongosync pausada para reanudar la sincronización.

Utiliza curl u otro cliente HTTP para emitir el comando reanudar para cada instancia mongosync.

curl mongosync01Host:27601/api/v1/resume -XPOST --data '{}'

Este comando reanuda la sincronización en la instancia mongosync que está en ejecución en mongosync01Host y utilizando port 27601. Para reanudar la sincronización en otras particiones, actualizar el host y el número de puerto y luego repite la llamada a la API en cada instancia mongosync.

Cuando desee completar la sincronización, emita el comando progreso y compruebe los valores de canCommit y lagTimeSeconds.

Para minimizar el bloqueo de escritura en el clúster de origen, debe ejecutar el comando commit solo cuando el valor de lagTimeSeconds sea lo suficientemente bajo para su aplicación.

Si el valor lagTimeSeconds es lo suficientemente pequeño, y canCommit es true, emite el comando confirmación para realizar la sincronización. Repite el proceso en todas las instancias de mongosync.

La operación commit es bloqueante. El comando commit no se devolverá hasta que se haya llamado a commit en cada instancia de mongosync.

// Check progress
curl mongosync01Host:27601/api/v1/progress -XGET
// Commit
curl mongosync01Host:27601/api/v1/commit -XPOST --data '{}'

Estos comandos sólo revisan el progreso y la sincronización de confirmación para la instancia mongosync que se está ejecutando en mongosync01Host y se encuentra utilizando port 27601. Para sincronizar todos los shards, realiza llamadas adicionales a progress y commit en otras instancias mongosync que puedan estar ejecutándose.

Antes de transferir la carga de la aplicación del clúster de origen al destino, verifica tus datos para asegurarte de que la sincronización haya sido exitosa.

Nota

Si mongosync se detiene durante el compromiso, antes de que el punto final de /progreso informe canWrite: true, debes reiniciar toda la migración para asegurarte de que esté verificada.

Para obtener más información, consulta Verificar la transferencia de datos.

Nota

Para un tutorial en profundidad sobre cómo invertir la dirección de su sincronización, consulta Reverse Sync Direction.

Para invertir la sincronización de modo que el clúster de destino original actúe como el clúster de origen:

  • Si aún no lo ha hecho, emita el commit comando en cada instancia de mongosync y espere hasta que se completen todos los envíos. Para comprobar si el proceso de sincronización se ha confirmado, emite el comando progreso a todas las instancias de mongosync y verifica si el campo state de cada respuesta contiene el valor COMMITTED.

  • Emitir el comando de regreso a cada instancia mongosync.

La operación reverse es bloqueante. El comando reverse no se devolverá hasta que se haya llamado a reverse en cada instancia de mongosync.

curl mongosync01Host:27601/api/v1/reverse -XPOST --data '{}'

Este comando revierte la sincronización en la instancia mongosync que se está ejecutando en mongosync01Host y utilizando port 27601. Realiza llamadas adicionales a reverse en cualquier otra instancia de mongosync que pueda estar ejecutándose.

Nota

La sincronización inversa solo es posible si reversible está configurado en true cuando la API de inicio inicia mongosync.