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

Restaurar un set de réplicas desde una snapshot

Cuando restaures un set de réplicas desde una copia de seguridad, el Ops Manager te proporciona un archivo de restauración para el punto de restauración seleccionado. Para aprender sobre el proceso de restauración, consulta Restore Overview.

La Especificación BSON cambió el subtipo por defecto para el tipo de datos binarios BSON (BinData) de 2 a 0. Algunos datos binarios almacenados en una instantánea pueden ser de subtipo BinData 2. La copia de seguridad detecta y convierte automáticamente los datos de la snapshot en el subtipo BinData 2 al subtipo BinData 0. Si el código de tu aplicación espera el subtipo BinData 2, debes actualizar tu código para funcionar con el subtipo BinData 0.

Tip

Las notas sobre la especificación BSON explican los detalles específicos de este cambio.

El archivo de copia de seguridad de restauración incluye un archivo de metadatos llamado restoreInfo.txt. Este archivo recopila las opciones que utilizó la base de datos cuando se tomó la snapshot. La base de datos debe ejecutarse con las opciones mencionadas después de haber sido restaurada. Este archivo contiene:

  • Nombre del grupo

  • Nombre del set de réplicas

  • ID del clúster (si corresponde)

  • snapshot timestamp (como marca de tiempo en UTC)

  • Restaurar marca de tiempo (como marca de tiempo BSON en UTC)

  • Última Oplog aplicada (como un Timestamp BSON en UTC)

  • Versión de MongoDB

  • Tipo de motor de almacenamiento

  • Opciones de inicio de mongod utilizadas en la base de datos cuando se tomó la instantánea

  • cifrado (Solo aparece si se habilita el cifrado en el snapshot)

  • UUID de clave maestra (solo aparece si el cifrado está activado en la snapshot)

    Si se está realizando una restauración desde una copia de seguridad cifrada, debe de tener un certificado establecido para esta clave maestra.

Todo Las bases de datosFCV deben cumplir con las consideraciones de respaldo adecuadas.

Para realizar restauraciones manuales, debes tener el rol de Administrador de copias de seguridad en el Ops Manager.

Para la restauración desde una copia de seguridad cifrado, necesitas la misma clave maestra que se utilizó para cifrar la copia de seguridad y ya sea el mismo certificado que se encuentra en el host del daemon de copias de seguridad o un nuevo certificado aprovisionado con esa clave desde el host KMIP.

Si la instantánea está cifrada, el panel de restauración muestra el ID de la clave maestra de KMIP y la información del servidor KMIP. También puede encontrar esta información al visualizar la propia instantánea y en el archivo restoreInfo.txt.

Debe asegurarse de que la implementación de MongoDB no reciba solicitudes de clientes durante la restauración. Debe hacer una de las siguientes cosas:

  • Restaura en nuevos sistemas con nuevos hostnames y vuelve a configurar el código de tu aplicación una vez que la nueva implementación esté en funcionamiento, o bien

  • Asegúrese de que la implementación de MongoDB no reciba solicitudes de cliente mientras restaura datos.

Importante

Rotar la clave maestra después de la restauración de snapshots cifrados con AES256-GCM

Si restauras una snapshot cifrada que Ops Manager cifró con AES256-GCM, rota tu clave maestra después de completar la restauración.

Para que Ops Manager restaure automáticamente la snapshot:

1
2
3
  1. Elija el punto desde el que desea restaurar su copia de seguridad.

    Tipo de restauración
    Descripción
    Acción

    Snapshot

    Le permite elegir una instantánea almacenada.

    Selecciona una snapshot existente para restaurar.

    Point In Time

    Crea una instantánea personalizada que incluye todas las operaciones hasta, pero sin incluir, la hora seleccionada. Por defecto, Oplog Store almacena 24 horas de datos.

    Por ejemplo, si selecciona 12:00, la última operación en la restauración será 11:59:59 o anterior.

    Seleccione Date y Time.

    Oplog Timestamp

    Crea un snapshot personalizado que incluye todas las operaciones hasta e incluyendo la marca de tiempo Oplog ingresada. La marca de tiempo Oplog contiene dos campos:

    Timestamp

    marca de tiempo en el número de segundos que han transcurrido desde el Unix epoch

    Increment

    Orden de la operación aplicada en ese momento como un valor ordinal de 32 bits.

    Escriba un Oplog Timestamp y Increment.

    Ejecute una query contra local.oplog.rs en su set de réplicas para encontrar la marca de tiempo deseada.

  2. Haga clic en Next.

