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 datos en clústeres fragmentados utilizando mongodump.
Acerca de esta tarea
mongodump es una utilidad que crea una exportación binaria del contenido de la base de datos. Puede usar la mongodump utilidad para realizar copias de seguridad autogestionadas de un clúster fragmentado.
Para realizar una copia de seguridad de un clúster fragmentado con mongodump, debe detener el balanceador, las escrituras y cualquier operación de transformación de esquema en el clúster. Esto ayuda a reducir la probabilidad de inconsistencias en la copia de seguridad.
MongoDB proporciona operaciones de respaldo y restauración que pueden ejecutarse con el balanceador y ejecutar transacciones a través de los siguientes servicios:
Copias de seguridad obsoletas
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.
Antes de comenzar
Esta tarea utiliza para realizar una copia de seguridad de un clúster fragmentado. Asegúrese de tener un clúster en ejecución que contenga datos en colecciones mongodump fragmentadas.
Compatibilidad de versiones
Este procedimiento requiere una versión de MongoDB que admita el bloqueo fsync desde mongos.
A partir de MongoDB 6.0.11 (también disponible a partir 5.0.22 de), los fsync comandos y se fsyncUnlock mongos pueden ejecutar en para bloquear y desbloquear un clúster fragmentado.
Privilegios de administrador
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.
Pasos
Para realizar una copia de seguridad autogestionada de un clúster fragmentado, complete los siguientes pasos:
Buscar una ventana de respaldo
Para encontrar un buen momento para realizar una copia de seguridad, monitoree el uso de su aplicación y base de datos para encontrar un momento en el que sea poco probable que se produzcan migraciones de fragmentos, reparticiones y operaciones de transformación de esquemas.
Nota
Estos pasos solo pueden producir una copia de seguridad consistente si se siguen exactamente y no hay ninguna operación en curso cuando comienza.
Para obtener más información, consulte Programar ventana de copia de seguridad para un clúster fragmentado autoadministrado.
Detener el balanceador
Para evitar que las migraciones de fragmentos interrumpan la copia de seguridad, conéctese a y mongos sh.stopBalancer() use el método para detener el balanceador:
sh.stopBalancer()
Si hay una ronda de equilibrio en curso, la operación espera a que se complete el equilibrio.
Para verificar que el balanceador esté detenido, utilice el sh.getBalancerState() método:
use config while( sh.isBalancerRunning().mode != "off" ) { print( "Waiting for Balancer to stop..." ); sleep( 1000 ); }
Bloquear el clúster
El clúster fragmentado debe permanecer bloqueado durante el proceso de copia de seguridad para proteger la base de datos de escrituras, que pueden causar inconsistencias en la copia de seguridad.
Para bloquear un clúster fragmentado, conéctese a y mongos db.fsyncLock() use el método:
db.getSiblingDB("admin").fsyncLock()
Para confirmar el bloqueo, en mongos y el servidor de configuración principal, ejecute la siguiente secuencia de agregación y asegúrese de que todos los fragmentos estén mongod bloqueados:
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 } ]
Realizar copias de seguridad
Para realizar una copia de seguridad del clúster fragmentado, utilice 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
Desbloquear el clúster
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 el servidor de configuración principal, ejecute la siguiente secuencia de agregación y asegúrese de que todos los fragmentos estén mongod desbloqueados:
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 } ]
Reiniciar el balanceador
Para reiniciar el balanceador, utiliza el método sh.startBalancer():
sh.startBalancer()
Para confirmar que el balanceador se está ejecutando, utilice el sh.getBalancerState() método:
sh.getBalancerState()
true
El comando devuelve true cuando el balanceador se está ejecutando.
Próximos pasos
Puede restaurar datos desde una mongodump copia de mongorestore seguridad utilizando.
Para migrar a un set de réplicas o un servidor autónomo, ejecute
mongorestoreenmongod.Para restaurar a un clúster fragmentado, ejecute
mongorestorecontramongoscon configurado para excluir--nsExcludelaconfigbase de datos:mongorestore --nsExclude='config.*' /data/backup
Importante
mongorestore no fragmenta las colecciones restauradas en el clúster de destino.
Para garantizar que una colección restaurada se fragmente en el clúster de destino, cree una colección con el mismo espacio de nombres en el clúster de destino y luego fragmente la colección antes de mongorestore ejecutar. El balanceador distribuirá los documentos restaurados entre los fragmentos del clúster de destino.
Para obtener más información,consulte Realizar copias de seguridad y restaurar una implementación autoadministrada con herramientas MongoDB.