Observação
Este recurso não está disponível para clusters M0
grátis e clusters Flex. Para aprender mais sobre quais recursos não estão disponíveis, consulte Limites do Atlas M0 (cluster grátis).
Você pode restaurar os dados arquivados no S3, no Azure ou no Google Cloud Platform Storage usando mongoimport
e mongorestore
. Esta página tem um procedimento de amostra para importar dados arquivados e reconstruir índices usando a CLI da Amazon Web Services, azopy
ou gcloud
, dependendo da fonte de dados, e das Database Tools do MongoDB.
Pré-requisitos
Antes de começar, você deve:
Instalar as ferramentas mongoimport e mongorestore
Procedimento
Copie os dados no contêiner S para uma pasta usando a Amazon Web Services Amazon Web Services CLI3 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 denominado massimport.sh
.
!/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=upsert
habilita omongoimport
para lidar com documentos duplicados de um arquivo.--uri
especifica a cadeia de conexão para o Atlas cluster.
Execute o utilitário para importar os dados arquivados para o Atlas cluster.massimport.sh
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 denominado massimport.sh
.
!/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=upsert
habilita omongoimport
para lidar com documentos duplicados de um arquivo.--uri
especifica a cadeia de conexão para o Atlas cluster.
Execute o utilitário para importar os dados arquivados para o Atlas cluster.massimport.sh
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 da Google Cloud Platform 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 denominado massimport.sh
.
!/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=upsert
habilita omongoimport
para lidar com documentos duplicados de um arquivo.--uri
especifica 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>"