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

Importe archivos

Nota

Esta funcionalidad no está disponible para clústeres gratuitos ni flexibles. Para obtener más información sobre qué funcionalidades no están disponibles, consulta Límites del clúster gratuito de Atlas.

Puede restaurar datos archivados en S3, Azure, o Google Cloud almacenamiento usando mongoimport y mongorestore. Esta página contiene un procedimiento de muestra para importar datos archivados y reconstruir índices utilizando el AWS, azopy o gcloud CLI dependiendo de la fuente de datos, y las MongoDB Database Tools.

Antes de comenzar, debes:

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

donde:

<bucketName>

Nombre del bucket AWS S3.

<prefix>

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

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

<downloadFolder>

Ruta a la carpeta local donde desea copiar los datos archivados.

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 gestionar documentos duplicados de un mongoimport archivo.

  • --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 archivados.

<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 en blobs de Azure.

<prefix>

Ruta a los datos de fichero en el bucket.

<downloadFolder>

Ruta a la carpeta local donde desea copiar los datos archivados.

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 gestionar documentos duplicados de un mongoimport archivo.

  • --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 archivados.

<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 depósito de Google Cloud.

<prefix>

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

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

<downloadFolder>

Ruta a la carpeta local donde desea copiar los datos archivados.

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 gestionar documentos duplicados de un mongoimport archivo.

  • --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 archivados.

<connectionString>

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

Ejemplo

sh massimport.sh mybucket "mongodb+srv://<myConnString>"

Volver

Restaurar desde un snapshot de Cloud Manager

En esta página