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.
Requisitos previos
Antes de comenzar, debes:
Instalar las herramientas mongoimport y mongorestore
Procedimiento
Copie los datos del depósito S a una3 carpeta usando la AWS CLI y extraiga los datos.
aws s3 cp s3://<bucketName>/<prefix> <downloadFolder> --recursive gunzip -r <downloadFolder>
dónde:
| Nombre del depósito AWS S.3 | |
| Ruta a los datos archivados en el bucket. La ruta tiene el siguiente formato: | |
| 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
Copie y guarde el siguiente script en un archivo massimport.sh llamado.
!/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=upsertpermite a gestionar documentos duplicados de unmongoimportarchivo.--uriEspecifica la cadena de conexión para el clúster Atlas.
Ejecute la massimport.sh utilidad para importar los datos archivados en el clúster Atlas.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
dónde:
| Ruta a la carpeta local donde copió los datos archivados. |
| 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>"
Copie los datos en el contenedor de Azure Blob Storage mediante la azcopy CLI y extraiga los datos.
azcopy copy "https://<storageAccountName>.blob.core.windows.net/<containerName>/<prefix>/*" "<downloadFolder>" --recursive
dónde:
| Nombre de la cuenta Azure a la que pertenece el contenedor de almacenamiento de blobs. |
| Nombre del contenedor de almacenamiento de blobs de Azure. |
| Ruta a los datos archivados en el bucket. |
| 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
Copie y guarde el siguiente script en un archivo massimport.sh llamado.
!/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=upsertpermite a gestionar documentos duplicados de unmongoimportarchivo.--uriEspecifica la cadena de conexión para el clúster Atlas.
Ejecute la massimport.sh utilidad para importar los datos archivados en el clúster Atlas.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
dónde:
| Ruta a la carpeta local donde copió los datos archivados. |
| Cadena de conexión para el clúster Atlas. |
Ejemplo
sh massimport.sh "~/downloads" "mongodb+srv://<myConnString>"
Copie los datos en el depósito de Google Cloud Storage mediante la gcloud CLI y extraiga los datos.
gsutil -m cp -r "gs://<bucketName>/<prefix> <downloadFolder>" --recursive gunzip -r <downloadFolder>
dónde:
| Nombre del depósito de Google Cloud. | |
| Ruta a los datos archivados en el bucket. La ruta tiene el siguiente formato: | |
| 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
Copie y guarde el siguiente script en un archivo massimport.sh llamado.
!/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=upsertpermite a gestionar documentos duplicados de unmongoimportarchivo.--uriEspecifica la cadena de conexión para el clúster Atlas.
Ejecute la utilidad massimport.sh para importar los datos archivados en el clúster Atlas.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
dónde:
| Ruta a la carpeta local donde copió los datos archivados. |
| Cadena de conexión para el clúster Atlas. |
Ejemplo
sh massimport.sh mybucket "mongodb+srv://<myConnString>"