Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Atlas
/ /

Importar arquivos

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.

Antes de começar, você deve:

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

onde:

<bucketName>

Nome do bucket AWS S3 .

<prefix>

Caminho para dados arquivados no bucket. O caminho tem o seguinte formato:

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

<downloadFolder>

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

Aqui:

  • --mode=upsert habilita o mongoimport para lidar com documentos duplicados de um arquivo.

  • --uri especifica a cadeia de conexão para o Atlas cluster.

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

onde:

<downloadFolder>

Caminho para a pasta local onde você copiou os dados arquivados.

<connectionString>

Cadeia de conexão para o Atlas cluster.

Por exemplo, execute um comando semelhante ao seguinte:

Exemplo

sh massimport.sh mybucket "mongodb+srv://<myConnString>"
1
azcopy copy "https://<storageAccountName>.blob.core.windows.net/<containerName>/<prefix>/*" "<downloadFolder>" --recursive

onde:

<storageAccountName>

Nome da conta Azure à qual o contêiner de armazenamento blob pertence.

<containerName>

Nome do contêiner de armazenamento de blob do Azure.

<prefix>

Caminho para dados arquivados no bucket.

<downloadFolder>

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

Aqui:

  • --mode=upsert habilita o mongoimport para lidar com documentos duplicados de um arquivo.

  • --uri especifica a cadeia de conexão para o Atlas cluster.

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

onde:

<downloadFolder>

Caminho para a pasta local onde você copiou os dados arquivados.

<connectionString>

Cadeia de conexão para o Atlas cluster.

Exemplo

sh massimport.sh "~/downloads" "mongodb+srv://<myConnString>"
1
gsutil -m cp -r "gs://<bucketName>/<prefix> <downloadFolder>" --recursive
gunzip -r <downloadFolder>

onde:

<bucketName>

Nome do bucket do Google Cloud Platform.

<prefix>

Caminho para dados arquivados no bucket. O caminho tem o seguinte formato:

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

<downloadFolder>

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

Aqui:

  • --mode=upsert habilita o mongoimport para lidar com documentos duplicados de um arquivo.

  • --uri especifica a cadeia de conexão para o Atlas cluster.

3

Execute a utilidade massimport.sh para importar os dados arquivados no cluster Atlas.

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

onde:

<downloadFolder>

Caminho para a pasta local onde você copiou os dados arquivados.

<connectionString>

Cadeia de conexão para o Atlas cluster.

Exemplo

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

Voltar

Restaurar de snapshot do Cloud Manager

Nesta página