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

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 desde 7.0.2, 6.0.11, y 5.0.22), puede respaldar datos en clústeres sharded utilizando 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 soporte el bloqueo fsync desde mongos.

A partir de MongoDB 7.1 (también disponible 7.0.2 a6.0.11 partir 5.0 de,22 y.) los fsync comandos y se pueden ejecutar en fsyncUnlock mongos para bloquear y desbloquear un clúster fragmentado.

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

Con esta autorización podrás ejecutar los comandos fsync fsyncUnlock y.

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

Una vez completada la copia de seguridad, puede desbloquear el clúster para permitir que se reanuden las escrituras.

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

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.

Puede restaurar datos a partir de una mongodump copia de seguridad utilizando mongorestore.

  • Para migrar a un set de réplicas o un servidor autónomo, ejecute mongorestore en mongod.

  • Para restaurar a un clúster fragmentado, ejecute mongorestore contra mongos con configurado para excluir --nsExclude la config base de datos:

    mongorestore --nsExclude='config.*' /data/backup

Importante

mongorestore no divide las colecciones restauradas en el clúster de destino.

Para asegurarse de que una colección restaurada esté particionada en el clúster de destino, cree una colección con el mismo namespace en el clúster de destino y luego particione la colección antes de ejecutar mongorestore. El balanceador eventualmente distribuirá los documentos restaurados entre las particiones del clúster de destino.

Para más información, consulta Respaldar y restauración una implementación autogestionada con las herramientas de MongoDB.

Volver

Realizar una copia de seguridad de un clúster fragmentado con instantáneas del sistema de archivos

En esta página