mongodump وmongorestore للنسخ الاحتياطي الكامل
سينشئ المتعلمون نسخة تفريغ كاملة بصيغة BSON لقاعدة بيانات، ثم يستعيدونها إلى عنقود مختلف باستخدام mongorestore.
mongodump وmongorestore للنسخ الاحتياطي الكامل درس مجاني في MongoDB Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في MongoDB Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة MongoDB Academy 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Why Use mongodump for Backups?
mongodump creates a binary BSON snapshot of a database or collection. Unlike mongoexport, which produces human-readable JSON, mongodump preserves all BSON type information exactly—ObjectIds, dates, decimals, binary data—with zero loss of fidelity. This makes it the correct tool for full database backups and migrations between MongoDB clusters, while mongoexport is better for selective data sharing.
Basic mongodump Usage
Running mongodump without arguments dumps all databases from the local MongoDB instance to a dump/ directory. Specify --uri, --db, and optionally --collection to narrow the scope. The output directory contains one subdirectory per database, each with .bson and .metadata.json files per collection.
# Dump the entire 'myapp' database
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--out /backups/myapp-2024-01-15
# Output structure:
# /backups/myapp-2024-01-15/
# myapp/
# users.bson
# users.metadata.json
# products.bson
# products.metadata.jsonDumping a Single Collection
Use --collection to dump only one collection from a database. This produces a single .bson file and its corresponding .metadata.json (which stores index definitions). Targeted collection dumps are useful for extracting a single collection for migration without backing up the entire database.
# Dump only the 'orders' collection
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--collection orders \
--out /backups/orders-backup
# Result: /backups/orders-backup/myapp/orders.bson
# /backups/orders-backup/myapp/orders.metadata.jsonCompressing the Dump
Large BSON dumps can consume significant disk space. Use --gzip to compress the output files as they are written. Each .bson file becomes a .bson.gz file, typically achieving 5-10x compression for typical document collections. Compression runs in the mongodump process and requires a matching --gzip flag in mongorestore to decompress.
# Create a compressed backup
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--gzip \
--out /backups/myapp-compressed-2024-01-15
# Files are now .bson.gz:
# /backups/myapp-compressed-2024-01-15/myapp/users.bson.gz
# /backups/myapp-compressed-2024-01-15/myapp/orders.bson.gzArchiving to a Single File
Use --archive to write the entire dump to a single archive file instead of a directory tree. You can also pipe it to gzip or aws s3 cp for one-step compressed backup and upload. This is the most compact and portable dump format for automating backups in CI or cron jobs.
# Archive + compress to a single file
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--archive=/backups/myapp-2024-01-15.archive.gz \
--gzip
# Or pipe to gzip
mongodump \
--uri 'mongodb://localhost:27017' \
--db myapp \
--archive | gzip > /backups/myapp-2024-01-15.gzBasic mongorestore Usage
mongorestore reads a directory or archive created by mongodump and inserts the documents into a target MongoDB cluster. It recreates collections with their index definitions (from the .metadata.json files) after the data is loaded. Specify the target cluster with --uri and the source directory or archive with --dir or --archive.
# Restore the full myapp database from a directory backup
mongorestore \
--uri 'mongodb://restore-target:27017' \
--dir /backups/myapp-2024-01-15
# Restore a gzip-compressed directory backup
mongorestore \
--uri 'mongodb://restore-target:27017' \
--gzip \
--dir /backups/myapp-compressed-2024-01-15Restoring to a Different Database Name
By default, mongorestore restores to the same database name as in the dump. Use --nsFrom and --nsTo (namespace from/to) to restore to a different database or collection name. This is essential when cloning production data into a staging database with a different name.
# Restore 'myapp' from dump into 'myapp_staging'
mongorestore \
--uri 'mongodb://localhost:27017' \
--nsFrom 'myapp.*' \
--nsTo 'myapp_staging.*' \
--dir /backups/myapp-2024-01-15The --drop Flag in Restore
Like mongoimport, mongorestore has a --drop flag that drops each collection before restoring it. Without --drop, mongorestore merges restored documents with any existing data—useful for partial restores. With --drop, you get a clean replacement of the collection, which is safer for full database restores to avoid stale data mixing with the backup.
# Drop and fully replace all collections during restore
mongorestore \
--uri 'mongodb://localhost:27017' \
--db myapp \
--drop \
--dir /backups/myapp-2024-01-15/myappParallel Restore With --numParallelCollections
For databases with many collections, mongorestore can restore multiple collections in parallel. Use --numParallelCollections (default: 4) to increase parallelism on servers with high I/O capacity. More parallel restores reduce total restore time but increase memory and CPU usage on both the client and server.
# Restore 8 collections in parallel
mongorestore \
--uri 'mongodb://restore-target:27017' \
--dir /backups/myapp-2024-01-15 \
--numParallelCollections 8Backup Automation With a Cron Job
Automate daily backups by running a shell script from a cron job. The script creates a timestamped backup directory, runs mongodump, compresses the result, and optionally uploads it to S3 or another remote storage. Always verify the exit code of mongodump to detect failed backups before the previous backup is overwritten.
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/myapp-$DATE"
mongodump \
--uri "$MONGO_URI" \
--db myapp \
--gzip \
--out "$BACKUP_DIR"
if [ $? -eq 0 ]; then
echo "Backup successful: $BACKUP_DIR"
else
echo "Backup FAILED!"
exit 1
fiPoint-in-Time Backups in Atlas
MongoDB Atlas provides automated Point-in-Time (PIT) backups that capture snapshots every 6 hours and allow restore to any second within the retention window (up to 35 days on M10+ tiers). Atlas backups do not use mongodump—they leverage filesystem-level snapshots at the storage engine level for zero-impact backups. For self-hosted MongoDB, mongodump is the primary backup mechanism, but it is a logical backup and cannot capture in-flight transactions.
Quick Check
Test your understanding of MongoDB & NoSQL Databases concepts from this lesson.
Lesson Recap
In this lesson you learned: mongodump creates binary BSON backups preserving all type information, mongorestore reads those dumps and recreates collections with their indexes, and --drop, --nsFrom/--nsTo, and --gzip are essential flags for production backup workflows. Next up we write Node.js seed scripts to programmatically load data into MongoDB during development.
الأسئلة الشائعة
هل درس «mongodump وmongorestore للنسخ الاحتياطي الكامل» مجاني؟
نعم — نص درس «mongodump وmongorestore للنسخ الاحتياطي الكامل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة MongoDB Academy، انتقل إلى CoddyKit PRO. تتضمن دورة MongoDB Academy 4 دروس في المجموع.
ماذا ستتعلم في «mongodump وmongorestore للنسخ الاحتياطي الكامل»؟
سينشئ المتعلمون نسخة تفريغ كاملة بصيغة BSON لقاعدة بيانات، ثم يستعيدونها إلى عنقود مختلف باستخدام mongorestore. تتمرن على MongoDB Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ MongoDB Academy؟
لا تُشترط خبرة سابقة. MongoDB Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «mongodump وmongorestore للنسخ الاحتياطي الكامل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس MongoDB Academy هذا؟
نعم. كل درس في MongoDB Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- mongoimport: تحميل ملفات JSON وCSV
- mongoexport: تصدير المجموعات إلى ملفات
- mongodump وmongorestore للنسخ الاحتياطي الكامل
- تهيئة البيانات باستخدام نصوص Node.js