MongoDB Backup & Restore

Protecting your data with reliable backups

💾 What is Backup & Restore?

Backup creates copies of your database for disaster recovery. Restore recovers data from backups when needed. Regular backups protect against data loss from failures or errors.


# Create a backup
mongodump --db myDatabase --out /backup/

# Restore from backup
mongorestore --db myDatabase /backup/myDatabase/
                                    

Output:

2024-01-01T10:00:00.000+0000 done dumping myDatabase
2024-01-01T10:00:05.000+0000 finished restoring

Key Backup Methods

📦

mongodump

Binary backup utility

mongodump --uri="mongodb://localhost"
📤

mongoexport

Export to JSON/CSV

mongoexport --db mydb --collection users
📸

Snapshots

Filesystem-level backups

db.fsyncLock()
// Take snapshot
db.fsyncUnlock()
☁️

Cloud Backups

Automated Atlas backups

# Configured in Atlas UI
# Automatic continuous backups

🔹 Using mongodump

mongodump creates binary backups of your MongoDB databases. It's the most common backup method for complete database copies.

# Backup entire MongoDB instance
mongodump --out /backup/full/

# Backup specific database
mongodump --db myDatabase --out /backup/mydb/

# Backup specific collection
mongodump --db myDatabase --collection users --out /backup/

# Backup with compression
mongodump --db myDatabase --gzip --out /backup/compressed/

# Backup remote database
mongodump --uri="mongodb://user:pass@host:27017/mydb" --out /backup/

Output:

2024-01-01T10:00:00.000+0000 writing myDatabase.users to /backup/myDatabase/users.bson
2024-01-01T10:00:02.000+0000 done dumping myDatabase.users (10000 documents)

🔹 Using mongorestore

mongorestore recovers data from mongodump backups. You can restore entire databases or specific collections as needed.

# Restore entire backup
mongorestore /backup/full/

# Restore specific database
mongorestore --db myDatabase /backup/myDatabase/

# Restore to different database name
mongorestore --db newDatabase /backup/myDatabase/

# Restore compressed backup
mongorestore --gzip /backup/compressed/

# Restore and drop existing collections
mongorestore --drop --db myDatabase /backup/myDatabase/

Output:

2024-01-01T10:05:00.000+0000 restoring myDatabase.users from /backup/myDatabase/users.bson
2024-01-01T10:05:03.000+0000 finished restoring myDatabase.users (10000 documents)

🔹 Export and Import Data

mongoexport and mongoimport work with JSON or CSV formats, useful for data migration and human-readable backups.

# Export collection to JSON
mongoexport --db myDatabase --collection users --out users.json

# Export to CSV with specific fields
mongoexport --db myDatabase --collection users \
  --type=csv --fields=name,email,age --out users.csv

# Import JSON data
mongoimport --db myDatabase --collection users --file users.json

# Import CSV with header row
mongoimport --db myDatabase --collection users \
  --type=csv --headerline --file users.csv

Output:

2024-01-01T10:10:00.000+0000 exported 10000 records
2024-01-01T10:10:05.000+0000 imported 10000 documents

🔹 Automated Backup Script

Create automated backup scripts to run regularly using cron jobs or task schedulers for consistent data protection.

#!/bin/bash
# backup-mongodb.sh

# Configuration
BACKUP_DIR="/backups/mongodb"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="myDatabase"

# Create backup directory
mkdir -p $BACKUP_DIR/$DATE

# Perform backup
mongodump --db $DB_NAME --out $BACKUP_DIR/$DATE --gzip

# Remove backups older than 7 days
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;

echo "Backup completed: $BACKUP_DIR/$DATE"

🔹 Point-in-Time Recovery

Restore your database to a specific moment using oplog replay, useful for recovering from accidental data changes.

# Backup with oplog for point-in-time recovery
mongodump --oplog --out /backup/pit/

# Restore to specific point in time
mongorestore --oplogReplay --oplogLimit 1640000000:1 /backup/pit/

# Restore with oplog
mongorestore --oplogReplay /backup/pit/

Output:

2024-01-01T10:15:00.000+0000 replaying oplog
2024-01-01T10:15:05.000+0000 applied 5000 oplog entries

🧠 Test Your Knowledge

Which tool creates binary backups of MongoDB databases?