+ This directory contains a standalone tool for backing up MongoDB databases from remote or local servers. It manages multiple environment configurations for easy switching between prod, uat, and other environments. +
+Quick Start
+ +First Run
+./db-dump.sh dump
+
+ The script will detect no environments and guide you through creating one. Answer the prompts with:
+-
+
- Environment name (required): e.g.,
prod,uat,staging
+ - MongoDB username (required): The admin user +
- MongoDB password (required): The admin password +
- MongoDB host (required): e.g.,
cluster0.mongodb.net
+ - MongoDB port (required): Usually
27017or10255
+ - Application name (required): Used in connection string and dump folder name +
Subsequent Runs
+./db-dump.sh dump
+
+ The script will show you a list of configured environments and let you choose which one to backup, or create a new environment.
+Commands
+# Perform a backup of a selected environment
+./db-dump.sh dump
+
+# List all configured environments
+./db-dump.sh list
+
+# Add a new environment
+./db-dump.sh add
+
+# Delete an environment
+./db-dump.sh delete
+
+# Show help
+./db-dump.sh help
+ How It Works
+-
+
- Environment Selection: On each run, you select from existing environments or create new ones +
- Credential Storage: Each environment's credentials are stored in
.env.<name>files
+ - MongoDB Connection: Connects using your credentials with MongoDB Atlas parameters (ssl, replicaSet, etc.) +
- Dump Creation: Uses
mongodumpto create a backup
+ - Timestamped Output: Dumps are organized as
./dumps/<appName>/<yyyymmdd_hhmm>/
+
Configuration Files
+ +Each environment is stored in a separate file:
+.env.prod # Production environment
+.env.uat # UAT environment
+.env.staging # Staging environment (if created)
+
+ Each file contains:
+MONGO_USERNAME=<username>
+MONGO_PASSWORD=<password>
+MONGO_HOST=<host>
+MONGO_PORT=<port>
+APP_NAME=<appName>
+ Directory Structure
+Dump Output
+ +Dumps are stored with the following structure:
+dumps/<appName>/<yyyymmdd_hhmi>/
+ admin/ # System databases
+ config/
+ myapp/ # Application databases
+ system.profile/
+
+ Each backup preserves the complete database structure and is ready to be restored using mongorestore.
Accessing Dumps
+ +To view or restore a dump:
+# List recent dumps
+ls -lh dumps/prod/
+
+# Restore a dump to local MongoDB
+mongorestore --uri "mongodb://localhost:27017" dumps/prod/20260414_1632/
+
+# Copy dump to another location
+cp -r dumps/prod/20260414_1632/ /backup/prod-backup-20260414/
+ Security
+-
+
- Configuration files have restricted permissions (600) +
- Credentials are stored locally in
.env.*files
+ - These files are git-ignored for security +
- Never commit
.env.*files to version control
+
Requirements
+-
+
- MongoDB Database Tools: Download from https://www.mongodb.com/try/download/database-tools
+
-
+
- Specifically requires
mongodumpcommand
+
+ - Specifically requires
- Bash shell +
- Network access to MongoDB server +
Installation of MongoDB Database Tools
+ +macOS
+brew tap mongodb/brew
+brew install mongodb-database-tools
+
+ Linux (Ubuntu/Debian)
+wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-ubuntu2004-x86_64-100.8.0.tgz
+tar -xzf mongodb-database-tools-ubuntu2004-x86_64-100.8.0.tgz
+sudo cp mongodb-database-tools-ubuntu2004-x86_64-100.8.0/bin/* /usr/local/bin/
+
+ Windows
+Download the MSI installer from https://www.mongodb.com/try/download/database-tools and run it.
+Troubleshooting
+ +mongodump not found
+# Check if MongoDB Database Tools is installed
+mongodump --version
+
+# If not installed, see "Installation" section above
+
+ Connection refused
+-
+
- Verify host and port are correct +
- Check network connectivity to MongoDB server +
- Ensure firewall allows access +
Authentication failed
+-
+
- Verify username and password +
- Check the user has admin permissions +
- Confirm the
authSource=adminparameter
+
Port already displaying in error
+The connection string is checked for errors. If you see connection errors, the script displays the exact MongoDB error message.
+Advanced Usage
+ +Manual mongodump command (for reference)
+ +The script constructs and runs this command automatically:
+mongodump --uri "mongodb://<username>:<password>@<host>:<port>/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<appName>@" -o ./dumps/<appName>/<yyyymmdd_hhmm>
+
+ Scheduling automated backups
+You can schedule regular backups using cron (Linux/macOS):
+# Add to crontab
+crontab -e
+
+# Daily dump at 3 AM for production environment
+0 3 * * * cd /path/to/dbdump && ./db-dump.sh dump << EOF
+1
+EOF
+ Support
+ +For MongoDB connection issues, refer to:
+-
+
- MongoDB Documentation: https://docs.mongodb.com/ +
- Connection String Reference: https://docs.mongodb.com/manual/reference/connection-string/ +
About
++ Author: Julien Gautier (jgautier.webdev@gmail.com) +
++ Organization: AdAstra +
++ Project: adastra_scripts +
++ This utility was created to enable efficient backup and versioning of MongoDB databases from remote or local servers for AdAstra projects. +
+