Importante
Característica no disponible en los clústeres Flex
Los clústeres flexibles no admiten esta función actualmente. 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úrese de que su clúster tenga la capacidad suficiente para la cantidad de datos que desea restaurar de su archivo. De lo contrario, corre el riesgo de quedarse sin espacio durante o después de la restauración. Contacte con el equipo de soporte para obtener ayuda técnica adicional sobre cómo configurar el tamaño del registro de operaciones o para solucionar problemas de espacio en su clúster Atlas.
Acceso requerido
Necesita tener acceso o superior al proyecto para seguir este Project Data Access Admin procedimiento.
Considerations
Este enfoque no se recomienda para conjuntos de datos grandes (alrededor de 1TB de datos) con una gran cantidad de particiones.
Procedimiento
Realice los siguientes pasos para restaurar datos archivados específicos en su clúster Atlas:
Pause el Archivo en línea asociado con la colección que contiene los datos archivados que desea restaurar.
Consulte Pausar y reanudar el archivado para obtener más información.
Conéctese al Archivo en línea utilizando su cadena de conexión.
Debes utilizar el Archive Only Cadena de conexión para conectarse al Archivo en Línea. Para obtener más información, consulte Conectarse al Archivo en Línea.
Utilice la etapa para mover los datos desde su archivo a su clúster $merge Atlas.
Para obtener más información sobre la $merge sintaxis y el uso de la etapa de canalización para mover datos nuevamente a su clúster Atlas, consulte la etapa de canalización $merge.
Ejemplo
Considere los siguientes documentos en un 3 Archivo S:
{ "_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 desea restaurar documentos según los campos item y source durante la $merge etapa. El siguiente ejemplo de código muestra cómo usar la $merge etapa para restaurar datos archivados según esos criterios:
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 Atlas en los campos
itemysource, Atlas conserva el documento existente en el clúster porque la copia del documento en el clúster Atlas es más reciente que la versión archivada.Si un documento archivado no coincide con ningún documento en el clúster Atlas, Atlas inserta el documento en la colección especificada en el clúster 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 ejemplo de código agrega la $sort etapa:
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 on campos, debe crear un índice único compuesto en los on campos de identificador:
db.<collection>.createIndex( { item: 1, source: 1 }, { unique: true } )
Como alternativa, especifique fusiones secuencialmente, una por cada campo de identificador on, en una colección temporal. A continuación, fusione los datos de la colección temporal con la colección de destino mediante la cadena de conexión del clúster. Aun así, debe crear un índice único para cada campo de 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.
Verificar datos en el clúster Atlas y eliminar el archivo en línea.
Consulte Eliminar un archivo en línea para obtener más información.
Nota
Si tiene problemas al migrar datos a su clúster Atlas,comuníquese con el soporte técnico.