4
  1. Haga clic en Choose Cluster to Restore to.

  2. Complete los siguientes campos:

    Campo
    Acción

    Project

    Elige un proyecto al que quieras restaurar la snapshot.

    Cluster to Restore to

    Seleccione un clúster al que quiera restaurar el snapshot.

    Ops Manager debe administrar el conjunto de réplicas de destino.

    ADVERTENCIA: La automatización remueve todos los datos existentes del clúster. Preserva todas las copias de seguridad y las snapshots para el clúster existente.

  1. Haga clic en Restore.

    Ops Manager toma nota de cuán espacio de almacenamiento requiere la restauración.

5

Advertencia

Considerar restauración automática

Este procedimiento implica una gran cantidad de pasos. Algunos de estos pasos tienen graves implicaciones de seguridad. Si no necesita restaurar en una implementación que Ops Manager no gestione, considere una restauración automática.

1
2
3
  1. Elija el punto desde el que desea restaurar su copia de seguridad.

    Tipo de restauración
    Descripción
    Acción

    Snapshot

    Le permite elegir una instantánea almacenada.

    Selecciona una snapshot existente para restaurar.

    Point In Time

    Crea una instantánea personalizada que incluye todas las operaciones hasta, pero sin incluir, la hora seleccionada. Por defecto, Oplog Store almacena 24 horas de datos.

    Por ejemplo, si selecciona 12:00, la última operación en la restauración será 11:59:59 o anterior.

    Seleccione Date y Time.

    Oplog Timestamp

    Crea un snapshot personalizado que incluye todas las operaciones hasta e incluyendo la marca de tiempo Oplog ingresada. La marca de tiempo Oplog contiene dos campos:

    Timestamp

    marca de tiempo en el número de segundos que han transcurrido desde el Unix epoch

    Increment

    Orden de la operación aplicada en ese momento como un valor ordinal de 32 bits.

    Escriba un Oplog Timestamp y Increment.

    Ejecute una query contra local.oplog.rs en su set de réplicas para encontrar la marca de tiempo deseada.

  2. Haga clic en Next.

4
5
  1. Configura las siguientes opciones de descarga:

    Pull Restore Usage Limit

    Selecciona cuántas veces se puede usar el enlace. Si se selecciona No Limit, el enlace se puede reutilizar hasta que expire.

    Restore Link Expiration (in hours)

    Seleccione la cantidad de horas hasta que el enlace expire. El valor por defecto es 1. El valor máximo es el número de horas hasta que caduque la snapshot seleccionada.

  2. Haga clic en Finalize Request.

  3. Si utilizas 2FA, Ops Manager te pedirá tu código 2FA. Ingresa tu código 2FA y haz clic en Finalize Request.

6

Ops Manager crea enlaces a la instantánea. De forma predeterminada, estos enlaces están disponibles durante una hora y solo se pueden usar una vez.

Para descargar los snapshots:

  1. Si cerraste el panel de restauración, haz clic Continuous Backup y luego Restore History.

  2. Cuando la tarea de restauración se complete, haz clic en (get link) para cada set de réplicas que aparezca.

  3. Haz click:

    • El botón de copiar a la derecha del enlace para copiar el enlace y utilizarlo más tarde, o

    • Download para descargar la instantánea inmediatamente.

1

Antes de intentar restaurar los datos manualmente, quita el set de réplicas de automatización.

Elija la opción Unmanage this item in Ops Managers but continue to monitor.

2

Dependiendo de tu ruta, es posible que debas especificar la ruta a mongosh. ejecutar:

mongosh --port <port> \
--eval "db.getSiblingDB('admin').shutdownServer()"
3

Capacidad de almacenamiento

