Este procedimiento describe el proceso para tomar datos de MongoDB y restaurarlos en una nueva base de datos. Conjunto de réplicas. Utilice este enfoque para sembrar implementaciones de prueba desde copias de seguridad de producción o como parte de la recuperación ante desastres.
Importante
No se puede restaurar un único conjunto de datos a tres nuevos mongodinstancias y luego crea un conjunto de réplicas. Si copia el conjunto de datos a cada instancia y luego crea el conjunto de réplicas,mongod MongoDB forzará a las instancias secundarias a realizar una sincronización inicial. Los procedimientos de este documento describen las maneras correctas y eficientes de implementar un conjunto de réplicas restaurado.
También puede usar para restaurar archivos de base mongorestore mongodump de datos utilizando datos creados con. Consulte "Copia de seguridad y restauración de una implementación autoadministrada con MongoDB Tools" para obtener más información.
Considerations
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.
Restaurar la base de datos en un conjunto de réplicas de un solo nodo
Obtenga archivos de respaldo de la base de datos MongoDB.
Los archivos de copia de seguridad pueden provenir de una instantánea del sistema de archivos.MongoDB Cloud Manager genera archivos de base de datos MongoDB para instantáneas almacenadas e instantáneas puntuales. Para Ops Manager, una solución local disponible en MongoDB Enterprise Advanced, consulte también la descripción general de Ops Manager Backup.
- Consideraciones para los motores de almacenamiento cifrado
- Para los motores de almacenamiento cifrado que utilizan el
AES256-GCMmodo de cifrado,AES256-GCMrequiere que cada proceso utilice un valor de bloque de contador único con la clave. Para el motor de almacenamiento cifrado configurado con elAES256-GCMcifrado:- Restauración desde una copia de seguridad en caliente
- A partir de la versión 4.2, si restaura desde archivos obtenidos mediante una copia de seguridad "en caliente" (es decir, mientras
mongodestá en ejecución), MongoDB puede detectar claves "sucias" en el inicio y cambiar automáticamente la clave de la base de datos para evitar la reutilización del IV (vector de inicialización).
- Restauración desde una copia de seguridad en frío
Sin embargo, si restaura desde archivos obtenidos mediante una copia de seguridad "en frío" (es decir,
mongodno está en ejecución), MongoDB no puede detectar las claves "sucias" en el inicio, y la reutilización de IV invalida las garantías de confidencialidad e integridad.A partir de la versión 4.2, para evitar la reutilización de las claves después de restaurar desde un snapshot del sistema de archivos en frío, MongoDB agrega una nueva opción de línea de comandos
--eseDatabaseKeyRollover. Al iniciarse con la opción--eseDatabaseKeyRollover, la instanciamongodcambia las claves de la base de datos configuradas con el cifradoAES256-GCMy se cierra.
Eliminar la local base de datos si existe en la copia de seguridad.
Si va a restaurar desde una copia de seguridad del sistema de archivos (o cualquier copia de seguridad con la base de datos local), descarte la base de datos local.
Inicie un independiente utilizando los archivos de datos de la copia de seguridad como ruta de mongod datos.
También debe especificar las mismas opciones de inicio que se utilizaron cuando se creó la instantánea.
mongod --dbpath /data/db <startup options>
Eliminar la local base de datos.
Conecte mongosh a la mongod instancia y elimine la local base de datos.
use local db.dropDatabase()
Apagar el autónomo.
Iniciar un nuevo conjunto de réplicas de nodo único.
Inicie una instancia como un nuevo conjunto de réplicas de un solo nodo. Especifique la ruta a los archivos de datos de respaldo mongod --dbpath con la opción y el nombre del conjunto de réplicas con la --replSet opción. Para el conjunto de réplicas del servidor de configuración (CSRS), incluya la opción. Incluya cualquier otra opción según corresponda a su --configsvr implementación.
También debe especificar las mismas opciones de inicio que se utilizaron cuando se creó la instantánea.
Nota
Si los miembros de su conjunto de réplicas se ejecutan en diferentes hosts o si desea que los clientes remotos se conecten a su instancia, debe especificar la net.bindIp configuración --bind_ip (o).
Advertencia
Antes de vincular una dirección IP que no sea local (por ejemplo, de acceso público), asegúrese de proteger su clúster contra accesos no autorizados. Para obtener una lista completa de recomendaciones de seguridad, consulte la Lista de verificación de seguridad para implementaciones autogestionadas. Como mínimo, considere habilitar la autenticación y reforzar la infraestructura de red.
mongod --dbpath /data/db --replSet <replName> <startup options>
Nota
Todas las colecciones de MongoDB tienen UUID predeterminados. Al restaurar colecciones, MongoDB conserva sus UUID originales. Al restaurar una colección sin UUID, MongoDB genera un UUID para la colección restaurada.
Para obtener más información sobre los UUID de colecciones, consulte las Colecciones.
Conecte a mongosh la mongod instancia.
Desde la misma máquina en la que se ejecuta uno de los mongod (en este tutorial, mongodb0.example.net), inicia mongosh. Para conectarte al mongod que escucha en localhost por el puerto predeterminado 27017, simplemente ejecuta:
mongosh
Dependiendo de la ruta, es posible que debas especificar la ruta al binario mongosh.
Si tu mongod no se está ejecutando en el puerto por defecto, especifica la opción --port para mongosh.
Iniciar el nuevo conjunto de réplicas.
Utilice rs.initiate() en uno y solo un miembro del conjunto de réplicas:
rs.initiate( { _id : <replName>, members: [ { _id : 0, host : <host:port> } ] })
MongoDB inicia un conjunto que consta del miembro actual y que utiliza la configuración del conjunto de réplicas predeterminada.
Agregar miembros al conjunto de réplicas
MongoDB ofrece dos opciones para restaurar miembros secundarios de un conjunto de réplicas:
Copie manualmente los archivos de la base de datos a cada directorio de datos.
Permitir la sincronización inicial para distribuir datos automáticamente.
Nota
Si su base de datos es grande, la sincronización inicial puede tardar bastante. Para bases de datos grandes, puede ser preferible copiar los archivos de la base de datos en cada host.
Copiar archivos de base de datos y reiniciar la mongod instancia
Utilice la siguiente secuencia de operaciones para "sembrar" miembros adicionales del conjunto de réplicas con los datos restaurados copiando directamente los archivos de datos de MongoDB.
Apague la instancia que mongod restauró.
Utiliza --shutdown o db.shutdownServer() para garantizar un apagado limpio.
Copia el directorio de datos del principal en cada secundario.
Copie el directorio de datos principal en el de los otros miembros del conjunto de dbPath réplicas.
Inicie la instancia que mongod restauró.
Añade los secundarios al conjunto de réplicas.
En una sesión mongosh conectada a la principal,agregue las secundarias al conjunto de réplicas mediante el rs.add() método. Consulte Implementar un conjunto de réplicas autoadministrado para obtener más información sobre la implementación de un conjunto de réplicas.
Actualizar secundarias mediante sincronización inicial
Utilice la siguiente secuencia de operaciones para "sembrar" miembros adicionales del conjunto de réplicas con los datos restaurados utilizando la operación de sincronización inicial predeterminada.
Vacíe el directorio de datos para cada posible miembro del conjunto de réplicas.
Por ejemplo, si el miembro del conjunto de réplicas tiene un storage.dbPath o --dbpath /data/dbde,debe asegurarse de que el directorio exista y esté vacío.
Agregue cada miembro potencial al conjunto de réplicas.
Conéctese al servidor principal mediante el shell y agregue cada servidor secundario al mongo conjunto de réplicas rs.add() mediante.
Cuando agrega un miembro al conjunto de réplicas, lasincronización inicial copia los datos del miembro principal al nuevo miembro.