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

Realizar una copia de seguridad de un clúster fragmentado autogestionado con un vaciado de base de datos

A partir de MongoDB 7.1 (también disponible a partir de 7.0.2, 6.0.11 y 5.0.22), puede realizar copias de seguridad de los datos en clústeres particionados mediante mongodump.

mongodump es una utilidad que crea una exportación binaria del contenido de la base de datos. Puedes usar la utilidad mongodump para realizar copias de seguridad autogestionadas de un clúster.

Para hacer copias de seguridad de un clúster con mongodump, debes dejar de utilizar el balanceador, dejar de guardar y detener cualquier operación de transformación de esquemas en el clúster. Esto ayuda a reducir la probabilidad de inconsistencias en la copia de seguridad.

MongoDB proporciona operaciones de copia de seguridad y restauración que pueden ejecutarse con el balanceador y ejecutar transacciones a través de los siguientes servicios:

Las copias de seguridad proporcionan una snapshot del estado actual de la base de datos. Cuando restauras a partir de una copia de seguridad, la base de datos restaurada no incluye ningún cambio realizado después de que se haya hecho la copia de seguridad, lo que puede provocar pérdida de datos.

Esta tarea utiliza mongodump para respaldar un clúster particionado. Asegúrate de que tienes un clúster en funcionamiento que contenga datos en colecciones particionadas.

Este procedimiento requiere una versión de MongoDB que admita el bloqueo fsync desde mongos.

A partir de MongoDB 7.1 (también disponible a partir de 7.0.2, 6.0.11, y 5.0.22) los comandos fsync y fsyncUnlock pueden ejecutarse en mongos para bloquear y desbloquear un clúster particionado.

Para usar este procedimiento, tu usuario de MongoDB debe tener la autorización fsync, la cual puede estar disponible a través de un rol personalizado o usando el rol integrado hostManager.

Con esta autorización puedes ejecutar los comandos fsync y fsyncUnlock.

Para realizar una copia de seguridad autogestionada de un clúster fragmentado, complete los siguientes pasos:

1

Para encontrar un buen momento para realizar una copia de seguridad, supervise el uso de su aplicación y base de datos para encontrar un momento en el que sea poco probable que se produzcan migraciones por fragmentos, redistribuciones y operaciones de transformación de esquemas.

Nota

Estos pasos solo pueden producir una copia de seguridad coherente si se siguen exactamente y no hay ninguna operación en curso cuando se empieza.

Para obtener más información, consulte Programar ventana de copia de seguridad para un clúster autogestionado.

2

Para evitar que las migraciones de fragmentos interrumpan la copia de seguridad, conéctese a mongos y utilice el método sh.stopBalancer() para detener el equilibrador:

sh.stopBalancer()

Si se está llevando a cabo una ronda de balanceo, la operación esperará a que se complete el balanceo.

Para verificar que el balanceador esté detenido, utiliza el método sh.getBalancerState():

use config
while( sh.isBalancerRunning().mode != "off" ) {
print( "Waiting for Balancer to stop..." );
sleep( 1000 );
}
3

El clúster particionado debe permanecer bloqueado durante el proceso de copia de seguridad para proteger la base de datos de escrituras, lo que podría causar inconsistencias en la copia de seguridad.

Para bloquear un clúster sharding, conectese a mongos y utilize el método db.fsyncLock():

db.getSiblingDB("admin").fsyncLock()

Para confirmar el bloqueo, en mongos y el primario mongod de los servidores de configuración, ejecuta el siguiente pipeline de agregación y asegúrate de que todas las particiones estén bloqueadas:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { } },
{ $facet: {
"locked": [
{ $match: { $and: [
{ fsyncLock: { $exists: true } }
] } }],
"unlocked": [
{ $match: { fsyncLock: { $exists: false } } }
]
} },
{ $project: {
"fsyncLocked": { $gt: [ { $size: "$locked" }, 0 ] },
"fsyncUnlocked": { $gt: [ { $size: "$unlocked" }, 0 ] }
} }
] )
[ { fsyncLocked: true }, { fsyncUnlocked: false } ]
4

Para hacer una copia de seguridad del clúster particionado, use mongodump para conectarse a mongos y realizar la copia de seguridad:

mongodump \
--host mongos.example.net \
--port 27017 \
--username user \
--password "passwd" \
--out /opt/backups/example-cluster-1
5

Después de que la copia de seguridad se complete, puede desbloquear el clúster para permitir que se reanuden los guardados.

Para desbloquear el clúster, utiliza el método db.fsyncUnlock():

db.getSibling("admin").fsyncUnlock()

Para confirmar el desbloqueo, en mongos y en el mongod primario de los servidores de configuración, ejecute el siguiente pipeline de agregación y asegúrese de que todas las particiones estén desbloqueadas:

db.getSiblingDB("admin").aggregate( [
{ $currentOp: { } },
{ $facet: {
"locked": [
{ $match: { $and: [
{ fsyncLock: { $exists: true } }
] } }],
"unlocked": [
{ $match: { fsyncLock: { $exists: false } } }
]
} },
{ $project: {
"fsyncLocked": { $gt: [ { $size: "$locked" }, 0 ] },
"fsyncUnlocked": { $gt: [ { $size: "$unlocked" }, 0 ] }
} }
] )
[ { fsyncLocked: false }, { fsyncUnlocked: true } ]
6

Para reiniciar el balanceador, utiliza el método sh.startBalancer():

sh.startBalancer()

Para confirmar que el balanceador está ejecutándose, use el método sh.getBalancerState():

sh.getBalancerState()
true

El comando devuelve true cuando el equilibrador está funcionando.

Para restaurar la copia de seguridad:

Para más información, consulte Copias de seguridad y restauración con las herramientas de MongoDB.