El hardware del host de destino necesita tener suficiente espacio de almacenamiento libre para almacenar los datos restaurados. Si desea mantener algún dato existente del clúster en este host, asegúrese de que el host tenga suficiente espacio libre para los datos del clúster y los datos restaurados.

Versión de MongoDB

El host de destino en el que se está restaurando y el host de origen desde el cual se está restaurando deben ejecutar la misma versión del MongoDB Server. Para comprobar la versión de MongoDB, ejecuta mongod --version desde una terminal o shell.

Para aprender más, consulta instalación.

4

Antes de mover los archivos de datos de la snapshot al host de destino, verifica si el host de destino contiene archivos existentes y borra todos los archivos excepto el archivo automation-mongod.conf.

Descomprime los archivos de la snapshot y muévelos al host de destino de la siguiente manera:

tar -xvf <backupSnapshot>.tar.gz
mv <backupSnapshot> </path/to/datafiles>
1

Inicia el proceso mongod en modo autónomo como una medida temporal. Esto te permite agregar nuevos parámetros de configuración a la colección system.replset en pasos posteriores.

Utiliza el <ephemeralPort> para el proceso temporal autónomo mongod en todos los pasos de este procedimiento en que se mencione. Este puerto debe diferir de los puertos del host de origen y de destino.

Ejecute el proceso como se indica a continuación. Dependiendo de mongod mongod la ruta, es posible que deba especificar la ruta al binario.

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \

Si está restaurando a partir de una snapshot filtrada por namespace, use la opción --restore.

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--restore

Después de que el proceso mongod comience a aceptar conexiones, continuar.

2

Desde el host que ejecuta este mongod proceso, inicie.mongosh Según la ruta, es posible que deba especificar la ruta mongosh a.

Para conectarse al mongod escuchando en localhost en el mismo <ephemeralPort> especificado en el paso anterior, ejecute:

mongosh --port <ephemeralPort>

Después de que mongosh se conecte a mongod, continúa.

3

Para realizar restauraciones manuales, debes tener el rol de Administrador de copias de seguridad en el Ops Manager.

Ejecute los siguientes comandos para eliminar la configuración del conjunto de réplicas anterior y otras recopilaciones relacionadas con la replicación que no sean registros de operaciones.

db.getSiblingDB("local").replset.minvalid.drop()
db.getSiblingDB("local").replset.oplogTruncateAfterPoint.drop()
db.getSiblingDB("local").replset.election.drop()
db.getSiblingDB("local").system.replset.remove({})

Una respuesta exitosa debería verse así:

> db.getSiblingDB("local").replset.minvalid.drop()
true
> db.getSiblingDB("local").replset.oplogTruncateAfterPoint.drop()
true
> db.getSiblingDB("local").replset.election.drop()
true
> db.getSiblingDB("local").system.replset.remove({})
WriteResult({ "nRemoved" : 1 })
4

Inserta el siguiente documento en la colección system.replset de la base de datos local. Cambia las siguientes variables:

  • <replaceMeWithTheReplicaSetName> Al nombre de su conjunto de réplicas. Este nombre no tiene que ser el mismo que el anterior.

  • <host> al host que sirve a este miembro del conjunto de réplicas.

  • <finalPortNewReplicaSet> al puerto final para el nuevo set de réplicas. Para una restauración automatizada, debes especificar un puerto diferente al <ephemeralPort> que se especificó previamente.

Asegúrese de incluir y configurar todos los miembros del nuevo conjunto de réplicas en la matriz members.

1db.getSiblingDB("local").system.replset.insertOne({
2 "_id" : "<replaceMeWithTheReplicaSetName>",
3 "version" : NumberInt(1),
4 "protocolVersion" : NumberInt(1),
5 "members" : [
6 {
7 "_id" : NumberInt(0),
8 "host" : "<host>:<finalPortNewReplicaSet>"
9 },
10 {
11 . . .
12 },
13 . . .
14 ],
15 "settings" : {
16
17 }
18})

Una respuesta exitosa debería verse así:

{ "acknowledged" : true, "insertedId" : "<yourReplicaSetName>" }
5

