Docs Menu
Docs Home
/ /

Importe archivos

Nota

Esta función no está disponible para M0 Clústeres gratuitos y clústeres Flex. Para obtener más información sobre las funciones que no están disponibles, consulte Límites de Atlas M0 (clúster libre).

Puede restaurar datos archivados en S,3 Azure o Google Cloud Storage utilizando mongoimport mongorestorey. Esta página presenta un procedimiento de ejemplo para importar datos archivados y reconstruir índices mediante la CLI de AWS, azopy o,gcloud según el origen de datos, y las herramientas de base de datos de MongoDB.

Antes de comenzar, debes:

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

dónde:

<bucketName>

Nombre del depósito AWS S.3

<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, ejecute 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 Atlas.

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

dónde:

<downloadFolder>

Ruta a la carpeta local donde copió los datos archivados.

<connectionString>

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

Por ejemplo, ejecute 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

dónde:

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

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

dónde:

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

dónde:

<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 Atlas.

3

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

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

dónde:

<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