Observação
Esta funcionalidade não está disponível para clusters gratuitos e clusters flexíveis. Para **aprender** mais sobre quais **recursos** não estão disponíveis, consulte Limites de **cluster** gratuito do **Atlas**.
Você pode restaurar dados arquivados no S3, Azure ou Google Cloud Storage utilizando mongoimport e mongorestore. Esta página tem um procedimento de amostra para importar dados arquivados e índices de reconstrução utilizando o AWS, azopy ou gcloud CLI dependendo da fonte de dados e as Database Tools MongoDB.
Pré-requisitos
Antes de começar, você deve:
Instalar as ferramentas mongoimport e mongorestore
Procedimento
Copie os dados no contêiner S3 para uma pasta usando a AWS CLI e extraia os dados.
aws s3 cp s3://<bucketName>/<prefix> <downloadFolder> --recursive gunzip -r <downloadFolder>
onde:
| Nome do bucket AWS S3 . | |
| Caminho para dados arquivados no bucket. O caminho tem o seguinte formato: | |
| Caminho para a pasta local onde você deseja copiar os dados arquivados. |
Por exemplo, execute um comando semelhante ao seguinte:
Exemplo
aws s3 cp s3://export-test-bucket/exported_snapshots/1ab2cdef3a5e5a6c3bd12de4/12ab3456c7d89d786feba4e7/myCluster/2021-04-24T0013/1619224539 mybucket --recursive gunzip -r mybucket
Copie e armazene o seguinte script em um arquivo massimport.sh denominado.
!/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/
Aqui:
--mode=upserthabilita omongoimportpara lidar com documentos duplicados de um arquivo.--uriespecifica a cadeia de conexão para o Atlas cluster.
Execute o utilitário massimport.sh para importar os dados arquivados para o Atlas cluster.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
onde:
| Caminho para a pasta local onde você copiou os dados arquivados. |
| Cadeia de conexão para o Atlas cluster. |
Por exemplo, execute um comando semelhante ao seguinte:
Exemplo
sh massimport.sh mybucket "mongodb+srv://<myConnString>"
Copie os dados no contêiner Armazenamento de Blobs do Azure utilizando a CLI do azcopy e extraia os dados.
azcopy copy "https://<storageAccountName>.blob.core.windows.net/<containerName>/<prefix>/*" "<downloadFolder>" --recursive
onde:
| Nome da conta Azure à qual o contêiner de armazenamento blob pertence. |
| Nome do contêiner de armazenamento de blob do Azure. |
| Caminho para dados arquivados no bucket. |
| Caminho para a pasta local onde você deseja copiar os dados arquivados. |
Exemplo
azcopy copy "https://mystorageaccount.blob.core.windows.net/mycontainer/myTextFile.txt" "~/downloads" --recursive
Copie e armazene o seguinte script em um arquivo massimport.sh denominado.
!/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/
Aqui:
--mode=upserthabilita omongoimportpara lidar com documentos duplicados de um arquivo.--uriespecifica a cadeia de conexão para o Atlas cluster.
Execute o utilitário massimport.sh para importar os dados arquivados para o Atlas cluster.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
onde:
| Caminho para a pasta local onde você copiou os dados arquivados. |
| Cadeia de conexão para o Atlas cluster. |
Exemplo
sh massimport.sh "~/downloads" "mongodb+srv://<myConnString>"
Copie os dados no contêiner de armazenamento do Google Cloud usando a CLI do gcloud e extraia os dados.
gsutil -m cp -r "gs://<bucketName>/<prefix> <downloadFolder>" --recursive gunzip -r <downloadFolder>
onde:
| Nome do bucket do Google Cloud Platform. | |
| Caminho para dados arquivados no bucket. O caminho tem o seguinte formato: | |
| Caminho para a pasta local onde você deseja copiar os dados arquivados. |
Exemplo
gsutil -m cp -r gs://export-test-bucket/exported_snapshots/1ab2cdef3a5e5a6c3bd12de4/12ab3456c7d89d786feba4e7/myCluster/2021-04-24T0013/1619224539 mybucket --recursive gunzip -r mybucket
Copie e armazene o seguinte script em um arquivo massimport.sh denominado.
!/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/
Aqui:
--mode=upserthabilita omongoimportpara lidar com documentos duplicados de um arquivo.--uriespecifica a cadeia de conexão para o Atlas cluster.
Execute a utilidade massimport.sh para importar os dados arquivados no cluster Atlas.
sh massimport.sh <downloadFolder> "mongodb+srv://<connectionString>"
onde:
| Caminho para a pasta local onde você copiou os dados arquivados. |
| Cadeia de conexão para o Atlas cluster. |
Exemplo
sh massimport.sh mybucket "mongodb+srv://<myConnString>"