Ejecutes el siguiente comando:

db.getSiblingDB("local").replset.minvalid.insertOne({
"_id" : ObjectId(),
"t" : NumberLong(-1),
"ts" : Timestamp(0,1)
})

Una respuesta exitosa debería verse así:

{ "acknowledged" : true, "insertedId" : ObjectId("<yourObjectId>") }
6

Establece el documento oplogTruncateAfterPoint con los valores proporcionados en el campo Restore Timestamp del archivo restoreInfo.txt.

El campo Restore Timestamp de ese archivo contiene dos valores. En el siguiente ejemplo, el primero es la marca de tiempo y el segundo, el incremento.

1...
2Restore timestamp: (1609947369, 2)
3Last Oplog Applied: Wed Jan 06 15:36:09 GMT 2021 (1609947369, 1)
4MongoDB Version: 4.2.11
5...

El siguiente código de ejemplo utiliza el valor de marca de tiempo y el valor de incremento del ejemplo anterior.

truncateAfterPoint = Timestamp(1609947369,2)
db.getSiblingDB("local").replset.oplogTruncateAfterPoint.insertOne({
"_id": "oplogTruncateAfterPoint",
"oplogTruncateAfterPoint": truncateAfterPoint
})

Una respuesta exitosa debería verse así:

WriteResult({ "nInserted" : 1 })

Nota

Restaurando MongoDB 4.2 Instantáneas usando MongoDB 4.4

Si intenta restaurar una instantánea de MongoDB 4.2 con un mongod ejecutando MongoDB,4.4 su registro de operaciones puede contener documentos innecesarios.

Para solucionar este problema, puede realizar una de las siguientes acciones:

  • Disminuye la marca de tiempo en 1.

  • Restaurar utilizando MongoDB 4.2.

  • Haga que Ops Manager ejecute una restauración automática.

Este problema no aplica a MongoDB 4.4 ni a instantáneas posteriores.

1

Dependiendo de tu ruta, es posible que debas especificar la ruta a mongosh. ejecutar:

mongosh --port <ephemeralPort> \
--eval "db.getSiblingDB('admin').shutdownServer()"
2

Inicia el mongod usando el siguiente comando. Esta acción reconcilia el estado de mongod con el oplog hasta el Restore timestamp. Dependiendo de tu ruta, es posible que necesites especificar la ruta al binario mongod.

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--replSet <replaceMeWithTheReplicaSetName>
3

Dependiendo de tu ruta, es posible que debas especificar la ruta a mongosh. ejecutar:

mongosh --port <ephemeralPort> \
--eval "db.getSiblingDB('admin').shutdownServer()"
1

Este paso es condicional. Ejecútelo si necesita una restauración a un punto en el tiempo.

