Navigation

Import Archive from S3

Note
Feature unavailable in Free and Shared-Tier Clusters

This feature is not available for M0 (Free Tier), M2, and M5 clusters. To learn more about which features are unavailable, see Atlas M0 (Free Tier), M2, and M5 Limitations.

You can restore data archived to S3 buckets using mongoimport. This page has a sample procedure to import archived data using the AWS CLI and the MongoDB mongoimport utility.

Before you begin, you must:

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

where:

<bucketName>
Name of the AWS S3 bucket.
<prefix>

Path to archived data in the bucket. The path has the following format:

/exported_snapshots/<orgName>/<projectName>/<clusterName>/<initiationDateOfSnapshot>/<timestamp>/
<downloadFolder>
Path to the local folder where you want to copy the archived data.

For example, run a command similar to the following:

Example
aws s3 cp s3://export-test-bucket/exported_snapshots/myOrg/myProj/export-me-sharded-cluster/2021-04-24T0013/1619224539 mybucket --recursive
gunzip -r mybucket
2
#!/bin/bash
regex='/(.+)/(.+)/.+'
dir=${1%/}
find $dir -type f -not -path '*/\.*' | while read line ; do
[[ $line =~ $regex ]]
db_name=${BASH_REMATCH[1]}
col_name=${BASH_REMATCH[2]}
mongoimport --mode=upsert -d $db_name -c $col_name --file $line --type json --port $2
done

Here, --mode=upsert enables mongoimport to handle duplicate documents from an archive.

3
sh massimport.sh <downloadFolder> <mongodbPort>

where:

<downloadFolder>
Path to the local folder where you copied the archived data.
<mongodbPort>
Port of the running mongod instance where you want to import the archived data.

For example, run a command similar to the following:

Example
sh massimport.sh mybucket/ 40000
Give Feedback

On this page

  • Prerequisites
  • Procedure