Copia de seguridad y restauración de una implementación autogestionada con las herramientas de MongoDB
Este tutorial cubre la creación de copias de seguridad y la restauración de datos utilizando
mongodump y mongorestore.
Para restaurar una copia de seguridad de la implementación autoalojada en una implementación gestionada de MongoDB Atlas, se debe consultar Propaga con mongorestore.
Considerations
Implementaciones
Las utilidades mongorestore y mongodump funcionan con BSON estos vaciados de datos son útiles para crear copias de seguridad de implementaciones pequeñas. Para realizar copias de seguridad resilientes y no disruptivas, utiliza instantáneas del sistema de archivos o instantáneas de disco a nivel de bloque con Copias de seguridad en la nube de MongoDB Atlas.
Nota
Realiza copias de seguridad de clústeres fragmentados con MongoDB Atlas
Para utilizar mongodump y mongorestore como estrategia de respaldo para clústeres particionados, consulte Realizar una copia de seguridad de un clúster particionado autogestionado con un vaciado de base de datos.
Los clústeres particionados también pueden utilizar uno de los siguientes procesos coordinados de copia de seguridad y restauración, que mantienen las garantías de atomicidad de las transacciones entre particiones:
Impactos en el rendimiento
Debido a que mongodump y mongorestore interactúan con una instancia de mongod en ejecución, pueden afectar el rendimiento de la base de datos. Las herramientas generan tráfico y obligan a la base de datos a leer todos los datos en memoria. Cuando MongoDB lee datos que se acceden con poca frecuencia, elimina los datos a los que se accede con frecuencia, degradando el rendimiento de la carga de trabajo regular de la base de datos.
Al hacer copias de seguridad de datos con las herramientas de MongoDB, .sigue estas pautas:
Etiqueta los archivos para identificar los contenidos de la copia de seguridad y la hora de la copia de seguridad.
Si el impacto en el rendimiento de
mongodumpymongorestorees inaceptable, utiliza una alternativa como Snapshots del Sistema de Archivos o copias de seguridad en la nube en MongoDB Atlas.Para asegurarse de que
mongodumppueda realizar una copia de seguridad coherente de un set de réplicas, debes utilizar la opción--oplogpara capturar las escrituras recibidas durante las operaciones de copia de seguridad o detener todas las escrituras en el set de réplicas mientras dure la copia de seguridad.Para sets de réplicas de clústeres, consulte Hacer una copia de seguridad de un clúster particionado autogestionado con un vaciado de base de datos.
Verifica tus copias de seguridad restaurándolas en una implementación de prueba.
Para reducir las inconsistencias en las copias de seguridad en un clúster fragmentado, detén el balanceador, todas las operaciones de escritura y cualquier transformación de esquema durante la copia de seguridad.
Tip
Para obtener más información, consulta Métodos de copia de seguridad para una Implementación Autogestionada. Para la referencia de Database Tools de MongoDB, consulta:
Formato de salida
mongorestore y mongodump pueden enviar datos a un fichero de archivo, el cual es una alternativa de archivo único a múltiples archivos BSON. Los archivos de fichero son formatos de propósito especial que admiten guardados de archivos no contiguos. Permiten copias de seguridad simultáneas desde MongoDB y restauraciones a MongoDB. Los archivos de archivo también optimizan la E/S del disco durante la copia de seguridad y la restauración.
También puedes guardar ficheros en la salida estándar (stdout). Escribir en la salida estándar permite la migración de datos en redes, reducir la E/S de disco y obtener ventajas de concurrencia tanto en las herramientas de MongoDB como en el motor de almacenamiento.
Para obtener más información sobre los archivos de archivo, consulta la opción --archive.
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.
Procedimientos
Realice una copia de seguridad de una base de datos con mongodump
La utilidad mongodump realiza copias de seguridad de los datos conectándose a un mongod en funcionamiento. Puede respaldar un servidor completo, una base de datos o una colección, o usar una query para respaldar parte de una colección. mongodump excluye el contenido de la base de datos local de su salida.
Sin ningún argumento, mongodump se conecta a la instancia de MongoDB en el sistema local en el puerto 27017 y crea una copia de seguridad de la base de datos llamada dump/ en el directorio actual:
mongodump
Para especificar el host y el puerto, utilice uno de los siguientes:
Especifique la
--uristring utilizando una SRV o una estándar cadena de conexión:mongodump --uri="mongodb+srv://username:password@cluster0.example.mongodb.net" <additional_options> Especifica el nombre del host y el puerto en
--host:mongodump --host="mongodb0.example.com:27017" <additional_options> Especifica
--hosty--portpor separado:mongodump --host="mongodb0.example.com" --port=27017 <additional_options>
Para especificar un directorio de salida diferente, utilice --out (o -o):
mongodump --out=/opt/backup/mongodump-1
Para limitar el vaciado a una base de datos o colección específica, use --db y --collection:
mongodump --collection=myCollection --db=test
Esto crea un vaciado de myCollection desde la base de datos test en un subdirectorio dump/ del directorio actual.
mongodump sobrescribir archivos existentes en la carpeta de salida (por defecto: dump/). Antes de ejecutarlo varias veces, realiza una copia de seguridad o renombra la carpeta de salida.
Acceso requerido
Para ejecutar mongodump contra una implementación de MongoDB que tenga control de acceso habilitado, debe tener privilegios que otorguen la acción de find para cada base de datos que se deba respaldar. El rol incorporado backup proporciona los privilegios necesarios para realizar copias de seguridad de todas y cada una de las bases de datos.
El rol backup proporciona privilegios adicionales para respaldar la colección system.profile que existe cuando se ejecuta con un perfilado de base de datos.
Especifica Host y Puerto
Utiliza --host y --port para conectarte a una instancia remota:
mongodump \ --host=mongodb1.example.net \ --port=3017 \ --username=user \ --password="pass" \ --out=/opt/backup/mongodump-1
Especifique su nombre de usuario y contraseña en cualquier comando de mongodump para autenticarse.
Cree copias de seguridad mediante Oplogs
La opción --oplog recopila las entradas de oplog durante la copia de seguridad para que pueda realizar la restauración de la base de datos a su estado en el momento en que se completó la copia de seguridad.
Con --oplog, mongodump copia todos los datos de la base de datos de origen y todas las entradas del oplog desde el principio hasta el final de la copia de seguridad. Usa esto junto con mongorestore --oplogReplay para restaurar una copia de seguridad que refleje el momento exacto en que mongodump se terminó.
Restaurar una base de datos con mongorestore
La utilidad mongorestore restaura una copia binaria de seguridad creada por mongodump al conectarse directamente a una mongod en ejecución. Por defecto, mongorestore busca una copia de seguridad de la base de datos en el directorio dump/ y puede restaurar una copia de seguridad completa o un subconjunto.
Nota
Todas las colecciones de MongoDB tienen UUIDs por defecto. Cuando MongoDB restaura colecciones, las colecciones restauradas conservan sus UUID originales. Al restaurar una colección en la que no había UUID, MongoDB genera un UUID para la colección restaurada.
Para obtener más información sobre los UUID de colecciones, consulte las Colecciones.
Para conectar mongorestore a una mongod activa:
mongorestore --uri <connection string> <path to the backup>
Por ejemplo, para restaurar desde un directorio:
mongorestore /opt/backup/mongodump-1
Esto restaura la copia de seguridad a la instancia mongod en localhost:27017.
Control de acceso
Para restaurar los datos en una implementación que tiene el control de acceso activado, el rol de restore otorga los privilegios necesarios siempre que los datos no incluyan información de la colección system.profile y ejecutes mongorestore sin la opción --oplogReplay.
Necesita privilegios adicionales si los datos de copia de seguridad incluyen datos de la colección system.profile o si ejecuta con --oplogReplay:
| Si los datos de la copia de seguridad incluyen datos de la colección Tanto los roles incorporados |
| Para ejecutar con Se concede solo a los usuarios que deben ejecutar |
Especifica Host y Puerto
Por defecto, mongorestore se conecta a localhost:27017. Para restaurar en un host o puerto diferente, utilizando --host y --port:
mongorestore --host=mongodb1.example.net --port=3017
Para autenticarte, incluye --username y --authenticationDatabase. Omita --password para que mongorestore solicite la contraseña:
mongorestore \ --host=mongodb1.example.net \ --port=3017 \ --username=user \ --authenticationDatabase=admin \ /opt/backup/mongodump-1
Usa un archivo Oplog para restaurar datos
Para capturar los guardados que ocurren mientras mongodump está en ejecución, utiliza --oplog. mongodump crea un archivo oplog.bson con las entradas del oplog para cada escritura durante la ejecución. Aplica esas operaciones con --oplogReplay al restaurar.
Para ver ejemplos, consulta ejemplos de mongodump y de mongorestore.
mongorestore --oplogReplay restablece todos los datos desde oplog.bson pero no permite restablecer a un punto arbitrario en el tiempo. Úselo para garantizar que los datos restaurados reflejen cualquier guardar que se haya realizado durante la ejecutar de mongodump --oplog.
Nota
--oplog está destinado para su uso con sets de réplicas. Para clústeres particionados, incluidos los sets de réplicas que forman parte de un entorno particionado, consulte Hacer una copia de seguridad de un clúster particionado autogestionado con un vaciado de base de datos.
Utiliza --objcheck para validar la integridad del documento durante la inserción, o --drop para descartar cada colección antes de la restauración.