Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

Importar arquivos

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.

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