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 documentos específicos desde el fichero en linea

Importante

Característica no disponible en los clústeres Flex

Los clústeres flexibles no admiten esta funcionalidad en este momento. Para obtener más información, consulte Limitaciones de Atlas Flex.

Esta página describe cómo restaurar datos archivados específicos mediante el Etapa de canalización $merge. Este enfoque permite ejecutar una restauración más granular según criterios específicos. Si necesita restaurar un clúster completo, consulte "Copia de seguridad y restauración de datos archivados" para obtener más información.

Nota

Asegúrate de que tu clúster esté adecuadamente aprovisionado para la cantidad de datos que deseas restaurar desde tu fichero. De lo contrario, corre el riesgo de quedarse sin espacio durante o después de la restauración. Contacte a Asistencia Técnica para obtener orientación técnica adicional sobre la configuración del tamaño del oplog o para resolver cualquier problema de espacio en su clúster Atlas.

Necesitas acceso Project Data Access Admin o superior al proyecto para seguir este procedimiento.

Este enfoque no se recomienda para conjuntos de datos grandes (alrededor de 1TB de datos) con un gran número de particiones.

Realiza los siguientes pasos para restaurar datos archivados específicos a tu clúster de Atlas:

1

Pausa el fichero en linea asociado con la colección que contiene los datos archivados que deseas restaurar.

Consulte Pausar y reanudar el archivado para obtener más información.

2

Debes utilizar el Archive Only cadena de conexión para conectarse al fichero en linea. Para obtener más información, consulta Conectarse al fichero en línea.

3

Para aprender más sobre la sintaxis y el uso de la etapa $merge del pipeline para mover datos de vuelta a tu clúster Atlas, consulta la etapa del pipeline $merge.

Ejemplo

Considera los siguientes documentos en una S3 fichero:

{
"_id" : 1,
"item": "cucumber",
"source": "nepal",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 2,
"item": "miso",
"source": "canada",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 3,
"item": "oyster",
"source": "luxembourg",
"released": ISODate("2016-05-18T16:00:00Z")
}
{
"_id" : 4,
"item": "mushroom",
"source": "ghana",
"released": ISODate("2016-05-18T16:00:00Z")
}

Supongamos que deseas restaurar documentos basados en los campos item y source durante la etapa $merge. El siguiente código de muestra muestra un ejemplo de uso de la etapa $merge para restaurar datos de fichero basados en ese criterio:

db.<collection>.aggregate([
{
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>",
"db": "<db-name>",
"coll": "<collection-name>"
}
},
"on": [ "item", "source" ],
"whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
])

El código emplea la siguiente lógica:

  • Si un documento archivado coincide con un documento en el clúster de Atlas en los campos item y source, Atlas mantiene el documento existente en el clúster porque la copia del documento en el clúster de Atlas es más reciente que la versión archivada.

  • Si un documento archivado no se corresponde con ningún documento en el clúster de Atlas, Atlas insertará el documento en la colección especificada del clúster de Atlas.

Al restaurar datos en el clúster de Atlas, los datos archivados podrían tener _id campos duplicados. En este ejemplo, podemos incluir una etapa para ordenar los $sort campos _id y released antes de la $merge etapa y así garantizar que Atlas seleccione los documentos con la fecha más reciente si hay duplicados que resolver.

El siguiente código de muestra agrega la etapa $sort:

db.runCommand({
"aggregate": "<collection>", "pipeline": [
{
$sort: {
"_id": 1, "released": 1,
}
}, {
"$merge": {
"into": {
"atlas": {
"clusterName": "<atlas-cluster-name>", "db": "<db-name>",
"coll": "<collection-name>"
}
}, "on": [ "item", "source" ], "whenMatched": "keepExisting",
"whenNotMatched": "insert"
}
}
], "cursor": { }
}, { "background": true }
)

Para obtener más información sobre cómo resolver campos duplicados, consulte las consideraciones de $merge.

Nota

Si hay varios campos de on, debe crear un índice único compuesto en los campos identificadores de on:

db.<collection>.createIndex( { item: 1, source: 1 }, { unique: true } )

Alternativamente, especifique las fusiones de forma secuencial, una para cada campo de identificador on, en una colección temporal. Luego, combina los datos en la colección temporal con la colección objetivo utilizando la cadena de conexión del clúster. Aún se debe crear un índice único para cada campo identificador on.

Puede ejecutar la etapa de agregación en segundo plano configurando la bandera background en true. Para ejecutar este comando en mongosh, utiliza el db.runCommand.

4

Verifica los datos en el clúster de Atlas y borra el fichero en línea.

Consulte Eliminar un archivo en línea para obtener más información.

Nota

Si tienes problemas al migrar datos de vuelta a tu clúster de Atlas, contacta a Soporte.

Volver

Copia de seguridad y restauración

En esta página