En este paso, debes descargar y ejecutar la utilidad de copia de seguridad y restauración de MongoDB en la instancia de destino para el set de réplicas y luego detener la instancia.

  1. Descargue la utilidad de restauración de copia de seguridad de MongoDB en su host.

    Si cerró el panel de restauración, haga clic en Continuous Backup in Deployment, More, y luego en Download MongoDB Backup Restore Utility.

  2. Inicie una instancia de mongod sin que la autenticación esté habilitada utilizando el directorio de instantáneas extraído como el directorio de datos. Dependiendo de tu trayecto, es posible que necesites especificar la ruta del binario mongod.

    mongod --port <ephemeralPort> \
    --dbpath </path/to/datafiles> \
    --setParameter ttlMonitorEnabled=false \
    --bind_ip <hostname_or_IP>

    Advertencia

    La Utilidad de restauración de copia de seguridad de MongoDB no admite la autenticación, por lo que no puede iniciar esta base de datos temporal con autenticación.

  3. Ejecuta la utilidad de restauración de copias de seguridad de MongoDB en tu host de destino. Ejecute una vez para el set de réplicas.

    Importante

    Comando preconfigurado para la utilidad mongodb-copia de seguridad-restauración-util

    Ops Manager proporciona el mongodb-backup-restore-util con las opciones adecuadas para su restauración en el panel de restauración bajo Run Binary with PIT Options.

    Deberás copiar el comando mongodb-backup-restore-util proporcionado en la aplicación Ops Manager.

    ./mongodb-backup-restore-util --https --host <targetHost> \
    --port <ephemeralPort> \
    --opStart <opLogStartTimeStamp> \
    --opEnd <opLogEndTimeStamp> \
    --logFile <logPath> \
    --oplogSourceAddr <oplogSourceAddr> \
    --apiKey <apiKey> \
    --groupId <groupId> \
    --rsId <rsId> \
    --whitelist <database1.collection1, database2, etc.> \
    --blacklist <database1.collection1, database2, etc.> \
    --seedReplSetMember \
    --oplogSizeMB <size> \
    --seedTargetPort <port> \
    --ssl \
    --sslCAFile </path/to/ca.pem> \
    --sslPEMKeyFile </path/to/pemkey.pem>
    --sslClientCertificateSubject <distinguishedName> \
    --sslRequireValidServerCertificates <true|false> \
    --sslServerClientCertificate </path/to/client.pem> \
    --sslServerClientCertificatePassword <password> \
    --sslRequireValidMMSBackupServerCertificate <true|false> \
    --sslTrustedMMSBackupServerCertificate </path/to/mms-certs.pem> \
    --httpProxy <proxyURL>

    El comando mongodb-backup-restore-util utiliza las siguientes opciones:

    Opción
    Necesidad
    Descripción

    --host

    Requerido

    Proporcione el nombre de host, FQDN, la dirección IP IPv4 o la dirección IP IPv6 para el host que sirve a mongod al que se debe aplicar el oplog. Si copiaste el mongodb-backup-restore-util comando proporcionado en la aplicación Ops Manager, este campo está preconfigurado.

    --port

    Requerido

    Proporciona el puerto efímero para el host que sirve al mongod al que debe aplicarse el oplog.

    --opStart

    Requerido

    Proporciona la marca de tiempo BSON para la primera entrada de oplog que deseas incluir en la restauración. Esta información aparece en la entrada "Último Oplog aplicado" en el archivo restoreInfo.txt proporcionado con el snapshot descargado.

    Este valor debe ser menor o igual al valor --opEnd.

    --opEnd

    Requerido

    Proporcione la marca de tiempo BSON de la última oplog que desee incluir en la restauración.

    Este valor no puede ser mayor que el final del opLog.

    --logFile

    Opcional

    Proporcione una ruta, incluido el nombre del archivo, donde se escribe el registro MBRU.

    --oplogSourceAddr

    Requerido

    Proporcione el URL para el punto final del recurso de Ops Manager.

    --apiKey

    Requerido

    Proporciona a tu Ops Manager la clave API del agente.

    --groupId

    Requerido

    Proporcione el ID del grupo.

    --rsId

    Requerido

    Proporcione el ID del set de réplicas.

    --whitelist

    Opcional

    Proporcione una lista de bases de datos y/o colecciones a las que quiera limitar la restauración.

    --blacklist

    Opcional

    Proporcione una lista de bases de datos y/o colecciones que desea excluir de la restauración.

    --seedReplSetMember

    Opcional

    Utilice esto si necesita que un miembro del conjunto de réplicas vuelva a crear la colección oplog y la inicialice con la marca de tiempo correcta.

    Requiere --oplogSizeMB y --seedTargetPort.

    --oplogSizeMB

    Condicional

    Proporcione el tamaño de oplog en MB.

    Requerido si --seedReplSetMember está configurado.

    --seedTargetPort

    Condicional

    Proporciona el puerto para el set de réplicas primario. Esto puede diferir del puerto efímero utilizado.

    Requerido si --seedReplSetMember está configurado.

    --ssl

    Opcional

    Úsalo si necesitas TLS/SSL para aplicar el oplog al mongod.

    Requiere --sslCAFile y --sslPEMKeyFile.

    --sslCAFile

    Condicional

    Proporcione la ruta al archivo de la Autoridad Certificadora.

    Requerido si --ssl está configurado.

    --sslPEMKeyFile

    Condicional

    Proporciona la ruta al archivo del certificado PEM.

    Requerido si --ssl está configurado.

    --sslPEMKeyFilePwd

    Condicional

    Proporcione la contraseña para el archivo de certificado PEM especificado --sslPEMKeyFile en.

    Obligatorio si --ssl está configurado y el archivo de clave PEM está cifrado.

    --sslClientCertificateSubject

    Opcional

    Proporcione el Sujeto del Certificado de Cliente o Nombre Distinguido (DN) para el proceso de destino de MongoDB.

    Requerido si --ssl está configurado.

    --sslRequireValidServerCertificates

    Opcional

    Establezca una bandera que indique si la herramienta debe validar los certificados que presenta el proceso objetivo de MongoDB.

    --sslServerClientCertificate

    Opcional

    Proporcione la ruta absoluta del archivo de certificado de cliente que se utilizará para conectarse al host de Ops Manager.

    --sslServerClientCertificatePassword

    Condicional

    Proporcione la ruta absoluta al passworddel archivo de certificado de cliente que se utilizará para conectar con el host de Ops Manager.

    Obligatorio si --sslServerClientCertificate está configurado y ese certificado está cifrado.

    --sslRequireValidMMSBackupServerCertificate

    Opcional

    Establezca una bandera que indique si se requieren certificados válidos al contactar al host de Ops Manager. El valor por defecto es true.

    --sslTrustedMMSBackupServerCertificate

    Opcional

    Proporciona la ruta absoluta a los certificados de la Autoridad de Certificación de confianza en formato PEM para el host de Ops Manager. Si no se proporciona esta bandera, se utiliza la Autoridad de certificación del sistema.

    Si Ops Manager utiliza un certificado SSL autofirmado, se requiere esta configuración.

    --httpProxy

    Opcional

    Proporcione la URL de un HTTP servidor proxy que la herramienta pueda usar.

    significa que, si se copió el comando mongodb-backup-restore-util proporcionado en la Aplicación de Ops Manager, este campo ya está configurado previamente.

  4. Detén el mongod en la instancia. Dependiendo de tu trayecto, puede que necesites especificar la ruta a mongosh. ejecutar:

    mongosh --port <ephemeralPort> \
    --eval "db.getSiblingDB('admin').shutdownServer()"
