It is crucial to have an effective and reliable method of data restoration when backing up data after the restore and backup process. Think about the different aspects:
- A properly-configured restoration technique that is properly configured allows users to successfully restore data back to its previous state.
- An ineffective restoration technique renders the entire backup process unproductive because it prevents users from accessing and then restoring the backup data.
Mongorestore is the mongorestore command is the corresponding command to the command mongodump. You can restore dumps (backups) generated using the mongodump command in an MongoDB instance by using mongorestore.
In this post, you’ll be taught how to use Mongorestore to recover backups of your database efficiently.
(This post is part our MongoDB Guide. Make use of the menu on the right to navigate. )
What is Mongorestore?
mongorestore is a basic tool that can be used for restoring backups. It is able to load information from any of the following sources:
- A dump file for databases generated by the mongodump command.
- The input that is standard to the mongod or mongos instances
Since MongoDB 4.4 and later, the mongorestore tool isn’t included in the default MongoDB Server installation program. Instead, it’s available in a separate package inside the MongoDB Database Tools package. This permits the application to be able to utilize a distinct date of release starting at 100.0.0.
The utility for mongorestore provides support to MongoDB version 4.4, 4.2, 4.0 and 3.6. It could also work with older versions of MongoDB however compatibility isn’t guaranteed.
Furthermore, mongorestore supports a multitude of operating systems and platforms including x86 and s390x and you can view the complete list of compatibility options within mongorestore’s document that is officially published.
Here’s a list of important things to be aware of the expected behavior for the Mongorestore utility.
- The mongorestore utility allows users to restore data into an existing database or to create an entirely new database. When restoring data to an existing database mongorestore does not use any insert functions and doesn’t make any updates. Due to this, any documents that already exist with a similar value for the field _id of the document that are in the backup won’t be altered by the process of restoration.
This can result in an error with a duplicate key in this restoration procedure, which is illustrated in this article:
- Since mongodump is not able to backup indexes, mongorestore will create indexes that were recorded by mongodump.
- The most effective method of recovering and backing up the database is to utilize the appropriate versions of both Mongodump as well as mongorestore. If a backup was created with a specific edition of the utility mongodump it is recommended to use the equivalent edition of the utility mongorestore in order to complete the restore process.
- Mongorestore cannot be able to restore “system.profile” collection data.
- The mongorestore application is compatible with FIPS ( Federal Information Processing Standard) connections for restoration operations.
- When you restore data to an MongoDB instance that is controlled by access You must know the following situations:
- If the restored data set does not contain”system.profile” in it “system.profile” collection and you use the mongorestore command with the option -oplogReply option The “restore” role will provide the necessary permissions for carrying restore operations.
- If you are restoring backups that comprise those that include the “system.profile” collection, even although mongorestore will not restore the collection in question and will instead attempt to create a new “system.profile” collection. In this case you’ll need to utilize roles such as the “dbAdmin” and “dbAdminAnyDatabase” roles to grant the required permissions.
- To run the mongorestore script using the -oplogReply option the user has to create a new role that is user-defined with anyAction permissions in anyResource.
- Mongorestore isn’t a suitable utility as the backup process for backing up and restore sharded clusters using ongoing sharded transactions. This change was made by MongoDB 4.2. In the case of distributed clusters most recommended solution is MongoDB Cloud Manager or Ops Manager because they are able to keep the atomicity of transactions across clusters.
- The mongorestore command must be executed through the command shell on the system as it is a distinct database application.
Using MongoDB mongorestore
This section you’ll discover the fundamental use of the mongorestore application as a stand-alone MongoDB instance.
Basic mongorestore syntax
The most basic method of restoring an existing database is by using the mongorestore command, which specifies your backup location (dump directory) without options. This method is appropriate for databases that are located on localhost (127.0.0.1) that use the port number 27017. The restore procedure will create new databases and collections when required and also record the progress.Copy
In the previous example you can see the steps it is possible to restore successfully your “vehicles” database with all its documents and collections. It will create a brand new database named vehicles within the MongoDB instance, which contains all documents and collections of the backup. You can test your restoration by accessing this MongoDB server.Copy
use vehicles show collections db.vehicleinformation.find()
Restoring data in the remote MongoDB instance
To restore data from the remote MongoDB instance, you must to create the connection. The connection to a database could be established using either of these methods:
- The URI connection string
- The host option
- The port and host option
Connecting via this URI option:Copy
mongorestore with additional options --uri="mongodb http:/mongodb:/:" [restore directory/file]
Connecting via host:Copy
mongorestore with additional options host=":" [restore directory/file]
Connecting via ports and hosts:Copy
mongorestore with additional options host="" --port= [restore directory/file]
The below example demonstrates how to restore backups of your remote MongoDB instance. The verbose option provides users with an in-depth description of the process for restoration.Copy
mongorestore --verbose --host="10.10.10.59" --port=27017 ./dump/
Restoring an encrypted MongoDB instance
If you want to connect with an access controlled MongoDB instance will need to supply:
- Authentication database options
Furthermore, mongorestore allows key-based authentication. It is crucial to make sure that the user who has been authenticated has the appropriate rights and permissions to carry out this restoration procedure.
mongorestore [additional options] --authenticationDatabase=-u=-p= [restore directory/file]
The restoration command below shows the steps to make a connection to the remote MongoDB server by using your username as well as password used for authentication.Copy
mongorestore --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/
Selecting Collections and Databases
By using the -nsInclude parameter, users can indicate which collection or database is required to be restored. If you choose to include the option -nsInclude it is possible to use the namespace pattern (Ex: “vehicles. *”, “vehicles.vehicleInformation”) to define which database or collection should be included.
To define multiple namespaces, you can execute the -nsInclude command multiple times within a single command. The -nsInclude command can also support wildcards that can be included in the specified namespace.
The options -db or -collection are no longer supported and result in the error below.
To remove a database or collection using the -nsExclude command.
When selecting a database or collection:Copy
mongorestore with additional options --nsInclude= ($.$) [restore directory/file]
Excluding a Database/CollectionCopy
mongorestore with additional options --nsExclude= ($.$) [restore directory/file]
In the next instance, you’ll learn how to restore the entire “persons” database. It is possible to include the entire database by using”persons,” or the “persons” namespace with the an asterisk in a wild card pattern. This will allow you to restore all information in the database.Copy
mongorestore --nsInclude=persons. * --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./dump/
Restore information to an Archive File
The mongorestore utility can restore using an archive file. The -archive option is used to choose the archive file along with the -nsInclude or -nsExclude options are available together with an archive choice.Copy
mongorestore (additional options) archive=
The following example shows the process of defining an archive file to restore data. The -nsInclude feature is used to define the collection to be transferred to the database using an archived file.Copy
mongorestore -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive
Restoring information from an Compressed File
The Mongodump utility makes use of the option -gzip to compress particular JSON as well as BSON files. The backups compressed can be used to restore databases. The compressed backup file can be used to filter the database by using the -nsInclude or -nsExclude options.Copy
mongorestore --gzip [additional choices] [restore directory/file[restore directory/file
You can restore the compressed MongoDB backup by following the commands. The backup that is compressed is stored within the “backupzip” directory.Copy
mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" ./backupzip/
The same procedure could be applied to archive files that are compressed. This example demonstrates how to retrieve information from an archive file that has been compressed.Copy
mongorestore --gzip -v --nsInclude=vehicles.vehicleinformation --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --archive=db.archive
Restoring information from Standard Input
The mongorestore command lets users to access data from standard inputs and then use the data for restoration. It is possible to read the data using the -archive option with no filename.Copy
mongodump [additional choices] --archive | mongorestore [additional choices--archive
This example shows how to create a backup of an secure MongoDB database by using mongodump and then pass it as an input standard to the mongorestore command so that it can be restored on an unsecure distant MongoDB instance.Copy
mongodump --host=10.10.10.59 --port=27017 --authenticationDatabase="admin" -u="barryadmin" -p="testpassword" --db=vehicles --archive | mongorestore --host=10.10.10.58 --port=27018 --archive
mongo --host=10.10.10.58 --port=27018 --quiet --eval 'printjson(db.adminCommand( ))'
mongorestore and mongodump
This tutorial provides an in-depth understanding of the MongoDB mongorestore tool and how it can be utilized to restore backups created using mongodump. The Mongorestore utility provides a quick and efficient method to restore backups of databases.
Combining mongodump and mongorestore can provide small-scale administrators of databases with a complete backup plan.