Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Importar snapshot archivados en Atlas

Importante

La función descrita en esta página no es compatible actualmente con los clústeres de Atlas Infinite durante la versión preliminar pública. Para conocer las funciones compatibles con la versión preliminar pública, consulte Disponibilidad de la versión preliminar pública.

Nota

Esta función está disponible para clústeres M10 o superiores. Para obtener más información sobre las funciones disponibles para los clústeres gratuitos, consulte Límites de los clústeres gratuitos de Atlas, y para los clústeres Flex, consulte Limitaciones de Atlas Flex.

Puede restaurar los datos archivados en S3, Azure o Google Cloud Storage utilizando mongoimport y mongorestore. Esta página contiene un procedimiento de ejemplo para importar datos archivados y reconstruir índices utilizando la CLI de AWS, azopy o gcloud, según la fuente de datos, y las herramientas de base de datos de MongoDB.

Para aprender a exportar un snapshot de copia de seguridad en la nube a un bucket de almacenamiento de objetos en la nube antes de importarlo, consulte Exportar snapshots de copia de seguridad en la nube a almacenamiento de objetos.

Antes de comenzar, debes:

1
aws s3 cp s3://<bucketName>/<prefix> <downloadFolder> --recursive
gunzip -r <downloadFolder>

donde:

<bucketName>

Nombre del bucket S3 de AWS.

<prefix>

Ruta a los datos de fichero en el bucket. La ruta tiene el siguiente formato:

/exported_snapshots/<orgId>/<projectId>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/

<downloadFolder>

Ruta a la carpeta local donde se desea copiar los datos del fichero.

Por ejemplo, ejecuta un comando similar al siguiente:

Ejemplo

aws s3 cp
s3://export-test-bucket/exported_snapshots/1ab2cdef3a5e5a6c3bd12de4/12ab3456c7d89d786feba4e7/myCluster/2021-04-24T0013/1619224539
mybucket --recursive
gunzip -r mybucket
2
#!/bin/bash
regex='/(.+)/(.+)/.+'
dir=${1%/}
connstr=$2
# iterate through the subdirectories of the downloaded and
# extracted snapshot export and restore the docs with mongoimport
find $dir -type f -not -path '*/\.*' -not -path '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mongoimport --uri "$connstr" --mode=upsert -d $db_name -c $col_name --file $line --type json
done
# create the required directory structure and copy/rename files
# as needed for mongorestore to rebuild indexes on the collections
# from exported snapshot metadata files and feed them to mongorestore
find $dir -type f -name '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mkdir -p ${dir}/metadata/${db_name}/
cp $line ${dir}/metadata/${db_name}/${col_name}.metadata.json
done
mongorestore "$connstr" ${dir}/metadata/
# remove the metadata directory because we do not need it anymore and this returns
# the snapshot directory in an identical state as it was prior to the import
rm -rf ${dir}/metadata/

Aquí:

  • --mode=upsert permite a mongoimport gestionar documentos duplicados de un fichero.

  • --uri especifica la cadena de conexión para el clúster de Atlas.

3
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"

donde:

<downloadFolder>

Ruta a la carpeta local donde copió los datos del fichero.

<connectionString>

Cadena de conexión para el clúster Atlas.

Por ejemplo, ejecuta un comando similar al siguiente:

Ejemplo

sh massimport.sh mybucket "mongodb+srv://<myConnString>"
1
azcopy copy "https://<storageAccountName>.blob.core.windows.net/<containerName>/<prefix>/*" "<downloadFolder>" --recursive

donde:

<storageAccountName>

Nombre de la cuenta Azure a la que pertenece el contenedor de almacenamiento de blobs.

<containerName>

Nombre del contenedor de almacenamiento de blobs de Azure.

<prefix>

Ruta a los datos de fichero en el bucket.

<downloadFolder>

Ruta a la carpeta local donde se desea copiar los datos del fichero.

Ejemplo

azcopy copy "https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt" "~/downloads" --recursive
2
#!/bin/bash
regex='/(.+)/(.+)/.+'
dir=${1%/}
connstr=$2
# iterate through the subdirectories of the downloaded and
# extracted snapshot export and restore the docs with mongoimport
find $dir -type f -not -path '*/\.*' -not -path '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mongoimport --uri "$connstr" --mode=upsert -d $db_name -c $col_name --file $line --type json
done
# create the required directory structure and copy/rename files
# as needed for mongorestore to rebuild indexes on the collections
# from exported snapshot metadata files and feed them to mongorestore
find $dir -type f -name '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mkdir -p ${dir}/metadata/${db_name}/
cp $line ${dir}/metadata/${db_name}/${col_name}.metadata.json
done
mongorestore "$connstr" ${dir}/metadata/
# remove the metadata directory because we do not need it anymore and this returns
# the snapshot directory in an identical state as it was prior to the import
rm -rf ${dir}/metadata/

Aquí:

  • --mode=upsert permite a mongoimport gestionar documentos duplicados de un fichero.

  • --uri especifica la cadena de conexión para el clúster de Atlas.

3
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"

donde:

<downloadFolder>

Ruta a la carpeta local donde copió los datos del fichero.

<connectionString>

Cadena de conexión para el clúster Atlas.

Ejemplo

sh massimport.sh "~/downloads" "mongodb+srv://<myConnString>"
1
gsutil -m cp -r "gs://<bucketName>/<prefix> <downloadFolder>" --recursive
gunzip -r <downloadFolder>

donde:

<bucketName>

Nombre del bucket de Google Cloud.

<prefix>

Ruta a los datos de fichero en el bucket. La ruta tiene el siguiente formato:

/exported_snapshots/<orgId>/<projectId>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/

<downloadFolder>

Ruta a la carpeta local donde se desea copiar los datos del fichero.

Ejemplo

gsutil -m cp -r
gs://export-test-bucket/exported_snapshots/1ab2cdef3a5e5a6c3bd12de4/12ab3456c7d89d786feba4e7/myCluster/2021-04-24T0013/1619224539
mybucket --recursive
gunzip -r mybucket
2
#!/bin/bash
regex='/(.+)/(.+)/.+'
dir=${1%/}
connstr=$2
# iterate through the subdirectories of the downloaded and
# extracted snapshot export and restore the docs with mongoimport
find $dir -type f -not -path '*/\.*' -not -path '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mongoimport --uri "$connstr" --mode=upsert -d $db_name -c $col_name --file $line --type json
done
# create the required directory structure and copy/rename files
# as needed for mongorestore to rebuild indexes on the collections
# from exported snapshot metadata files and feed them to mongorestore
find $dir -type f -name '*metadata\.json' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mkdir -p ${dir}/metadata/${db_name}/
cp $line ${dir}/metadata/${db_name}/${col_name}.metadata.json
done
mongorestore "$connstr" ${dir}/metadata/
# remove the metadata directory because we do not need it anymore and this returns
# the snapshot directory in an identical state as it was prior to the import
rm -rf ${dir}/metadata/

Aquí:

  • --mode=upsert permite a mongoimport gestionar documentos duplicados de un fichero.

  • --uri especifica la cadena de conexión para el clúster de Atlas.

3

Ejecute la utilidad massimport.sh para importar los datos archivados en el clúster Atlas.

sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"

donde:

<downloadFolder>

Ruta a la carpeta local donde copió los datos del fichero.

<connectionString>

Cadena de conexión para el clúster Atlas.

Ejemplo

sh massimport.sh mybucket "mongodb+srv://<myConnString>"
Califique esta página