2

Inicie utilizando el siguiente comando, especificando estos mongod parámetros:

  • <bind_ip> al host que sirve a este miembro del set de réplicas que especificaste en la configuración del set de réplicas.

  • <port> al <ephemeralPort> que especificaste cuando iniciaste la instancia temporal autónomo.

Esta acción reproduce el oplog hasta la última entrada, incluidas aquellas insertadas cuando ejecutó la Utilidad de restauración de MongoDB.

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--bind_ip <host-serving-this-replica-set-member>
--setParameter recoverFromOplogAsStandalone=true
--setParameter takeUnstableCheckpointOnShutdown=true
--setParameter startupRecoveryForRestore=true

Una vez que completes este paso, se habrá completado el proceso de restauración real.

3

Dependiendo de tu ruta, es posible que debas especificar la ruta a mongosh. ejecutar:

mongosh --port <port> \
--eval "db.getSiblingDB('admin').shutdownServer()"
4
1

En este punto, los archivos de datos en el conjunto de réplicas están en un estado consistente, pero la configuración del conjunto de réplicas debe actualizarse para que cada nodo esté al tanto de los demás.

Ejecuta el siguiente comando:

sudo -u mongod <path/to/target_mongod_binary> -f /path/to/datafiles/automation-mongod.conf

El siguiente ejemplo reinicia todos los nodos con la versión 4.4.12 enterprise con la ruta de datos /data6/node3:

sudo -u mongod /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.12-ent/bin/mongod -f /data6/node3/automation-mongod.conf
2

Para gestionar el set de réplicas con automatización de nuevo, importa el set de réplicas nuevamente en Ops Manager.

En la página Deployment, haz clic en Add, selecciona Existing MongoDB Deployment y continúa añadiendo Automation de nuevo a tu clúster.

Volver

Clúster fragmentado

En esta página