Pre-requisite
Assuming you have a mongodb database, and you want to take backup and restore it somewhere. Lets see how we can take backup and then restore it. And, you must have installed mongodb tools like
- mongodump
- mongorestore
- mongoimport
Commands to take Mongodb Backup
mongodump --db <source database name> --authenticationDatabase <source database name> -u <username of sourcedb> -p <password of source db>
It assumes that you have a running mongodb instance on port 27017.
Mongodb backup when database is on remote server or port is different on localhost
mongodump --host <hostname>:<port> --db <source database name> --authenticationDatabase <source database name> -u <username> -p <password>
where the dump is saved
By default, the backup dump is stored in a new directory named dump under current directory.
If you want to change the directory where the backup dump should be saved, use -o option
mongodump --db <source database name> -o <my directory path>
# for remote
mongodump --host <hostname>:<port> --db <source database name> --authenticationDatabase <source database name> -u <username> -p <password> -o <my directory path>
Backup selected collection
Above commands will take backup of complete database. If you want to take backup of only few collections, use following command:
mongodump --db <source database> --collection <name of collection>
Commands to restore mongodb database
mongorestore --db <target database name> -h <hostname>:<port> -u <username of target database> -p <password of target database> --authenticationDatabase <target database> <path of my database e.g. dump/mydb>
Restore only selected collection
Above command restore complete database. To restore only selected collection, use following:
mongorestore --db <target database> --collection <name of collection> <path of bson file under dump directory>
When you take backups, it creates binary json (bson) files in dump directory. Restore single collection command takes path of that bson file.
Restore from json files
Sometimes, you have have database dump in json format. Use following command:
mongoimport --db <source database> --collection <name of collection> --file <path of json file> --jsonArray
Restore from a csv file
mongoimport --db <database name> --collection <collection name> --type csv --headerline --file <path of csv file>
Restore without restoring index
There are lot of command options while restoring. For example you don’t want to restore indexes. Use following command:
mongorestore --db <target database> --noIndexRestore -h <host>:<port> -u <username> -p <password> --authenticationDatabase <database name> <path of dump database>